CF #632 (Div. 2) 对应题号CF1333
1333A Little Artem
在一个\(n\)行\(m\)列的格子上染色,每个格子能染黑白两种
构造一种方案,使得四个方向有至少一个白色格子的黑色格子的数量,比四个方向有至少一个黑色格子的白色格子的数量,恰好多一
对于\(n=m\),只要构造一个黑色下三角就行,像这样:
BWWW
BBWW
BBBW
BBBB
考虑其它情况,就是在\(n=m\)的部分也是构造这样的三角,其它的用黑色排成一排或一列
分别是\(n>m\)和\(n<m\)两种情况
n>m:
BWWW
BWWW
....
BWWW
BBWW
BBBW
BBBB
n<m:
BWWWW...WWW
BBWWW...WWW
BBBWW...WWW
BBBBW...WWW
BBBBB...BBB
也就是最后一行/第一列全部染成黑色
代码写的有点傻
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstring>
#define reg register
#define EN std::puts("")
#define LL long long
inline int read(){
register int x=0;register int y=1;
register char c=std::getchar();
while(c<'0'||c>'9'){if(c=='-') y=0;c=std::getchar();}
while(c>='0'&&c<='9'){x=x*10+(c^48);c=std::getchar();}
return y?x:-x;
}
int main(){int T=read();while(T--){
int n=read(),m=read();
if(n==m){
for(reg int i=1;i<=n;i++){
for(reg int j=1;j<=i;j++) std::putchar('B');
for(reg int j=i+1;j<=n;j++) std::putchar('W');
EN;
}
}
else if(n>m){
for(reg int i=1;i+m<=n;i++){
std::putchar('B');
for(reg int j=2;j<=m;j++) std::putchar('W');
EN;
}
for(reg int i=1;i<=m;i++){
for(reg int j=1;j<=i;j++) std::putchar('B');
for(reg int j=i+1;j<=m;j++) std::putchar('W');
EN;
}
}
else{
for(reg int i=1;i<n;i++){
for(reg int j=1;j<=i;j++) std::putchar('B');
for(reg int j=i+1;j<=m;j++) std::putchar('W');
EN;
}
for(reg int j=1;j<=m;j++) std::putchar('B');
EN;
}
}
return 0;
}
CF1333B Kind Anton
有一个数组\(a,a_i\in\{-1,0,1\}\)
做一下变化:选一个\(1\le i<j\le n,a_j=a_i+a_j\)
问能不能通过这种变化,使得它变成数组\(b\)
因为只能把一个\(a_j\)之前的数\((i<j)\)加到\(a_j\)上,所以记录一下在第\(i\)位之前,\(a\)中有没有出现过\(1,-1\)
- \(b_i>a_i\),此时如果没出现过\(1\),则无解
- \(b_i<a_i\),此时如果没出现过\(-1\),无解
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstring>
#define reg register
#define EN std::puts("")
#define LL long long
inline int read(){
register int x=0;register int y=1;
register char c=std::getchar();
while(c<'0'||c>'9'){if(c=='-') y=0;c=std::getchar();}
while(c>='0'&&c<='9'){x=x*10+(c^48);c=std::getchar();}
return y?x:-x;
}
int n;
int a[100006],b[100006];
int have1[100006],have_1[100006];
int main(){int T=read();while(T--){
n=read();
for(reg int i=1;i<=n;i++){
a[i]=read();
have1[i]|=have1[i-1];have_1[i]|=have_1[i-1];
if(a[i]==1) have1[i+1]=1;
else if(a[i]==-1) have_1[i+1]=1;
}
for(reg int i=1;i<=n;i++) b[i]=read();
for(reg int i=n;i;i--){
if(b[i]>a[i]){
if(!have1[i]) goto NO;
}
else if(b[i]<a[i]){
if(!have_1[i]) goto NO;
}
}
for(reg int i=1;i<=n+1;i++)
have1[i]=have_1[i]=0;
std::puts("YES");
continue;
NO:;std::puts("NO");
for(reg int i=1;i<=n+1;i++)
have1[i]=have_1[i]=0;
}
return 0;
}
CF1333C Eugene and an array
尺取法
然而比赛的时候没想出来,就会 AB
然后掉了40多分/kk
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstring>
#include<map>
#define reg register
#define EN std::puts("")
#define LL long long
inline int read(){
register int x=0;register int y=1;
register char c=std::getchar();
while(c<'0'||c>'9'){if(c=='-') y=0;c=std::getchar();}
while(c>='0'&&c<='9'){x=x*10+(c^48);c=std::getchar();}
return y?x:-x;
}
std::map<LL,int>map;
LL sum[200006];
int n;
//CF1333C
//题意:求有多少个子序列(连续的),使得这些子序列中,没有和为 0 的子序列
//思路: l-r 的和为 0 ,转换为 sum[l-1]=sum[r] ,也就是前缀和
//尺取法,每次将 r 向右移动一位,然后根据条件把 l 右移直到符合要求
//在这里,能用尺取法的原因是,如果区间 l-r 中,因为 sum[l] 的原因导致不合法,那么 l 和之前的就都可以不考虑了,对于更大的 r 肯定也不合法
//此时对答案的贡献是 r-l ,列举一下就能知道
//原来这么简单比赛的时候就是没想出来 qaq ,当时一直在考虑怎么求不合法情况数,然后再用总数减,死在了去重上
int main(){
n=read();
map[0]=1;
reg LL ans=0;
reg int l=0,r=1;
for(reg int i=1;i<=n;i++) sum[i]=sum[i-1]+read();
while(r<=n){
while(map.find(sum[r])!=map.end()&&map[sum[r]]){
map[sum[l]]=0;l++;
}
map[sum[r]]=1;
ans+=r-l;
r++;
}
std::printf("%lld",ans);
return 0;
}
然而后面的并不想写了qwq
CF #632 (Div. 2) 对应题号CF1333的更多相关文章
- CF #636 (Div. 3) 对应题号CF1343
unrated 选手悠闲做题,然后只做出四个滚蛋了 符合 div3 一贯风格,没啥难算法 E最后就要调出来了,但还是赛后才A的 CF1343A Candies 传送门 找到一个 \(x\),使得存在一 ...
- CF #374 (Div. 2) C. Journey dp
1.CF #374 (Div. 2) C. Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径 ...
- Codeforces Round #378 (Div. 2) D题(data structure)解题报告
题目地址 先简单的总结一下这次CF,前两道题非常的水,可是第一题又是因为自己想的不够周到而被Hack了一次(或许也应该感谢这个hack我的人,使我没有最后在赛后测试中WA).做到C题时看到题目情况非常 ...
- CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组(转)
转载自:http://www.cnblogs.com/icode-girl/p/5744409.html 题目链接:CF #365 (Div. 2) D - Mishka and Interestin ...
- CF #376 (Div. 2) C. dfs
1.CF #376 (Div. 2) C. Socks dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需 ...
- CF #375 (Div. 2) D. bfs
1.CF #375 (Div. 2) D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...
- CF #374 (Div. 2) D. 贪心,优先队列或set
1.CF #374 (Div. 2) D. Maxim and Array 2.总结:按绝对值最小贪心下去即可 3.题意:对n个数进行+x或-x的k次操作,要使操作之后的n个数乘积最小. (1)优 ...
- CF #371 (Div. 2) C、map标记
1.CF #371 (Div. 2) C. Sonya and Queries map应用,也可用trie 2.总结:一开始直接用数组遍历,果断T了一发 题意:t个数,奇变1,偶变0,然后与问的 ...
- CF 628B New Skateboard --- 水题
CD 628B 题目大意:给定一个数字(<=3*10^5),判断其能被4整除的连续子串有多少个 解题思路:注意一个整除4的性质: 若bc能被4整除,则a1a2a3a4...anbc也一定能被4整 ...
随机推荐
- 插入排序(C语言版)
#include<iostream>using namespace std;int n;void lan(int a[],int size){ for(int i = 0;i < s ...
- Flask 入门(一)(Mac 系统)
熟话说,万事开头难,为了运行这第一个程序,我可是碰了不少壁,接下来我将正确的方法交给大家. 1.首先得有python和虚拟环境 (1)python环境苹果系统自带 (2)虚拟环境: 安装virtual ...
- Python常见数据结构-字符串
字符串基本特点 用引号括起来,单引号双引号均可,使用三个引号创建多行字符串. 字符串不可变. Python3直接支持Unicode编码. Python允许空字符串存在,不含任何字符且长度为0. 字符串 ...
- hadoop(八)集群namenode启动ssh免密登录(完全分布式五)|10
前置章节:hadoop集群配置同步(hadoop完全分布式四)|10 启动namenode之前: 1. 先查看有无节点启动,执行jps查看,有的话停掉 [shaozhiqi@hadoop102 ~]$ ...
- TensorFlow保存、加载模型参数 | 原理描述及踩坑经验总结
写在前面 我之前使用的LSTM计算单元是根据其前向传播的计算公式手动实现的,这两天想要和TensorFlow自带的tf.nn.rnn_cell.BasicLSTMCell()比较一下,看看哪个训练速度 ...
- break与continue对比
- break 用来终止循环 - continue 用来跳出当前循环,继续下次循环 // 求1到100之间所有不能被3整除的整数的第一个大于2000的和 var sum = 0; for(var i= ...
- Adaptert Listview 优化
这次是关于Listview的优化的,之前一直采用愚蠢的方式来使用listview,出现的情况就是数据多的话下拉的时候会出现卡顿的情况,内存占用多.所以学习了关于listview的优化,并且这也是普遍使 ...
- 绕过CDN查找真实 IP 姿势总结
返回域名解析对应多个 IP 地址,网站可能部署CDN业务,我们就需要bypass CDN,去查找真正的服务器ip地址 0x01.域名搜集 由于成本问题,可能某些厂商并不会将所有的子域名都部署 CDN, ...
- Hadoop学习笔记(2)-HDFS的基本操作(Shell命令)
在这里我给大家继续分享一些关于HDFS分布式文件的经验哈,其中包括一些hdfs的基本的shell命令的操作,再加上hdfs java程序设计.在前面我已经写了关于如何去搭建hadoop这样一个大数据平 ...
- Cucumber(3)——命令以及日志
目录 回顾 基本执行命令 关于日志的生成 回顾 在上一节中,我介绍了cucumber一些基本的语法内容,如果你还没有进行相关的了解或者环境的配置,你可以点击这里来进行了解一下 在本节中,我会对cucu ...