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 (超级源点)
随机推荐
- 网络1911、1912 C语言第5次作业--循环结构 批改总结
如题 一.评分规则 1.伪代码务必是文字+代码描述,直接反应代码,每题扣1分 2.提交列表没内容,或者太简单,每题得分0分.注意选择提交列表长的题目介绍. 3.代码格式不规范,包括命名随意.继续扣分. ...
- Chrome操作技巧
好用的插件: 如果你用 Chrome 浏览器,这8款插件一定要用! - 知乎 沙拉查词: 集合各大翻译,详细好用权威 Simple Allow Copy: 开启被网页屏蔽的自由复制功能 Qui ...
- Computer-Hunters——测试总结
描述项目的测试工作安排 主要由每个组员在模块功能完成后对自己负责的模块进行测试. 测试工具选择和运用 前端:console界面 后端:人工测试 前端与后端交互:人工测试 测试用例文档pdf的githu ...
- http & https & http/2 & SPDY & WebSocket
参考文章: http https :https://www.jianshu.com/p/d286d097e56b https & ssl:https://www.jianshu.com/p/2 ...
- 第一次实验报告:使用Packet Tracer分析HTTP数据包
目录 1 实验目的 2 实验内容 3. 实验报告 第一次实验报告:使用Packet Tracer分析HTTP数据包 1 实验目的 熟练使用Packet Tracer工具.分析抓到的HTTP数据包,深入 ...
- ASP.NET的MVC请求处理流程
1.用户打开浏览器,在地址栏输入某个网址的URL并回车,浏览器便开始像该URL指定的服务器发起HTTP请求 .2.服务器的网站服务系统(IIS)接收到该请求,先检查自己是否认识该类请求,如果认识就直接 ...
- orientation属性(判断是否为横竖屏)
现在有一个需求:移动端网页默认竖屏显示,当用户横屏浏览,就给予相应提示,比如横屏时显示下面截图提示信息 几年前,可能大家想到用 window.orientation 属性来实现,现官方已弃用,不做推荐 ...
- Aladdin and the Flying Carpet LightOJ 1341 唯一分解定理
题意:给出a,b,问有多少种长方形满足面积为a,最短边>=b? 首先简单讲一下唯一分解定理. 唯一分解定理:任何一个自然数N,都可以满足:,pi是质数. 且N的正因子个数为(1+a1)*(1+a ...
- 集合类源码(五)Collection之BlockingQueue(LinkedTransferQueue, PriorityBlockingQueue, SynchronousQueue)
LinkedTransferQueue 功能 全名 public class LinkedTransferQueue<E> extends AbstractQueue<E> i ...
- 迅雷极速版开启强制升级迅雷X模式,网友出招
IT之家7月13日消息 近期,不少网友反馈,迅雷极速版已经开启强制用户升级到迅雷X的模式,而且不能关闭取消,并且会默认安装到C盘上 迅雷X是迅雷最新推出的下载客户端工具,使用Electron软件框架完 ...