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 ...
随机推荐
- elasticsearch的快速安装
在阿里云服务器快速安装ElasticSearch 1.安装好java的jdk环境 2.使用wget下载elasticsearch安装包,wget的速度比较满,如果等不及的话,可以先下载好安装包再上传解 ...
- 中国剩余定理(CRT)及其拓展(ExCRT)
中国剩余定理 CRT 推导 给定\(n\)个同余方程 \[ \left\{ \begin{aligned} x &\equiv a_1 \pmod{m_1} \\ x &\equiv ...
- docker 创建.netcore2.2 api容器 以及连接mysql容器
1]环境说明 操作系统:Window 10 专业版 开发工具 Vs2019专业版 Docker: Docker for Windows docker在windows上安装完毕之后可以看到 2]拉取 ...
- HttpRunner学习10--hook机制
前言 对于使用过 Python结合Unittest 框架来做自动化测试的同学,应该知道在 Unittest 中,有这样2个方法:setUp() 和 tearDown() ,即前置和后置操作.通常 se ...
- 在WPF中开启摄像头扫描二维码(Media+Zxing)
近两天项目中需要添加一个功能,是根据摄像头来读取二维码信息,然后根据读出来的信息来和数据库中进行对比显示数据. 选择技术Zxing.WPFMediaKit.基本的原理就是让WPFmediaKit来对摄 ...
- Asp.Net MVC Web API 中Swagger教程,使用Swagger创建Web API帮助文件
什么是Swagger? Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法 ...
- 通过 Drone Rest API 获取构建记录日志
Drone是一款CICD工具,提供rest API,简单介绍下如何使用API 获取构建日志. 获取token 登录进入drone,点头像,在菜单里选择token 复制token即可 API 介绍 Dr ...
- 2、手写Unity容器--第一层依赖注入
这个场景跟<手写Unity容器--极致简陋版Unity容器>不同,这里构造AndroidPhone的时候,AndroidPhone依赖于1个IPad 1.IPhone接口 namespac ...
- MongoDB(五):更新文档、删除文档
1. 更新文档 MongoDB的uptade()和save()方法用于将集合中的文档更新.update()方法更新现有文档中的值,而save()方法是传递文档数据替换现有文档.从3.2版本开始,Mon ...
- Scrcpy用电脑控制Android手机(支持Windows/macOS/Linux)
一.scrcpy简介 注意:拼写是scrcpy,非Python爬虫框架Scrapy. scrcpy可以通过adb调试的方式来将手机屏幕投到电脑上,并可以通过电脑控制您的Android设备.它可以通过U ...