【做题笔记】P6014 [CSGRound3]斗牛
仔细读题:另外两张牌和的个位数即为你所获得的点数。对于Subtask 1,枚举即可。50 分。
考虑:取 \(n-2\) 张牌和取答案的 \(2\) 张牌本质是一样的。因为若取符合条件的 \(n-2\) 张牌的和 \(sum\ \text{mod}\ 10\)必然为 0 。所以双重循环枚举所有的牌两两相加,把它们模 10 的余数与总和的余数对比,相等则输出。注意到若总和模 10 为 0 ,则直接输出 10。时间复杂度 \(O(n^2)\) ,80 分
#include <iostream>
#include <cstdio>
//#include <algorithm>
using namespace std;
int n,a[1000001],sum;
bool flag=false;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
sum+=a[i];
}
sum%=10;
if(sum==0){
printf("%d\n",10);
return 0;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if((i!=j)&&((a[i]+a[j])%10==sum)){
printf("%d\n",(a[i]+a[j])%10);
return 0;
}
printf("%d\n",0);
return 0;
}
- 注意到一个性质:由于最后组成答案的只有两个数,且卡牌数值范围为 \(1\) ~ \(10\) ,也就说明答案只有可能是两个相同的数或不同的数。于是自然产生一种思路:用类似计数排序的方法,设一个数组 \(t\) ,记录每个数出现的次数。最后枚举每个数,若相同,则判断这个数出现的次数是否大于等于 2 ,若不同,则看这两个数是否都出现过。时间复杂度 \(O(n)\) ,可通过所有测试点。
#include <iostream>
#include <cstdio>
//#include <algorithm>
using namespace std;
int n,a[1000001],sum,t[100000001];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
sum+=a[i];
t[a[i]]++;
}
sum%=10;
if(sum==0){
printf("%d\n",10);
return 0;
}
for(int i=1;i<=10;i++){
for(int j=1;j<=10;j++){
if((i==j)&&(t[i]>=2)&&((i+j)%10==sum)){
printf("%d\n",(i+j)%10);
return 0;
}
else
if((i!=j)&&(t[i]&&t[j])&&((i+j)%10==sum)){ //注意这里首先要判断是否相等。为什么?
printf("%d\n",(i+j)%10);
return 0;
}
}
}
printf("%d\n",0);
return 0;
}
【做题笔记】P6014 [CSGRound3]斗牛的更多相关文章
- C语言程序设计做题笔记之C语言基础知识(下)
C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...
- C语言程序设计做题笔记之C语言基础知识(上)
C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行事.并且C是相当灵活的,用于执行计算机程序能完成的几乎 ...
- SDOI2017 R1做题笔记
SDOI2017 R1做题笔记 梦想还是要有的,万一哪天就做完了呢? 也就是说现在还没做完. 哈哈哈我竟然做完了-2019.3.29 20:30
- SDOI2014 R1做题笔记
SDOI2014 R1做题笔记 经过很久很久的时间,shzr又做完了SDOI2014一轮的题目. 但是我不想写做题笔记(
- SDOI2016 R1做题笔记
SDOI2016 R1做题笔记 经过很久很久的时间,shzr终于做完了SDOI2016一轮的题目. 其实没想到竟然是2016年的题目先做完,因为14年的六个题很早就做了四个了,但是后两个有点开不动.. ...
- LCT做题笔记
最近几天打算认真复习LCT,毕竟以前只会板子.正好也可以学点新的用法,这里就用来写做题笔记吧.这个分类比较混乱,主要看感觉,不一定对: 维护森林的LCT 就是最普通,最一般那种的LCT啦.这类题目往往 ...
- java做题笔记
java做题笔记 1. 初始化过程是这样的: 1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化: 2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序 ...
- SAM 做题笔记(各种技巧,持续更新,SA)
SAM 感性瞎扯. 这里是 SAM 做题笔记. 本来是在一篇随笔里面,然后 Latex 太多加载不过来就分成了两篇. 标 * 的是推荐一做的题目. trick 是我总结的技巧. I. P3804 [模 ...
- PKUWC/SC 做题笔记
去年不知道干了些啥,什么省选/营题都没做. 现在赶应该还来得及(?) 「PKUWC2018」Minimax Done 2019.12.04 9:38:55 线段树合并船新玩法??? \(O(n^2)\ ...
- POI做题笔记
POI2011 Conspiracy (2-SAT) Description \(n\leq 5000\) Solution 发现可拆点然后使用2-SAT做,由于特殊的关系,可以证明每次只能交换两个集 ...
随机推荐
- 【转】Java Future 怎么用 才算是真正异步
接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果. Callable接口类似于Runnable,从名字就可以看出来了,但 ...
- Python并发学习
#Python并发 多任务 多进程 多线程 线程同步 #多任务处理 多任务处理:使得计算机可以同时处理多个任务 听歌的同时QQ聊天.办公.下载文件 实现方式:多进程.多线程 #程序和进程 程序:是一个 ...
- rest_framework:版本控制
一.作用: 用于版本的控制,区分不同的功能,对于一些新增功能的添加更新就会在新的版本中体现,有点类似于,新版本就是软件发布的新版本,和老版本相比新增或者修改了一些功能 二.内置的版本控制类: from ...
- Qt程序异常结束,The process was ended forcefully....
我用的Qt版本是5.9.6,运行了好几次程序都妥妥当当的,然后就被安排上了...出现如下错误: 也是刚入手Qt不久,出现这样的错误我以为是代码的问题,然后撤销一些代码发现还是这样的错,索性就关闭Qt然 ...
- 巨杉Tech | 使用 SequoiaDB 分布式数据库搭建JIRA流程管理系统
介绍 JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域.很多企业与互联网公司都在使用Jira作为内部 ...
- 素问 - IC移仓换月
摘自<小韭的学习圈> Q 股指期货的合约什么时候换月比较合适? 今天是1908股指期货的交割日,我是这么操作的:我在10:30分把IH1908以2827元卖出,然后马上以2805.8元买入 ...
- Redis08——Redis五大数据类型 hash
hash Redis中的hash是一个键值对集合 同时又是一个string类型的field和value的映射表,hash特别适合用于存储对象 类似于java里面的Map<String,Objec ...
- 第三十四篇 玩转数据结构——哈希表(HashTable)
1.. 整型哈希函数的设计 小范围正整数直接使用 小范围负整数整体进行偏移 大整数,通常做法是"模一个素数" 2.. 浮点型哈希函数的设计 转成整型进行处理 3.. 字符串 ...
- 路飞-Redis
redis数据库 # 1.安装redis与可视化操作工具 # 2.在服务中管理redis服务器的开启关闭 # 3.命令行简单使用redis: -- redis-cli # 启动客户端 -- set k ...
- Goahead WebSever 总结
编译成功后用http://127.0.0.1可以访问网站,若端口号不是默认的80,者访问时加“:端口”,如: http://127.0.0.1:8888 1.websHomePageHandler函数 ...