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整 ...
随机推荐
- Vue-CLI 3.x 部署项目至生产服务器
本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发.Nodejs.Python.Linux.IT资讯等板块. 本教程主要讲解的是 Vue ...
- python selenium使用
安装selenium #Python pip install selenium #Anaconda3 conda install selenium 下载浏览器版本对应的驱动文件 chrome chro ...
- floyd最小环&&模板
floyd的核心代码: ;k<=n;k++){ ;i<=n;i++){ ;j<=n;j++){ dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j] ...
- 数据结构和算法(Golang实现)(5)简单入门Golang-接口
接口 在Golang世界中,有一种叫interface的东西,很是神奇. 一.数据类型 interface{} 如果你事前并不知道变量是哪种数据类型,不知道它是整数还是字符串,但是你还是想要使用它. ...
- web网页html基础
列表标签 ul:定义一个列表 li:定义列表中的条目 图片标签 Img:用来向网页中插入一张图片 Src:指定图片所在的路径 Width:指定图片宽度 (% px) Height:指定图片高度 (% ...
- AJ学IOS(30)UI之Quartz2D画图片画文字
回头看了看自己写的博客,AJ决定以后更改风格 本意是想大家看效果直接拷贝代码能用,注释齐全也方便学习,但是发现这样对新手学习特别困难 以后风格基本是–>看标题–>看目录–>看图片–& ...
- Java - window下环境配置
JDK下载 官网:https://www.oracle.com/java/technologies/javase-jdk8-downloads.html 百度网盘: 链接:https://pan.ba ...
- div3--C. Pipes
题目链接:https://codeforces.com/contest/1234/problem/C 题目大意:根据规则,判断是否可以从左上走到右下,1,2,3,4,5,6分别对应题干给的图片,所以1 ...
- kafka消息分区机制原理
背景 kafka如何支撑海量消息的集中写入? 答案就是消息分区. 核心思想是:负载均衡,采用合适的分区策略把消息写到不同的broker上的分区中: 其它的产品中有类似的思想. 比如monogodb, ...
- Upload-Labs 实验操作记录
0x01 安装 下载:https://github.com/c0ny1/upload-labs 环境:简单搭建phpstudy环境即可,记得在upload-labs根目录下创建该文件夹 0x02 文件 ...