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整 ...
随机推荐
- 中阶 d06.1 cookie && session && jsp介绍
##Cookie > 饼干. 其实是一份小数据, 是服务器给客户端,并且存储在客户端上的一份小数据 ### 应用场景 > 自动登录.浏览记录.购物车. ###为什么要有这个Cookie & ...
- Pytest系列(18)- 超美测试报告插件之allure-pytest的基础使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 官方介绍 Allure Frame ...
- 【Tool】使用IDEA创建简单的Java项目
IDEA创建简单的Java项目 打开IDEA进入首页面,点击 Create New Project 点选第一项就是了,SDK就是我们的JDK,,这里我已经装好了JDK和JDK的环境变量 IDEA就能自 ...
- sublime text3配置html环境
1.安装View in Browser 2.配置快捷键 [1]Preferences—Key Bindings—User. [2]插入代码 [ //ie { "keys": [&q ...
- D - Fox And Two Dots DFS
Fox Ciel is playing a mobile puzzle game called "Two Dots". The basic levels are played on ...
- Problem F Free Weights
二分答案. 思路:对于二分给定的mid,即当前允许移动的最大重量,我们可以把小于改重量的标记一下,然后把没有标记的按照顺序放到另一个数组,然后判断是否满足两两相同. #include<bits/ ...
- DeepinV20系统文件管理器右键发送至为知笔记
1. 创作背景 昨天在深度系统上做了一个打开文件管理器选择文件右键发送文本至博客园的插件. 这个插件对于我自己来说是及其方便的东西,平时的学习积累,工作经验或者生活感悟,随手记下之后,就能够轻松发送出 ...
- 靠!安装了macOS Catalina(10.15.4)后,文件系统都乱套了
最近闲来无事,决定将我的两台apple电脑升级成最新的苹果系统(macOS Catalina),当然,由于以前升级过多次mac系统,所以毫不犹豫从app store下载了最新的macOS Cetali ...
- redis: 乐观锁(十)
监视:watch 正常业务(单线程): 127.0.0.1:6379> set money 100 #模拟存款100元 OK 127.0.0.1:6379> set moneyout 0 ...
- SpringMVC Spring Mybatis整合篇
1.创建WEB项目 创建项目:(ssmbuild)步骤略........ 给项目添加lib文件夹,用于存放jar包: 在WEB-INF目录下创建lib文件夹: 创建完成:运行项目时需要把jar导入到l ...