1. 仔细读题:另外两张牌和的个位数即为你所获得的点数。对于Subtask 1,枚举即可。50 分。

  2. 考虑:取 \(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. 注意到一个性质:由于最后组成答案的只有两个数,且卡牌数值范围为 \(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]斗牛的更多相关文章

  1. C语言程序设计做题笔记之C语言基础知识(下)

    C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...

  2. C语言程序设计做题笔记之C语言基础知识(上)

    C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行事.并且C是相当灵活的,用于执行计算机程序能完成的几乎 ...

  3. SDOI2017 R1做题笔记

    SDOI2017 R1做题笔记 梦想还是要有的,万一哪天就做完了呢? 也就是说现在还没做完. 哈哈哈我竟然做完了-2019.3.29 20:30

  4. SDOI2014 R1做题笔记

    SDOI2014 R1做题笔记 经过很久很久的时间,shzr又做完了SDOI2014一轮的题目. 但是我不想写做题笔记(

  5. SDOI2016 R1做题笔记

    SDOI2016 R1做题笔记 经过很久很久的时间,shzr终于做完了SDOI2016一轮的题目. 其实没想到竟然是2016年的题目先做完,因为14年的六个题很早就做了四个了,但是后两个有点开不动.. ...

  6. LCT做题笔记

    最近几天打算认真复习LCT,毕竟以前只会板子.正好也可以学点新的用法,这里就用来写做题笔记吧.这个分类比较混乱,主要看感觉,不一定对: 维护森林的LCT 就是最普通,最一般那种的LCT啦.这类题目往往 ...

  7. java做题笔记

    java做题笔记 1. 初始化过程是这样的: 1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化: 2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序 ...

  8. SAM 做题笔记(各种技巧,持续更新,SA)

    SAM 感性瞎扯. 这里是 SAM 做题笔记. 本来是在一篇随笔里面,然后 Latex 太多加载不过来就分成了两篇. 标 * 的是推荐一做的题目. trick 是我总结的技巧. I. P3804 [模 ...

  9. PKUWC/SC 做题笔记

    去年不知道干了些啥,什么省选/营题都没做. 现在赶应该还来得及(?) 「PKUWC2018」Minimax Done 2019.12.04 9:38:55 线段树合并船新玩法??? \(O(n^2)\ ...

  10. POI做题笔记

    POI2011 Conspiracy (2-SAT) Description \(n\leq 5000\) Solution 发现可拆点然后使用2-SAT做,由于特殊的关系,可以证明每次只能交换两个集 ...

随机推荐

  1. POI题解整合

    我也不知道为啥我就想把POI的题全都放到一篇blog里写完. POI 2005 SAM-Toy Cars 贪心,每次选下次出现最晚的. POI 2006 KRA-The Disks 箱子位置单调,所以 ...

  2. java mail发送html格式的邮件

    // 获取系统属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("ma ...

  3. ubuntu Redis安装及配置

    1.安装 1.1 下载压缩包:wget http://download.redis.io/releases/redis-5.0.4.tar.gz1.2 解压:tar xzf redis-5.0.4.t ...

  4. mysql 数据库基础操作

    一 知识储备 MySQL数据库基本操作知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理系统:如mysql,是一个软件 数据库:oldboy_stu,相当于文件夹 表:student, ...

  5. python面试的100题(12)

    25.求出列表所有奇数并构造新列表 a=[1,2,3,4,5,6,7,8,9,10] res=[i for i in a if i%2==1] print(res) 结果为:[1, 3, 5, 7, ...

  6. 批量启动关闭MS SQL 2005服务BAT

    当装上了MSSQL2005后,内存的占用会变得很大.所以如果用一个批量处理来开启或关闭MSSQL2005所有的服务,那将会让我们的电脑更好使用.根据自己的经验,做出了下面两个批处理: 1.开启服务:( ...

  7. Go生成随机数

    生成随机数 概念 伪随机数,都是根据一定的算法公式算出来的. 所在包 math/rand 生成随机数的公式需要一个种子数,一般为整数.种子数相同会导致每次启动程序是生成随机数相同,为了避免重复每次生成 ...

  8. 其他-使用 ProcessExplorer 定位 win10 系统资源占用

    1. 概述 使用 ProcessExplorer 2. 环境 os win10 3. 背景 偶然在论坛上看到了一个工具 ProcessExplorer 作用是 定位当前桌面窗口 对应的 进程 我没有这 ...

  9. EF CodeFirst简介、默认约定、数据库初始化策略

    CodeFirst 工作流程 创建或修改领域类-->使用数据注解或者Fluent API来配置领域类-->使用自动数据库迁移技术或者基于代码的数据库迁移技术来创建数据库. CodeFirs ...

  10. C++——一维数组

    6.数组 指针与字符串 6.1 数组 数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量成为数组的元素.数组属于构造类型. 一维数组的声明: 类型说明符 数组名[常量表达式],若int ...