20191214 Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4)
概述
切了 ABCE,Room83 第一
还行吧
A - Happy Birthday, Polycarp!
题解
显然这样的数不会很多。
于是可以通过构造法,直接求出 \([1,10^9]\) 内所有符合要求的数。
\(\mathrm{Code}\)
#include<bits/stdc++.h>
using namespace std;
int a[]={1,2,3,4,5,6,7,8,9,11,22,33,44,55,66,77,88,99,111,222,333,444,555,666,777,888,999,1111,2222,3333,4444,5555,6666,7777,8888,9999,11111,22222,33333,44444,55555,66666,77777,88888,99999,111111,222222,333333,444444,555555,666666,777777,888888,999999,1111111,2222222,3333333,4444444,5555555,6666666,7777777,8888888,9999999,11111111,22222222,33333333,44444444,55555555,66666666,77777777,88888888,99999999,111111111,222222222,333333333,444444444,555555555,666666666,777777777,888888888,999999999,1000000001};
int T,n;
int main(){
cin>>T;
while(T--){
cin>>n;int ans=0;
for(int i=1;a[i]<=n;i++) ++ans;
cout<<ans+1<<endl;
}
return 0;
}
B - Make Them Odd
题解
显然每次从最大的数进行处理最划算。
于是用个优先队列存储所有的数,用 map 记录这个数是否还要付出代价即可。
\(\mathrm{Code}\)
#include<bits/stdc++.h>
using namespace std;
const int maxn=2000007;
int T,n;
int a[maxn];
int b[maxn],t[maxn];
int m;
map<int,bool>mp;
#define pii(x,y) make_pair(x,y)
priority_queue < int>q;
int main(){
scanf("%d",&T);
while(T--){
scanf("%d",&n);mp.clear();
int ans=0;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
q.push(a[i]);
}
while(q.size()){
int x=q.top();//x=-x;
q.pop();
if(x&1) continue;
if(mp[x]) continue;
++ans;mp[x]=1;
q.push(x/2);
}
printf("%d\n",ans);
}
}
C - As Simple as One and Two
题解
这种题目 WA 了一次 pretest ,说明我水平低下。
two
和 one
放在一起是非常美妙的字符串。
如果有子串 twone
,显然删去中间的 o
最优。
再处理 two
和 one
,为了不造成新的这样的串,删掉中间的 w
或 n
。
\(\mathrm{Code}\)
#include<bits/stdc++.h>
using namespace std;
const int maxn=150007;
int T,val[maxn];
char s[maxn];
int ans[maxn],cnt;
int main(){
scanf("%d",&T);
while(T--){
scanf("%s",s+1);
int len=strlen(s+1);cnt=0;
memset(val,0,sizeof(val));
for(int i=1;i+4<=len;i++){
if(s[i]=='t'&&s[i+1]=='w'&&s[i+2]=='o'&&s[i+3]=='n'&&s[i+4]=='e'){
ans[++cnt]=i+2;
s[i+2]=' ';
}
}
for(int i=1;i+2<=len;i++){
if(s[i]=='o'&&s[i+1]=='n'&&s[i+2]=='e'){
ans[++cnt]=i+1;s[i+1]=' ';
}
if(s[i]=='t'&&s[i+1]=='w'&&s[i+2]=='o'){
ans[++cnt]=i+1;s[i+1]=' ';
}
}
printf("%d\n",cnt);
for(int i=1;i<=cnt;i++){
printf("%d ",ans[i]);
}
puts("");
}
}
E - Two Fairs
题解
这种傻逼题花了一个小时还 WA 了一次 pretest,说明我水平低下。
扫一遍,并查集一下就行了。
神仙 zzk 有两次 bfs 的做法?
\(\mathrm{Code}\)
#include<bits/stdc++.h>
using namespace std;
const int maxn=200007;
const int maxm=1000007;
int T;
int n,m,a,b;
#define pii(x,y) make_pair(x,y)
vector <pair<int,int> >e;
int cnt;
int f[maxn];
set<int>A,B;
void clear(void){
e.clear();
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++) f[i]=i;
A.clear();B.clear();
}
int find(int x){
return f[x]==x?x:f[x]=find(f[x]);
}
void merge(int x,int y){
int xx=find(x),yy=find(y);
if(xx!=yy) f[xx]=yy;
}
void Init(void){
// for(int i=1;i<=n;i++){
// cout<<f[i]<<" ";
// }
for(int i=1,x,y;i<=m;i++){
scanf("%d%d",&x,&y);
if(a!=x&&a!=y&&b!=x&&b!=y) merge(x,y);
else e.push_back(pii(x,y));
}
// for(int i=1;i<=n;i++){
// cout<<f[i]<<" ";
// }
}
void Work(void){
for(auto it:e){
int x=it.first,y=it.second;
if(y<x) swap(x,y);
if(a==x) A.insert(find(y));
if(a==y) A.insert(find(x));
if(b==x) B.insert(find(y));
if(b==y) B.insert(find(x));
}
int aa=0,bb=0;
for(int i=1;i<=n;i++){
// if(i==a||i==b) continue;
if(i!=a&&i!=b&&A.count(find(i))&&B.count(find(i))==0) ++aa;
if(i!=a&&i!=b&&B.count(find(i))&&A.count(find(i))==0) ++bb;
}
for(auto it:e) merge(it.first,it.second);
if(find(a)==find(b)) printf("%d\n",aa*bb);
else puts("0");
}
int main(){
scanf("%d",&T);
while(T--){
scanf("%d%d%d%d",&n,&m,&a,&b);
clear();
Init();
Work();
}
}
20191214 Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4)的更多相关文章
- 【cf比赛记录】Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4)
比赛传送门 只能说当晚状态不佳吧,有点头疼感冒的症状.也跟脑子没转过来有关系,A题最后一步爆搜没能立即想出来,B题搜索没有用好STL,C题也因为前面两题弄崩了心态,最后,果然掉分了. A:简单数学 B ...
- Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4)
链接 签到题,求出位数,然后9*(位数-1)+ 从位数相同的全一开始加看能加几次的个数 #include<bits/stdc++.h> using namespace std; int m ...
- Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4) 题解
Happy Birthday, Polycarp! Make Them Odd As Simple as One and Two Let's Play the Words? Two Fairs Bea ...
- Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2)
A - Forgetting Things 题意:给 \(a,b\) 两个数字的开头数字(1~9),求使得等式 \(a=b-1\) 成立的一组 \(a,b\) ,无解输出-1. 题解:很显然只有 \( ...
- Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3
A,有多个线段,求一条最短的线段长度,能过覆盖到所又线段,例如(2,4)和(5,6) 那么我们需要4 5连起来,长度为1,例如(2,10)(3,11),用(3,10) 思路:我们想一下如果题目说的是最 ...
- Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) D. Power Products
链接: https://codeforces.com/contest/1247/problem/D 题意: You are given n positive integers a1,-,an, and ...
- Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) C. p-binary
链接: https://codeforces.com/contest/1247/problem/C 题意: Vasya will fancy any number as long as it is a ...
- Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) B2. TV Subscriptions (Hard Version)
链接: https://codeforces.com/contest/1247/problem/B2 题意: The only difference between easy and hard ver ...
- Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) A. Forgetting Things
链接: https://codeforces.com/contest/1247/problem/A 题意: Kolya is very absent-minded. Today his math te ...
随机推荐
- 关注图像采集视频传输之USB3.0 应用
参考文献 百度文库 http://baike.baidu.com/link?url=82OyhoL1AsNaT35CvscmeZqHjlggtFw-Cez2qYwjLHNXGhXfv38pUlsIJB ...
- Python如何实现微信群万人同步直播?
很多人传言微信网页版(https://wx.qq.com/)接口已经被封了,所以所有的微信都不能登录网页版,这是错误的. 2019年7月微信对网页版微信进行了动态安全策略调整,导致一大批微信号不能登录 ...
- CSS3新特性简单总结(持续补充常用到的情景)
1.CSS3边框border-radius 左上右下box-shadow box-shadow: 水平阴影(可负值,必) 垂直阴影(可负值,必) 模糊距离 阴影尺寸 颜色颜色 inset(将外部阴影改 ...
- CSS | 自适应两栏布局方法
html代码: <div class="main"> <div class="left" style="background: #0 ...
- 《Java练习题》习题集一
编程合集: https://www.cnblogs.com/jssj/p/12002760.html Java总结:https://www.cnblogs.com/jssj/p/11146205.ht ...
- Ansible配置批量推送公钥到被管理端
01.yum安装ansible(推荐) sudo yum install ansible 02.配置被管理端主机IP清单 [root@ansible_50 ansible]$ cp /etc/ansi ...
- C#程序编写高质量代码改善的157个建议【10-12】[创建对象时需要考虑是否实现比较器、区别对待==和Equals]
前言 建议10.创建对象时需要考虑是否实现比较器 建议11.区别对待==和Equals 建议12.重写Equals时也要重写GetHashCode 建议10.创建对象时需要考虑是否实现比较器 有对象的 ...
- openshift安装部署
前置准备工作: 1.每台主机准备好有公钥在 /root/.ssh/authorized_keys,私钥则存放在第一台主机的/root/.ssh/id_rsa 2.确定每台主机的私网IP地址是固定的. ...
- UWP GridView切换数据时界面闪动
在选择数据时,比如1-10集,和11-20集切换时,GridView需要切换对应的数据,但是会发生界面闪动. 这是默认的Item Transition导致的. 可以去掉默认的转换效果. <Gri ...
- 【Leetcode 做题学算法周刊】第五期
首发于微信公众号<前端成长记>,写于 2019.12.06 背景 本文记录刷题过程中的整个思考过程,以供参考.主要内容涵盖: 题目分析设想 编写代码验证 查阅他人解法 思考总结 目录 10 ...