20190710双人开黑CF模拟赛
Codeforces Round #571 (Div. 2)
日常被tanao_大佬带飞,我AC了A和C(B题没了。。。否则tanao_大佬肯定把我吊打)
A. Vus the Cossack and a Contest
Vus the Cossack holds a programming competition, in which \(n\) people participate. He decided to award them all with pens and notebooks. It is known that Vus has exactly \(m\) pens and \(k\) notebooks.
Determine whether the Cossack can reward all participants, giving each of them at least one pen and at least one notebook.
Input
The first line contains three integers \(n\), \(m\), and \(k\) (1≤n,m,k≤100) — the number of participants, the number of pens, and the number of notebooks respectively.
Output
Print "Yes" if it possible to reward all the participants. Otherwise, print "No".
You can print each letter in any case (upper or lower).
Div.2的A标准打卡题难度,翻译:
给你整数n、m、k,判断m和k是否都大于等于n
这好像都比noip2018pj的t1都要简单。。。
直接if完事
Code:
#include <cstdio>
#include <cctype>
#define reg register
using namespace std;
template <class t> inline void rd(t &s)
{
s=0;
reg char c=getchar();
while(!isdigit(c))
c=getchar();
while(isdigit(c))
s=(s<<3)+(s<<1)+(c^48),c=getchar();
return;
}
signed main(void)
{
int n,m,k;
rd(n);rd(m);rd(k);
if(m>=n&&k>=n)
puts("Yes");
else
puts("No");
return 0;
}
C. Vus the Cossack and Strings
Vus the Cossack has two binary strings, that is, strings that consist only of "0" and "1". We call these strings a and b. It is known that |b|≤|a|, that is, the length of b is at most the length of a.
The Cossack considers every substring of length |b| in string a. Let's call this substring c. He matches the corresponding characters in b and c, after which he counts the number of positions where the two strings are different. We call this function f(b,c).
For example, let b=00110, and c=11000. In these strings, the first, second, third and fourth positions are different.
Vus the Cossack counts the number of such substrings c such that f(b,c) is even.
For example, let a=01100010 and b=00110. aa has four substrings of the length |b|: 01100, 11000, 10001, 00010.
- f(00110,01100)=2;
- f(00110,11000)=4;
- f(00110,10001)=4;
- f(00110,00010)=1.
Since in three substrings, f(b,c)f(b,c) is even, the answer is 33.
Vus can not find the answer for big strings. That is why he is asking you to help him.
Input
The first line contains a binary string a \((1≤|a|≤10^6)\) — the first string.
The second line contains a binary string b \((1≤|b|≤|a|)\) — the second string.
Output
Print one number — the answer.
input1
01100010
00110
output1
3
input2
1010111110
0110
output2
4
人话:
给你两个个二进制串a和b,b的长度小于等于a,将a的每个长度位b长度的连续子序列拿出来和a进行f操作,f操作就是比对两个串有几位不同,如果这个数是偶数,那么答案加一
样例1的解释在题面里有了
那么直接开始分析吧:
这个f操作一看就知道是异或然后统计1的个数,但是直接做或者bitset都会超时,那么
这题看到偶数就应该想到奇偶性,那么奇偶性与 和以及异或和 是有关的,于是。。。
把a串的前缀和求出来,再把b串的异或和求出来
然后看看,我们只要得知f结果的奇偶性就好了,并不要得知他是多少
所以,a的前缀和可以帮我们知道a的一段区间内和的奇偶性,我们也可以得知这段区间内1的出现次数的奇偶性
那么,b的异或和可以帮助我们知道b串中1的出现次数的奇偶性
那么,如果这两个奇偶性相同时,那么我们就得知他们异或后的结果内1的个数是偶数个
\(e.g.\):我们定义g函数为区间内1出现次数的奇偶性(1奇,0偶)
\(g(10101)=1\), \(g(10010)=0\), 所以它们异或后的结果1的个数一定为奇数个
检验:\(10101 xor 10010 = 00111\)
那么代码就有了,Code:
#include <cstdio>
#include <cctype>
#include <cstring>
#include <bitset>
#define reg register
using namespace std;
const int MaxN=1000001;
template <class t> inline void rd(t &s)
{
s=0;
reg char c=getchar();
while(!isdigit(c))
c=getchar();
while(isdigit(c))
s=(s<<3)+(s<<1)+(c^48),c=getchar();
return;
}
char ia[MaxN],ib[MaxN];
int a[MaxN],b[MaxN],f[MaxN],g[MaxN];
int lena,lenb;
signed main(void)
{
scanf("%s%s",ia+1,ib+1);
lena=strlen(ia+1),lenb=strlen(ib+1);
// printf("%d %d",lena,lenb);
for(int i=1;i<=lena;++i)
{
a[i]=(ia[i]=='1')?1:0;
f[i]=f[i-1]+a[i];
}
for(int i=1;i<=lenb;++i)
{
b[i]=(ib[i]=='1')?1:0;
g[i]=g[i-1]^b[i];
}
reg int ans=0,k,u;
for(int i=lenb;i<=lena;++i)
{
u=i-lenb+1;
k=(f[i]-f[u-1])&1;
k=!k;
ans+=k^g[lenb];
}
printf("%d",ans);
return 0;
}
D. Vus the Cossack and Numbers
关于D题,其实是我先开题的,结果我觉得C题可做,巨佬tanao_觉得D题可做,就换题了,我打了一份D的代码,结果马上被我叉了。。。这里不贴出来了,这里贴一下tanao_巨佬的代码:
#include<iostream>
#include<cstdio>
using namespace std;
long long read()
{
long long x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
x=x*10+ch-'0',ch=getchar();
while(ch<'0'||ch>'9')
ch=getchar();
while(ch>='0'&&ch<='9')
x=x*10+ch-'0',ch=getchar();
return x*f;
}
long long c(long long x)
{
if(x%100000==0)
return x;
if(x<0)
return x-x%100000-100000;
return x-x%100000;
}
int main()
{
int n;
cin>>n;
long long sum=0;
for(int i=1;i<=n;++i)
{
long long x=read();
if(c(sum)+c(x)==c(sum+x))
cout<<c(x)/100000<<" ";
else
cout<<c(x)/100000+1<<" ";
sum+=x;
}
return 0;
}
我大概看了一下巨佬的代码,首先把浮点数乘以100000防止卡精度,然后?????,我写了主体70多行就被巨佬20多行解决了?
不过思路差不多,开一个sum用来记录过去剩下的东西,如果和现在的加起来刚好能控制在0.5内,那么就直接取整,否则加1是吧。。。
各位大佬还是看代码理解一下...
果然还是我太菜了awa
20190710双人开黑CF模拟赛的更多相关文章
- 20190708三人开黑CF模拟赛
7月8号晚上8点和两位巨佬开了一场虚拟cf: [Helvetic Coding Contest 2018 online mirror (teams allowed, unrated)] 我这么蔡,只A ...
- 20190728三人开黑517codingACM模拟赛
三人组队开黑ACM膜你赛 果然我最蔡 我就写了ACF所以就写这些吧awa Problem A 人话:给你一个w×h的矩形蛋糕,然后告诉你两个蜡烛的坐标,两个蜡烛都在网格点上且不在蛋糕边缘,问如何切一刀 ...
- 2014-11-2 NOIP模拟赛1
Noip2009 团结模拟赛如题目理解困难,请自行阅读或参考样例.内存限制均为 256MB,时间限制均为 1s.出题人不会 故意 在题目中设置陷阱,但请自己注意程序的正确性.IO 文件名(.in/.o ...
- 2014-10-31 NOIP模拟赛
10.30 NOIp 模拟赛 时间 空间 测试点 评测方式 挖掘机(dig.*) 1s 256M 10 传统 黑红树(brtree.*) 2s 256M 10 传统 藏宝图(treas. ...
- [NOIP2018模拟赛10.23]发呆报告
闲扯 考场看了眼题目感觉很难,一个小时敲完了所有暴力...嗯然后就在那里发呆什么事也没做 T3考场上把数据结构想了个遍都不会完成1操作,现在看这种思路其实之前也接触过... 比较玄学的一件事情就是T1 ...
- ZROI 19.08.07模拟赛
传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. "正睿从来没有保证,模拟赛的题目必须原创." "文案不是我写的,有问题找喵老师去."--蔡老师 ...
- 冲刺$\mathfrak{CSP-S}$集训模拟赛总结
开坑.手懒并不想继续一场考试一篇文. 既没必要也没时间侧边栏的最新随笔题解反思相间也丑 而且最近越来越懒了竟然都不写题解了……开坑也是为了督促自己写题解. 并不想长篇大论.简要题解也得写啊QAQ. 目 ...
- NOIP模拟赛 6.29
2017-6-29 NOIP模拟赛 Problem 1 机器人(robot.cpp/c/pas) [题目描述] 早苗入手了最新的Gundam模型.最新款自然有着与以往不同的功能,那就是它能够自动行走, ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
随机推荐
- 【题解】 P2763 试题库问题(网络流)
P2763 试题库问题 考虑一个试题要被加入进答案的集合有什么条件? 是某种类型 只算作一次 就这两种且的限制,所以我们用串联的方式连接"类型点"和"作用点". ...
- 动态规划之用最少的字符操作将字符串A转换为字符串B
1.试用动态规划算法实现下列问题:设A和B是两个字符串.我们要用最少的字符操作,将字符串A转换为字符串B,这里所说的字符操作包括: (1)删除一个字符. (2)插入一个字符. (3)将一个字符改为另一 ...
- linux installer os的驱动更新
installer os的驱动更新 linux系统可以简单的分为installer OS与运行时的OS,安装阶段识别不到硬件设备大概率因为installers OS版本较低,没有驱动来识别新的硬件,可 ...
- linux下安装cmake方法(1)---下载压缩包
OpenCV 2.2以后的版本需要使用Cmake生成makefile文件,因此需要先安装cmake:还有其它一些软件都需要先安装cmake 1.在linux环境下打开网页浏览器,输入网址:http:/ ...
- FTP服务器虚拟用户配置
FTP服务配置问题及解决方案 使用被动模式,设置云主机IP为被动模式数据传输地址:在配置文件内添加 pasv_enable=YES pasv_promiscuous=YES pasv_address= ...
- [转载] Windows系统批处理延迟方法
小贴士:方法四 亲测有效,因为当时对于精确度要求不是很高,所以没有具体测试它的精确度.其他方法没有测过,用到的时候再测吧! 批处理延时启动的几个方法 方法一:ping 缺点:时间精度为1秒,不够精确 ...
- P2756 飞行员配对方案问题 二分图匹配 匈牙利算法
题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1名是外 ...
- Mixing Milk 混合牛奶 USACO 贪心
1009: 1.3.1 Mixing Milk 混合牛奶 时间限制: 1 Sec 内存限制: 128 MB提交: 9 解决: 9[提交] [状态] [讨论版] [命题人:外部导入] 题目描述 1. ...
- Webpack实战(一):Webpack打包工具安装及参数配置
为什么要模块化 javascript跟其他开发语言有很多的区别,其中一个就是没有模块化概念,如果一个项目中有多个js文件,我们只能通过script标签引入的方式,把一个个js文件插入到页面,这种做法会 ...
- playbooks框架部署远程主机
进入到ansible和python环境 进入python3.6虚拟环境 #su - deploy #source .py3-a2.5-env/bin/activate 加载ansible 2.5版本 ...