2022年13届蓝桥杯省赛c/c++A组练习

文章涉及了二维图形的裁剪次数计算,两个博弈游戏策略(先手与后手),数的拆分问题,带权并查集的使用,以及求和问题的解决方案。展示了不同场景下的IT技术应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.裁纸刀

题解

通过分析可知,

边缘需裁剪4次,而后选择进行内部裁剪

内部裁剪有两种裁剪方式:

  • 先行后列:
    • 横向:【 行数-1 】次
    • 纵向:【(列数-1)*行数】次
    • 总:(行数-1)+(列数-1)*行数 = 行数 * 列数 - 1
  • 先列后行:
    • 纵向:【 列数-1 】次
    • 横向:【(行数-1)*列数】次
    • 总:(列数-1)+(行数-1)*列数 = 行数 * 列数 - 1

通过以上计算可知,对于 n 行 m 列的二维码,需要裁剪的次数为:4+n*m-1=n*m-3

题目共20行22列,则需裁剪 3+20*22 = 443 次

#include <iostream>
using namespace std;
int main()
{
  cout<<"443"<<endl;
  return 0;
}

2.灭鼠先锋

题解

#include <iostream>
using namespace std;
int main()
{
	/*
	* 对于只有一行的情况
	* 如果只有1个位置,先手输
	* 2个位置,后手输(先手1,后手1)
	* 3个位置,后手输(先手2,后手1)
	* 4个位置,共有以下几种情况(题目中第一行)
	* XOOO: (剩余3个空位)先手输 
	* XXOO: (剩余2个空位)先手输 
	* OXOO: 先手输
	* OXXO: 先手输
	* 
	* 由上可知,先开始下第二行的人将输掉比赛
	* 对于以下四种情况
	* XOOO: 后手通过使棋局变成 XOXO 可保证自己赢得比赛
	* XXOO: 后手赢 
	* OXOO: 后手赢(下一步:OXOX)
	* OXXO: 先手赢
	*/
	cout << "LLLV" << endl;
	return 0;
}

3.选数异或

题解 

#include <iostream>
#include<map>
#include<cmath>
using namespace std;
int main()
{
  
  int n, m, x;
  cin>>n>>m>>x;
  int Rightest[100005];    //在区间[1,i]中,使得[j,i]区间存在a^b=x的最大的j的取值
  map<int, int> LastPosition;    //某个值出现的最右的位置

  for(int i = 1; i <=n; i++)
  {
    int a;
    cin>>a;
    Rightest[i] = max(Rightest[i-1],LastPosition[a^x]);

    LastPosition[a] = i;
  }

  while(m--)
  {
    int 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖葱薄饼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值