概述

切了 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 ,说明我水平低下。

twoone 放在一起是非常美妙的字符串。

如果有子串 twone ,显然删去中间的 o 最优。

再处理 twoone ,为了不造成新的这样的串,删掉中间的 wn

\(\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();
}
}

最新文章

  1. _.属性和self.属性,我遇到的那些坑
  2. Swift3.0语言教程组合字符串
  3. Zabbix中使用ICMP ping来判断主机是否存活的问题
  4. 【转】【Android测试技巧】01. root后adb shell默认不是root用户时,如何将文件放入手机系统中
  5. work_6
  6. PHP过滤常用标签的正则表达式
  7. Java GC专家系列2:Java 垃圾回收的监控
  8. CSS块级元素、内联元素概念
  9. 在Windows下搭建React Native Android开发环境
  10. java 类 及其 执行过程
  11. iOS技术框架构和更新版本的技术特性
  12. 【mybatis深度历险系列】mybatis的框架原理+入门程序解析
  13. 三步法搞定CTF中的SQL注入题型
  14. shell脚本实例-脚本批量创建用户
  15. (4)MySQL的外键(不同表之间的数据关联)
  16. SSH批量分发管理
  17. cJSON 使用详解
  18. HDU 6114 Chess
  19. Mongodb添加副本及修改优先级
  20. 【PL/SQL编程】循环语句

热门文章

  1. 通信协议TLV的介绍及在python下的代码实现及仿真
  2. PHP7 break和continue的区别
  3. &lt; JAVA - 大作业(2)仿qq即时通讯软件 &gt;
  4. [ASP.NET Core 3框架揭秘] 配置[7]:多样化的配置源[中篇]
  5. SpringBoot微服务电商项目开发实战 --- Kafka集成接入
  6. abp模块生命周期设计思路剖析
  7. Cobbler 2.x安装与配置
  8. 安装最新版 windows正版软件地址(visio,office)
  9. Android 仿真器 无法启动排查
  10. pycharm安装第三方包问题解决