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 ...
随机推荐
- 015 Ceph的集群管理_1
一.理解Cluster Map cluster map由monitor维护,用于跟踪ceph集群状态 当client启动时,会连接monitor获取cluster map副本,发现所有其他组件的位置, ...
- Python for Data Analysis 学习心得(一) - numpy介绍
一.简介 Python for Data Analysis这本书的特点是将numpy和pandas这两个工具介绍的很详细,这两个工具是使用Python做数据分析非常重要的一环,numpy主要是做矩阵的 ...
- 从零开始学asyncio(中)
本篇文章主要是讲解asyncio模块的实现原理. 这个系列还有另外两篇文章: 从零开始学asyncio(上) 从零开始学asyncio(下) 一. asyncio模块简介 asyncio是python ...
- JWT实现授权认证
目录 一. JWT是什么 二. JWT标准规范 三. 核心代码简析 四. 登录授权示例 五. JWT 使用方式 六. JWT注意事项 一. JWT是什么 JSON Web Token(JWT)是目前最 ...
- Spark学习笔记(二)—— Local模式
Spark 的运行模式有 Local(也称单节点模式),Standalone(集群模式),Spark on Yarn(运行在Yarn上),Mesos以及K8s等常用模式,本文介绍第一种模式. 1.Lo ...
- Ceph 文件系统-全网最炫酷的Ceph Dashboard页面和Ceph监控 -- <5>
Ceph Dashboard实现 Ceph Dashboard介绍 Ceph 的监控可视化界面方案很多----grafana.Kraken.但是从Luminous开始,Ceph 提供了原生的Dashb ...
- 【转】线性插值(Linear Interpolation)基本原理
转:https://blog.csdn.net/u010312937/article/details/82055431 今天在阅读大牛代码的时候,发现了Linear Interpolation一次,百 ...
- 求一个数的阶乘在 m 进制下末尾 0 的个数
题意 : 求一个数 n 的阶层在 m 进制下末尾 0 的个数 思路分析 : 如果是 10 进制地话我们是很容易知道怎么做的,数一下其对 5 约数地个数即可,但是换成 m 进制的话就需要先将 m 分解质 ...
- BFS - 求最短路径
Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. ...
- net 转 java
一,初衷 从事net 工作已经将近4年,net 很好,C#本身也是个优雅的语言,vs 编辑器功能也异常强大,光拖动断点这个功能java idea就无法实现.但是分布式,架构师的net 在国内岗位上比较 ...