Codeforces Round #605 (Div. 3)
地址:http://codeforces.com/contest/1272
A. Three Friends
仔细读题能够发现|a-b| + |a-c| + |b-c| = |R-L|*2 (其中L = min{a, b, c}, R = max{a, b, c})
那么本题的移动条件就只考虑两个端点L, R即可,答案即为 |(L+1)-(R-1)| 即L向右移动1,R向左移动1,在此之前判断一下原L,R之间的距离是否<=2,<=2输出0
#include <bits/stdc++.h>
using namespace std; int q, a[];
int main(){
ios::sync_with_stdio();
cin.tie(); cout.tie();
cin >> q;
while( q-- ){
for( int i=; i<; i++ ) cin >> a[i];
sort(a, a+);
if( a[]-a[]<= ) cout << "" << endl;
else cout << (a[]-a[]-)* << endl;
} return ;
}
A.Three Friends
B.Snow Walking Robot
这题比赛时没做出来??理解题意出了锅。
思路:如果能够回到(0, 0)需满足数量U=D且R=L,只需要上下方向选min(U, D),左右方向选min(L, R)。
如果U=0或D=0那么就要删除所有的另外一个方向,且将左右方向置为1(min(L, R)>0),对于R和L也一样要满足该条件,上下方向置为1(min(U, D)>0)
然后最后组合的时候只需要让路径构成一个环即可,这个组合可以任意组合,做题的时候卡在这了。。。
#include <bits/stdc++.h>
using namespace std; int q, cl, cr, cu, cd;
string s;
int main(){
// freopen("in.txt", "r", stdin);
ios::sync_with_stdio();
cin.tie(); cout.tie();
cin >> q;
while( q-- ){
cin >> s;
cl = cr = cu = cd = ;
for( char i:s ){
cl += i=='L';
cr += i=='R';
cu += i=='U';
cd += i=='D';
}
cu = min(cu, cd);
cl = min(cl, cr);
if( cu== || cl== ){
cl = min(, cl);
cu = min(, cu);
}
string ans;
for( int i=; i<cl; i++ ) ans += 'R';
for( int i=; i<cu; i++ ) ans += 'U';
for( int i=; i<cl; i++ ) ans += 'L';
for( int i=; i<cu; i++ ) ans += 'D';
cout << ans.size() << endl << ans << endl;
} return ;
}
B.Snow Walking Robot
C.Yet Another Broken Keyboard
给k个字母问这k的字母能构成字符串s中多少个子串。
set存一下这k个字母,对s中每一段连续的可以在set中查找到的分别进行统计汇总即可,每一段长度len_i对答案的贡献为(len_i)*(len_i+1)/2.
#include <bits/stdc++.h>
using namespace std; typedef long long ll;
int n, k;
string s;
set<char> a;
ll ans, tmp;
int main(){
ios::sync_with_stdio();
cin.tie(); cout.tie();
cin >> n >> k >> s;
for( int i=; i<k; i++ ){
char ch;
cin >> ch;
a.insert(ch);
}
int len = s.size();
for( int i=; i<len; i++ ){
if( a.find(s[i])!=a.end() )
tmp ++;
else{
ans += tmp*(tmp+)/;
tmp = ;
}
}
if(tmp) ans += tmp*(tmp+)/;
cout << ans << endl; return ;
}
C.Yet Another Broken Keyboard
D. Remove One Element
三遍预处理 + 一遍原序列
第一遍预处理处理出来一个数不删的最大长度。
第二遍预处理从i from 1~n记录l[i]从左到右递增的最长连续序列长度。
第三遍预处理从i from n~1记录r[i]从右到左递减的最长连续序列长度。
最后跑原序列i from 1~n判断删除i之后的结果能否更新第一遍记录的答案
#include <bits/stdc++.h>
using namespace std; const int maxn = 2e5 + ;
int a[maxn], n, l[maxn], r[maxn], ans;
int main(){
ios::sync_with_stdio();
cin.tie(); cout.tie();
cin >> n;
for( int i=; i<n; i++ ) cin >> a[i];
int tmp = ;
for( int i=; i<n; i++ ){
if( a[i]>a[i-] ) tmp++;
else tmp = ;
ans = max(ans, tmp);
}
l[] = ;
for( int i=; i<n; i++ ){
if( a[i]>a[i-] ) l[i] = l[i-]+;
else l[i] = ;
}
r[n-] = ;
for( int i=n-; ~i; i-- ){
if( a[i]<a[i+] ) r[i] = r[i+]+;
else r[i] = ;
}
for( int i=; i<n-; i++ )
if( a[i-]<a[i+] ) ans = max(ans, l[i-]+r[i+]);
cout << ans << endl; return ;
}
D. Remove One Element
E.Nearest Opposite Parity
比赛时dfs写MLE,时间不够放弃。
预处理 + bfs通过,使用bfs理由->最短路
预处理出来答案为1的点,然后放进队列,同时将所有点i from 1~n可以跳到的位置i-a[i]和i+a[i]连边然后bfs
#include <bits/stdc++.h>
using namespace std; const int maxn = 2e5 + ;
const int inf = 0x3f3f3f3f;
int n, a[maxn], ans[maxn];
vector<int> p[maxn];
int main(){
memset( ans, -, sizeof(ans) );
scanf("%d", &n);
for( int i=; i<n; i++ ) scanf("%d", &a[i]);
queue<int> q;
for( int i=; i<n; i++ ){
if( i-a[i]>= ){
p[i-a[i]].push_back(i);
if( a[i-a[i]]% != a[i]% ) ans[i] = ;
}
if( i+a[i]<n ){
p[i+a[i]].push_back(i);
if( a[i+a[i]]% != a[i]% ) ans[i] = ;
}
if( ans[i]== ) q.push(i);
}
while( q.size() ){
int x = q.front();
q.pop();
for( auto i:p[x] ){
if( ans[i]==- && a[i]%==a[x]% ){
ans[i] = ans[x]+;
q.push(i);
}
}
}
for( int i=; i<n; i++ ){
printf("%d", ans[i]);
if( i==n- ) puts("");
else putchar(' ');
} return ;
}
E.Nearest Opposite Parity
Codeforces Round #605 (Div. 3)的更多相关文章
- Codeforces Round #605 (Div. 3) E - Nearest Opposite Parity
题目链接:http://codeforces.com/contest/1272/problem/E 题意:给定n,给定n个数a[i],对每个数输出d[i]. 对于每个i,可以移动到i+a[i]和i-a ...
- 【cf比赛记录】Codeforces Round #605 (Div. 3)
比赛传送门 Div3真的是暴力杯,比div2还暴力吧(这不是明摆的嘛),所以对我这种一根筋的挺麻烦的,比如A题就自己没转过头来浪费了很久,后来才醒悟过来了.然后这次竟然还上分了...... A题:爆搜 ...
- Codeforces Round #605 (Div. 3) E. Nearest Opposite Parity(最短路)
链接: https://codeforces.com/contest/1272/problem/E 题意: You are given an array a consisting of n integ ...
- Codeforces Round #605 (Div. 3) D. Remove One Element(DP)
链接: https://codeforces.com/contest/1272/problem/D 题意: You are given an array a consisting of n integ ...
- Codeforces Round #605 (Div. 3) C. Yet Another Broken Keyboard
链接: https://codeforces.com/contest/1272/problem/C 题意: Recently, Norge found a string s=s1s2-sn consi ...
- Codeforces Round #605 (Div. 3) B. Snow Walking Robot(构造)
链接: https://codeforces.com/contest/1272/problem/B 题意: Recently you have bought a snow walking robot ...
- Codeforces Round #605 (Div. 3) A. Three Friends(贪心)
链接: https://codeforces.com/contest/1272/problem/A 题意: outputstandard output Three friends are going ...
- Codeforces Round #605 (Div. 3) 题解
Three Friends Snow Walking Robot Yet Another Broken Keyboard Remove One Element Nearest Opposite Par ...
- Codeforces Round #605 (Div. 3) E - Nearest Opposite Parity (超级源点)
随机推荐
- AcWing 91. 最短Hamilton路径
今天第一次在\(AcWing\)这个网站上做题,来发一下此网站的第一篇题解 传送门 思路 直接枚举的话时间复杂度为\(O(n*n!)\) 复杂度显然爆炸,所以我们用二进制枚举,这样就可以把复杂度降到\ ...
- [LeetCode] 119. Pascal's Triangle II 杨辉三角之二
Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's triangle. Note t ...
- Codeforces Round #607 (Div. 1) Solution
从这里开始 比赛目录 我又不太会 div 1 A? 我菜爆了... Problem A Cut and Paste 暴力模拟一下. Code #include <bits/stdc++.h> ...
- Windows10 64位部署odoo12开发环境
预装Windows10 64位家庭版电脑一台 2019年7月 安装Python,这里的版本选择上有个坑,不要装最新的Python 3.7.x,原因是odoo12依赖pillow 4.0.0库,而这个4 ...
- Laravel服务容器的绑定与解析
本篇文章给大家带来的内容是关于Laravel服务容器的绑定与解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言 老实说,第一次老大让我看laravel框架手册的那天早上,我 ...
- luogu P1533 可怜的狗狗 |莫队+二分
题目背景 小卡由于公务需要出差,将新家中的狗狗们托付给朋友嘉嘉,但是嘉嘉是一个很懒的人,他才没那么多时间帮小卡喂狗狗. 题目描述 小卡家有N只狗,由于品种.年龄不同,每一只狗都有一个不同的漂亮值.漂亮 ...
- 【03】Kubernets:K8S 操作入门
写在前面的话 经过上一节,我们顺利将 K8S 集群搭建了起来,在其中我也简单的谈了一下关于 K8S 的网络.那么这一节我们主要谈谈如何来简单的使用 K8S 的命令.当然这些命令有很多,我们只是通过一个 ...
- sql server 分页总结
1.第一种方式:使用 ROW_NUMBER() OVER(ORDER BY ID) …… BETWEEN AND 的方式SELECT * FROM( SELECT ROW_NUMBER() OVER( ...
- Ajax实现附件上传
前两篇文章有介绍使用form.submit 实现附件的上传,但是这种方式使用起来很不方便,如过需要再上传成功以后执行一些其他的操作的时候比较麻烦.下面我为大家介绍下使用ajax实现附件上传的功能: 1 ...
- TCP 协议 精解
http://www.cnblogs.com/sunev/archive/2012/06/23/2559389.html