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整 ...
随机推荐
- 一个有关 scala 编程语言 的博客
http://www.cnblogs.com/superjt/category/312683.html
- 当Spring Cloud Alibaba Sentinel碰上Spring Cloud Sleuth会擦出怎样的火花
前言 今年主要会做一个比较完整的微服务项目开源出来.目前已经开始了,刚兴趣的先Star一个吧. 项目:https://github.com/yinjihuan/kitty-cloud 基础框架:htt ...
- 03-css3中的3D转换
一.CSS3-3D转换 1.3D 特点:近大远小,物体和面遮挡不可见 1.1三维坐标系 x 轴:水平向右 -- x 轴右边是正值,左边是负值 y 轴:垂直向下 -- y 轴下面是正值,上面是负值 z ...
- stand up meeting 1/12/2016
part 组员 工作 工作耗时/h 明日计划 工作耗时/h UI 冯晓云 UI测试和调整:页面跳转调整 3 查漏补缺,扫除UI b ...
- 好用的mitmproxy代理抓包
安装证书 浏览器输入 `mitm.it` 下载证书有时候打不开,可能是起的服务卡死了,回车下命令行,再再网页刷新下载证书就可以了. mitmweb Chrome浏览器代理设置 打开的话,记得保存点一下 ...
- .NET中 kafka消息队列、环境搭建与使用
前面几篇文章中讲了一些关于消息队列的知识,就每中消息队列中间件,我们并没有做详细的讲解,那么,今天我们就来详细的讲解一下消息队列之一kafka的一些基本的使用与操作. 一.kafka介绍 kafka: ...
- 4. css事件
可通过使用css伪类实现点击元素变色的效果,两个伪类是:active, :focus :active :active选择器用于选择活动链接.当在一个链接上点击时,它就会成为活动的(激活的),:acti ...
- [De1CTF 2019]SSRF Me
原帖地址 : https://xz.aliyun.com/t/5927 De1CTF 2019 的一个题目总结 题目描述 直接查看页面源代码可以看到正确格式的代码 #! /usr/bin/env py ...
- HTML+CSS教程(三)marquee滚动效果
一.marquee 1.marquee标签的属性scrollHeight:获取对象的滚动高度.scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离.scrollTop: ...
- 几个可以提高工作效率的Python内置小工具
在这篇文章里,我们将会介绍4个Python解释器自身提供的小工具.这些小工具在笔者的日常工作中经常用到,减少了各种时间的浪费,然而,却很容易被大家忽略.每当有新来的同事看到我这么使用时,都忍不住感叹, ...