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

A. Card Exchange(思维

Problem - A - Codeforces

题目大意

        给定n张牌,每次选k张相同的牌,把他们变成k-1张任意的牌,求最后手中最少能有几张牌。

思路

        直接判断这n张牌当中有没有k张一样的牌,如果有就一定能变成最后只剩k-1张牌。如果没有k张一模一样的牌,说明一次变化都做不了,最后只能有n张牌。

#include<bits/stdc++.h>
using ll=long long;
const int N=1e6+10;
const int mod=998244353;
int a[N];
std::map<int,int> mp;
void solve()
{mp.clear();int n,k;std::cin>>n>>k;for(int i=1;i<=n;i++){std::cin>>a[i];mp[a[i]]++;}int flag=0;for(auto i:mp){if(i.second>=k){flag=1;break;}}if(flag) std::cout<<k-1<<'\n';else std::cout<<n<<'\n';
}
signed main()
{std::ios::sync_with_stdio(0);std::cin.tie(0);int t=1;std::cin>>t;while(t--){solve();}return 0;
}

B. Rectangle Filling(思维

Problem - B - Codeforces 

题目大意

        给定一个n*m的矩形,每次可以选择颜色相同的两个点(x1,y1),(x2,y2)把这俩点之间的所有点都染成这个颜色。试判断输入的矩形能否被染成一种颜色。

思路

        这题我想了好久。。。先想着暴力100次找到最靠右下的与(1,1)颜色相同的点,然后染色,但是不止左上右下可以染色,左下右上也能染色,总之都是错的思路。。。

        然后一直感觉四个顶点是最特殊的点,因为顶点后面就没点了,如果顶点能同色就稳了,如果不能就no。其实想到了四个顶点后面就好想了,先判断左上右下和左下右上这两种情况的点的颜色是否相同。相同直接输出yes啊,不相同再分情况讨论。左上和右上相同,那么只要最后一行中有与左上颜色相同的点即可。以此类推,四种情况。

#include<bits/stdc++.h>
using ll=long long;
const int N=500+10;
const int mod=998244353;
int a[N];
char g[N][N];
std::map<char,int> mp;
void solve()
{int n,m;std::cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){std::cin>>g[i][j];}}if(g[1][1]==g[n][m]||g[1][m]==g[n][1]){std::cout<<"YES"<<'\n';return ;}if(n==1||m==1){std::cout<<"NO"<<'\n';return ;}//判断四个点if(g[1][1]==g[1][m])//第一行相等{for(int i=1;i<=m;i++){if(g[n][i]==g[1][1]){std::cout<<"YES"<<'\n';return ;}}}if(g[n][1]==g[n][m]){//最后一行相等for(int i=1;i<=m;i++){if(g[n][1]==g[1][i]){std::cout<<"YES"<<'\n';return ;}}}if(g[1][m]==g[n][m])//最后一列相等{for(int i=1;i<=n;i++){if(g[i][1]==g[1][m]){std::cout<<"YES"<<'\n';return ;}}}if(g[1][1]==g[n][1]){//第一列相等for(int i=1;i<=n;i++){if(g[i][m]==g[1][1]){std::cout<<"YES"<<'\n';return ;}}}std::cout<<"NO"<<'\n';
}
signed main()
{std::ios::sync_with_stdio(0);std::cin.tie(0);int t=1;std::cin>>t;while(t--){solve();}return 0;
}

C. Everything Nim(思维

Problem - C - Codeforces 

题目大意: 

        a和b玩游戏,有n堆石子,每次拿走每堆石子中的k个,最后一个拿不了的就输,如果都以最优策略玩游戏输出谁会赢。

思路

        当时一看这不是一眼博弈论最板子的题吗,我还在想cf怎么会有这么板的题。跑了遍样例发现果然不是我想的那样,最后去群里问发现是读错题了。。。每堆都要拿走k个啊。。。

        对石子堆去重排序,如果有1234这种连续数的情况,则alice和bob每次都只能取1,如果全部数是12345-》1234(Alice拿完)-》123(bob拿完)-》12(Alice拿完)-》1(bob拿完),

如果是奇数则alice赢,偶数bob赢。

        那对于12355这种情况-》1244(Alice拿完)-》133(bob拿完)-》22(alice)拿完-》bob赢,前面是奇数个则轮到bob时能选择怎么操作,如果最后的数字相同bob直接拿完就赢了,如果不相同比如246,都拿一个,135则a就只能被迫拿一个了,24bob再拿一个,13alice又只能被迫拿一个,因此bob必赢。

#include<bits/stdc++.h>
using ll=long long;
const int N=2e5+10;
const int mod=998244353;
int a[N];void solve()
{int n;std::cin>>n;int k=0;std::map<int,int> mp;for(int i=1;i<=n;i++){int x;std::cin>>x;if(mp[x]) continue;a[++k]=x;mp[x]++;}std::sort(a+1,a+1+k);
//    for(int i=1;i<=k;i++)
//    {
//        std::cout<<a[i]<<" ";
//    }int cnt=0;for(int i=1;i<=k;i++){if(a[i]==a[i-1]+1) cnt++;//有多少个连续的12345else break;}if(cnt==k){if(k%2==1) std::cout<<"Alice"<<'\n';else std::cout<<"Bob"<<'\n';}else if(cnt%2==1){//123 33std::cout<<"Bob"<<'\n';}else std::cout<<"Alice"<<'\n';
}
signed main()
{std::ios::sync_with_stdio(0);std::cin.tie(0);int t=1;std::cin>>t;while(t--){solve();}return 0;
}

D. Missing Subsequence Sum(构造

Problem - D - Codeforces 

题目大意

        给定n和k,输出一个序列,对任意i∈[1,k)∪(k,N],这个序列中存在子序列的和为i

思路

#include<bits/stdc++.h>
using ll=long long;
const int N=1e6+10;
const int mod=998244353;
int f[N];void solve()
{int n,k;std::cin>>n>>k;std::vector<int> ans;int q=1;while(q<=N){ans.push_back(q);q*=2;}int s=0,v=0;for(int i=0;i<ans.size();i++){s+=ans[i];if(s>=k){v=ans[i];ans.erase(ans.begin()+i);break;}}ans.push_back(k-v);ans.push_back(k+1+v);ans.push_back(k+1);std::cout<<ans.size()<<'\n';for(auto i:ans){std::cout<<i<<" ";}std::cout<<'\n';
}
signed main()
{std::ios::sync_with_stdio(0);std::cin.tie(0);int t=1;std::cin>>t;while(t--){solve();}return 0;
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【java9】java9新特性之接口的私有方法

在Java 9中&#xff0c;接口可以包含私有方法&#xff08;包括静态私有方法和实例私有方法&#xff09;。这允许接口的设计者创建一些辅助方法&#xff0c;这些方法只能被接口中的其他方法所使用&#xff0c;而不能被实现该接口的类直接访问。 Java7 Java7及之前 &#xff0c…

软件项目管理的主要内容是什么?

目录 一、项目需求分析 二、项目计划制定 三、资源分配与调度 四、进度监控与控制 五、质量管理与保障 六、风险管理与应对 七、沟通协调与团队管理 八、项目收尾与总结 九、其他 一、项目需求分析 项目需求分析是软件项目管理的起始点&#xff0c;它涉及与客户的深入沟…

ubuntu22.04 修改内核源码教程

1. 确认当前内核版本 uname -a 2. 去ubuntu官网下载对应版本内核源码 6.5.0-28.29 : linux package : Ubuntu (launchpad.net) 3. 准备编译环境 sudo apt-get install libncurses5-dev libssl-dev build-essential openssl flex bison libelf-dev tar -xzvf linux_6.5.…

Spring Boot整合Redisson的两种方式

项目场景 Spring Boot整合Redisson的两种方式&#xff0c;方式一直接使用yml配置&#xff0c;方式二创建RedissonConfig配置类。 前言 redisson和redis区别&#xff1a; Redis是一个开源的内存数据库&#xff0c;支持多种数据类型&#xff0c;如字符串、哈希、列表、集合和有序…

Spring快速入门!(超详细)——工厂模式

GOF之工厂模式 设计模式&#xff1a;一种可以被重复利用的解决方案。GoF&#xff08;Gang of Four&#xff09;&#xff0c;中文名——四人组。《Design Patterns: Elements of Reusable Object-Oriented Software》&#xff08;即《设计模式》一书&#xff09;&#xff0c;19…

【网络安全】00后程序员,找 Bug 赚了 6,700,000元!他是怎么做到的?

1. 漏洞赏金计划&#xff08;Bug Bounty Programs&#xff09; 2. 安全咨询服务 3. 安全培训和教育 4. 写作和发表研究 5. 参与安全竞赛&#xff08;CTFs&#xff09; 6. 开发和销售安全工具 在网络安全领域&#xff0c;通过合法的方式利用漏洞赚钱主要涉及以下几种方法。…

【七十二】【算法分析与设计】64. 最小路径和,79. 单词搜索,1143. 最长公共子序列,利用记忆化递归填写dp表,可以很容易解决边界和填表顺序

递归填写dp表 利用递归函数填写dp表,可以很容易完成边界的处理,并且不用考虑填表的顺序. 绝大部分的动态规划可以用递归填表. 不用考虑填表顺序,只需要遍历一遍dfs即可. 64. 最小路径和 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路…

网络安全工程师必备的6个渗透测试工具

渗透测试是模拟黑客攻击&#xff0c;评估系统安全性的重要方法。 网络安全工程师需要掌握各种渗透测试工具&#xff0c;才能有效地发现和修复漏洞。 1. Nmap 功能: 强大的网络扫描器&#xff0c;可以扫描网络拓扑、识别主机和服务、发现开放端口和漏洞。 用途: 信息收集、漏洞…

Ubuntu编译安装MariaDB并进行初始化配置

Ubuntu编译安装MariaDB并进行初始化配置 1. 编译安装MariaDB2. 配置MariaDB3. Docker安装MariaDB 1. 编译安装MariaDB MariaDB官方安装文档&#xff1a;https://mariadb.com/kb/en/Build_Environment_Setup_for_Linux/    下载MariaDB源码&#xff1a;https://mariadb.org/ma…

Springboot + MySQL + html 实现文件的上传、存储、下载、删除

实现步骤及效果呈现如下&#xff1a; 1.创建数据库表&#xff1a; 表名&#xff1a;file_test 存储后的数据&#xff1a; 2.创建数据库表对应映射的实体类&#xff1a; import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.Table…

MySQL使用Sequence创建唯一主键

目录 第一章、快速了解Sequence1.1&#xff09;是什么&#xff1f;为什么使用1.2&#xff09;Sequence和自增主键的区别 第二章、在MySQL中使用Sequence2.1&#xff09;创建mysql_sequence表2.1.1&#xff09;创建表2.1.2&#xff09;插入数据 2.2&#xff09;创建函数2.2.1&am…

vue使用debugger调试代码

1.在vue.config.js中 在你的vue文件vue.config.js中找到如下configureWebpack位置&#xff0c;加入devtool:"source map"&#xff0c;重新启动项目debugger即可生效。

分享:9.3版本无缝导入AVEVA PDMS高版本工程12.0,12.1,E3D

9.3版本可以无缝导入AVEVA PDMS的工程。 UKP3d导入AVEVA PDMS工程的方法 http://47.94.91.234/forum.php?modviewthread&tid163583&fromuid6 (出处: 优易软件-工厂设计软件专家) &#xff08;从AVEVA PDMS导出时元件和等级的功能我们正做收尾工作&#xff0c;到时可以…

如何进行制造设备数据汇集,发挥数据的价值?

数字化转型正深刻推动制造企业实现远程监控、提高生产效率、降低生产成本、优化产品质量及明晰精细化方向。并且工业互联网的发展离不开工业数据的应用&#xff0c;而制造设备数据汇集正是应用的基础。但制造设备数据汇集存在以下难点及痛点&#xff1a; 1、安全把控难 关键的…

Mysql基础(一)DDL、DML、DQL、DCL 扫盲之DDL语句

一 扫盲 SQL语句根据其功能主要分为四类&#xff1a;DDL、DML、DQL、DCL说明&#xff1a; 本篇章只会粗略的分类,不会展开细节讲解 1、DDL&#xff08;Data Definition Language&#xff09;说明&#xff1a; 是一组用于定义和管理数据库结构的语句2、DML&#xff08;Data Ma…

RLDP协议原理与应用

RLDP概述 l RLDP全称是Rapid Link Detection Protocol&#xff08;快速链路检测协议&#xff09;&#xff0c;是锐捷网络自主开发的&#xff0c;用于快速检测以太网链路故障的链路协议。 l 一般的以太网链路检测机制都只是利用物理连接的状态&#xff0c;通过物理层的自动协…

张大哥笔记:我付钱了,我就是大爷?

很抱歉用这个当做标题&#xff0c;来给大家分享一些电商的故事&#xff01;大家好&#xff0c;我是张大哥&#xff0c;今天聊聊在电商路上遇到过的奇葩买家&#xff1f; 比如最近我在做PDD的时候&#xff0c;就会遇到很多莫名其妙的sha子&#xff0c;咱是知识份子&#xff0c;肯…

远程桌面连接不上个别服务器的问题分析与解决方案

在日常的IT运维工作中&#xff0c;远程桌面连接&#xff08;RDP&#xff0c;Remote Desktop Protocol&#xff09;是我们经常使用的工具之一&#xff0c;用于管理和维护远程服务器。然而&#xff0c;有时我们可能会遇到无法连接到个别服务器的情况。针对这一问题&#xff0c;我…

微信小程序4~6章总结

目录 第四章 页面组件总结 4.1 组件的定义及属性 4.2 容器视图组件 4.2.1 view 4.2.2 scroll-view 4.2.3 swiper 4.3 基础内容组件 4.3.1 icon ​编辑 4.3.2 text 4.3.3 progress ​编辑 4.4 表单组件 4.4.1 button 4.4.2 radio 4.4.3 checkbox 4.4.4 switch …

C语言--贪吃蛇小游戏

目录 一、Win32API介绍 1.1Win32API 1.2控制台程序 1.3控制台屏幕上的坐标COORD 1.4GetStdHandle 1.5GetConsoleCursorInfo 1.6 CONSOLE_CURSOR_INFO 1.7 SetConsoleCursorInfo 1.8SetConsoleCursorPosition 1.9GetAsyncKeyState 二、贪吃蛇游戏设计与分析 2.1地图 …