Codeforces Round 941 (Div. 2) (A~D)

1966A - Card Exchange 

        题意:

       思路:手玩一下发现当存在某个数字个数超过k个,那么就能一直操作下去。那么答案就是k-1.

void solve() 
{
	cin >> n >> m;
	map<int,int>mp;
	int maxx = 1;
	for(int i = 0 ; i < n ; i ++){
		int x;
		cin >> x;
		mp[x]++;
		maxx = max(maxx , mp[x]);
	}	
	if(n < m){
		cout << n <<endl; 
	}
	else{
		if(maxx >= m){
			cout  << m - 1 << endl;
		}
		else{
			cout << n <<endl;
		}
	}
}      

1966B - Rectangle Filling 

        题意:

        思路:若要使得所有方格同色,关键在于四个角上的颜色,若对角上的颜色一样就能直接将所有格子变为同色。因此本题变为能否使得对角上颜色相同,分类讨论

        

void solve() 
{
	cin >> n >> m;
	int mp[n + 5][m + 5];
	for(int i = 1 ; i <= n ;  i ++){
		string str;
		cin >> str;
		for(int j = 1 ; j <= m ; j ++){
			if(str[j - 1] == 'W'){
				mp[i][j] = 1;
			}
			else
				mp[i][j] = 0;
		}
	}	
	if(n == 1){
		if(mp[1][1] != mp[1][m]){
			cout << "NO\n";
		}
		else{
			cout<<"YES\n";
		}
		return;
	}
	if(m == 1){
		if(mp[1][1] == mp[n][1]){
			cout<<"YES\n";
		}
		else{
			cout<<"NO\n";
		}
		return;
	}
	if(mp[1][1] == mp[n][m] || mp[1][m] == mp[n][1]){
		cout<<"YES\n";
	}
	else{
		if(mp[1][1] == mp[1][m]){
			for(int i = 1 ; i <= m ; i ++){
				if(mp[1][i] != mp[1][1]){
					cout <<"YES\n";
					return;
				}
			}
			for(int i = 1 ; i <= m ; i ++){
				if(mp[n][i] != mp[n][1]){
					cout <<"YES\n";
					return;
				}
			}		
			cout <<"NO\n";
		}
		else{
			for(int i = 1 ; i <= n ; i ++){
				if(mp[i][1] != mp[1][1]){
					cout <<"YES\n";
					return;
				}
			}
			for(int i = 1 ; i <= n ; i ++){
				if(mp[i][m] != mp[n][m]){
					cout <<"YES\n";
					return;
				}
			}		
			cout <<"NO\n";			
		}
	}
}    

1966C - Everything Nim 

        题意:

        思路:为了方便考虑,我们令所有大小相同的堆为一个堆。接下来考虑终态:即只剩下一个堆。然后考虑若此时存在两个堆,那么对于Alice而言,其操作可以使得小的那个堆只剩下1,下一步Bob必须选1,然后Alice就胜利了。相反,若小的那个堆一开始就是1,那么Alice就输了。接下来推广到若干堆的情况:对于任意一方而言,若最小堆不是1,那么便可以控制胜利,于是我们只需要枚举到最小堆不是1的情况即可,然后看是谁在操作就是谁赢。

void solve() 
{
	cin >> n;
	set<int>st;
	for(int i = 1 ; i <= n ; i ++){
		int x;
		cin >> x;
		st.insert(x);
	}	
	vector<int>v;
	for(auto it : st)
		v.pb(it);
	vector<int>tag;
	int len = v.size();
	int cnt = 1;
	for(int i = 1 ; i < len ; i ++){
		if(v[i] - v[i - 1] == 1){
			cnt++;
		}
		else{
			tag.pb(cnt);
			cnt = 1;
		}
	}
	tag.pb(cnt);
/*	for(auto it : tag){
		cout << it << endl;
	}*/
	if(tag.size() == 1){
		if(v[0] == 1){
			if(tag[0] & 1){
				cout <<"Alice\n";
			}
			else{
				cout<<"Bob\n";
			}
		}
		else{
			cout<<"Alice\n";
		}
	}
	else{
		if(v[0] == 1 && tag[0] % 2 == 1){
			cout <<"Bob\n";
		}
		else
			cout<<"Alice\n";
	}
//	cout << endl;
}   

1966D - Missing Subsequence Sum 

        题意:

       思路:首先处理 < k 的部分,我们可以通过二进制的思想来构造整数,例如[1,99]可以用1,2,4,8,16,32,36来表示,其中36代表了99-63 .接下来考虑 > k 的部分,考虑到一个规律:[2,3,4,8,16....2^n]可以表示[2 ,2^{n+1}]的任何数,也就是说通过[m + 1 , 2 * m + 1 , 3 * m + 1 , 4 * m + 1 , 8 * m + 1 ...2^n * m + 1]再配合上前面的[1,m - 1]就能表示出任意>k的数了,这就是构造方案。

        

void solve() 
{
	//1 ~ 99 101 201 301
	//
	vector<int>ans;
	cin >> n >> m;
	int st = 1;
	int t = m;
	if(m == 1){
		ans.pb(2);
		ans.pb(3);
		ans.pb(4);
		int st = 8;
		for(int i = 3 ; i < 25 ; i ++){
			ans.pb(st);
			st *= 2;
		}
		cout << ans.size() << endl;
		for(auto it : ans){
			cout << it <<" ";
		}
		cout << endl;
		return ;
	}
	while(st < t){
		ans.pb(st);
		t -= st;
		st *= 2;
	}
	if(t - 1)
		ans.pb(t - 1);
	ans.pb(m + 1);
	ans.pb(m * 2 + 1);
	ans.pb(m * 3 + 1);
	ans.pb(m * 4 + 1);
	st = m * 8 + 1;
	int len = ans.size();

	for(int i = len + 1; i <= 25 ; i ++){
		ans.pb(st);
		st = st * 2 - 1;
	}
	cout << ans.size() << endl;
	for(auto it : ans){
		cout << it <<" ";
	}
	cout << endl;
}   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/586947.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手把手教数据结构与算法:优先级队列(银行排队问题)

队列 基本概念 队列的定义 队列&#xff08;Queue&#xff09;&#xff1a;队列是一种常见的数据结构&#xff0c;遵循先进先出&#xff08;First-In-First-Out, FIFO&#xff09;的原则。在队列中&#xff0c;元素按照进入队列的顺序排列。队列是一个线性的数据结构&#x…

深入解析yolov5,为什么算法都是基于yolov5做改进的?(一)

YOLOv5简介 YOLOv5是一种单阶段目标检测算法&#xff0c;它在YOLOv4的基础上引入了多项改进&#xff0c;显著提升了检测的速度和精度。YOLOv5的设计哲学是简洁高效&#xff0c;它有四个版本&#xff1a;YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x&#xff0c;分别对应不同的模型大小…

深度学习从入门到精通——词向量介绍及应用

词向量介绍 词向量&#xff08;Word embedding&#xff09;&#xff0c;即把词语表示成实数向量。“好”的词向量能体现词语直接的相近关系。词向量已经被证明可以提高NLP任务的性能&#xff0c;例如语法分析和情感分析。词向量与词嵌入技术的提出是为了解决onehot的缺陷。它把…

pytorch中创建maskrcnn模型

0.模型输入/输出参数参见 链接: pytorch的mask-rcnn的模型参数解释 核心代码 GeneralizedRCNN(这里以mask-rcnn来解释说明) # 通过输入图像获取fpn特征图,注意这里的backbone不是直接的resnet,而是fpn化后的 features self.backbone(images.tensors) # 由于是mask-rcnn,故而…

如何快速搭建nginx服务

华子目录 nginx简介概念特点nginx框架nginx关键工作机制 nginx正向代理功能nginx反向代理功能nginx反向代理的工作流程代理本质 nginx负载均衡部署nginx常用命令systemctl系列nginx自带命令 nginx配置文件主配置文件/etc/nginx/nginx.conf内容结构模块分析配置分析注意示例 ngi…

Android创建快捷方式到桌面

效果图 参考 https://blog.51cto.com/u_16175498/8811197https://blog.51cto.com/u_16175498/8811197 权限 <uses-permission android:name"com.android.launcher.permission.INSTALL_SHORTCUT" /> 实现 if (Build.VERSION.SDK_INT > Build.VERSION_C…

【已解决】Python Selenium chromedriver Pycharm闪退的问题

概要 根据不同的业务场景需求&#xff0c;有时我们难免会使用程序来打开浏览器进行访问。本文在pycharm中使用selenium打开chromedriver出现闪退问题&#xff0c;根据不断尝试&#xff0c;最终找到的问题根本是版本问题。 代码如下 # (1) 导入selenium from selenium import …

C++ stack、queue以及deque

1、stack和queue常用接口 严格来说栈和队列的实现是容器适配器 1、常用接口&#xff1a; 栈&#xff1a;top、push、pop、size、emptystack - C Reference (cplusplus.com) 队列&#xff1a;top、push、pop、swap、size、emptyqueue - C Reference (cplusplus.com) 2、deque&a…

Android手势识别面试问题及回答

问题 1: 如何在Android中实现基本的手势识别&#xff1f; 答案: 在Android中&#xff0c;可以通过使用GestureDetector类来实现基本的手势识别。首先需要创建一个GestureDetector的实例&#xff0c;并实现GestureDetector.OnGestureListener接口来响应各种手势事件&#xff0c…

ubuntu安装mysql时候修改root密码

前情&#xff1a; 使用set password for rootlocalhost ‘passwd’&#xff1b; set password for ‘root’‘localhost’‘passwd’&#xff1b; update user set passwordpassword(‘passwd’) where user‘root’ and host ‘localhost’; flush privileges; 以上方法均报…

定制开发AI智能名片商城小程序:玩转积分制度的成功案例

在数字化浪潮席卷而来的今天&#xff0c;企业营销方式不断创新&#xff0c;力求在众多竞争对手中脱颖而出。其中&#xff0c;积分制度以其直观、有效的特点&#xff0c;成为了众多企业的营销利器。某时尚品牌“潮流前线”便是其中的佼佼者。他们通过定制一款AI智能名片商城小程…

德国著名自动化公司Festo设计了一款仿生蜜蜂,仅重34g,支持多只蜜蜂编队飞行!...

德国著名的气动元件研发及自动化解决方案供应商Festo公司近日展示了一款仿生蜜蜂&#xff08;BionicBee&#xff09;&#xff0c;重量只有34g&#xff0c;却完全可以实现自主飞行&#xff0c;还支持多只相同的蜜蜂机器人编队飞行。 BionicBee 重约 34 克&#xff0c;长 22 厘米…

二叉树的前序,中序,后序遍历

二叉树可以分为左子树&#xff0c;右子树和根节点。同时左子树和右子树又可以分为新的左子树和右子树加上新的根节点&#xff0c;以此类推。 二叉树的前序&#xff0c;中序&#xff0c;后序遍历也叫前根遍历&#xff0c;中根遍历&#xff0c;后根遍历或者前序遍历&#xff0c;…

【Vue 2.x】学习vue之三路由

文章目录 Vue三路由第十章1、vue中的路由vue的应用分为a、多页面应用b、单页面应用 2、路由的基本应用1、基础2、使用3、加载 3、vue组件的分类1、普通组件2、路由组件 4、路由的嵌套5、路由传递Query参数1、拼接参数传递2、路由传递对象 6、简化路由1、命名路由 7、parms传递参…

控制台主机不能运行,切换终端实现RPG运行

鄙人转载&#xff0c;主要是移植过程中使用小熊猫C2.25.1 过程中&#xff0c;字符集不同&#xff0c;导致某些空格 从bilibili专栏粘贴导致出现符号不匹配&#xff0c;但是编辑器不能替换 用原来的devc 5.11 发现问题&#xff0c;读出额外的英文&#xff1f; 使用文件替换&…

C语言贪吃蛇项目

今天给大家带来一款简单的贪吃蛇游戏&#xff0c;一起随我来看看吧 游戏效果&#xff1a; 实现基本的功能&#xff1a; • 贪吃蛇地图绘制 • 蛇吃⻝物的功能&#xff1a;&#xff08;上、下、左、右⽅向键控制蛇的动作&#xff09; • 蛇撞墙死亡 • 蛇撞⾃⾝死亡 • 计算得分…

5.C++动态内存管理(超全)

目录 1 .C/C 内存分布 2. C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free 3. C内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作自定义类型 3.3 operator new函数 3.4 定位new表达式(placement-new) &#xff08;了解&#xff09; 4. 常…

【ARMv8/v9 系统寄存 3 -- system counter CNTPCT_EL0】

文章目录 ARMv8/v9 system countersystem counter读取函数实现 ARMv8/v9 system counter 所有使用Arm处理器的系统中都会包含一个标准化的通用定时器&#xff08;Generic Timer&#xff09;框架。这个通用定时器系统提供了一个系统计数器&#xff08;System Counter&#xff0…

ps科研常用操作,制作模式图 扣取想要的内容元素photoshop

复制想要copy的图片&#xff0c; 打开ps---file-----new &#xff0c;ctrolv粘贴图片进入ps 选择魔棒工具&#xff0c;点击想要去除的白色区域 然后&#xff0c;cotrol shift i&#xff0c;反选&#xff0c; ctrol shiftj复制&#xff0c;复制成功之后&#xff0c;一定要改…

UnityWebGL获取话筒实时数据

看了木子李大佬的数字人https://digital.lkz.fit/之后&#xff0c;我也想搞一个&#xff0c;于是开始研究起来&#xff0c;先从WebGL录音开始&#xff0c;一共试了三个插件&#xff0c;个个都有问题…… 1、UnityWebGLMicrophone 用起来没啥问题&#xff0c;但是只能录音&#…