Atcoder Beginner Contest 166
VP赛况如下:

前言:感觉这一场题目难度还是比较贴近新生的,我一个codeforces小蓝名一小时居然AK了,F题数据有点水(?)暴力dfs居然都能过...
A:A?C
题意:给你字符串,如果字符串是ABC,那么就输出ARC;反之输出ABC。
#include<bits/stdc++.h>
using namespace std;
int main(){
string a;cin>>a;
if(a[]=='R') cout<<"ABC"<<endl;
if(a[]=='B') cout<<"ARC"<<endl;
}
B:Trick or Treat
题意:给你n个数,k个组,每组有d个数,然后输入d个数,标记,最后查找有[1,n]中有几个数字没被访问过
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+;
bool vis[maxn];
int main(){
int n,k;cin>>n>>k;
for(int i=;i<=k;i++){
int x;cin>>x;
for(int j=;j<=x;j++){
int q;cin>>q;
vis[q]=true;
}
}
int cnt=;
for(int i=;i<=n;i++){
if(!vis[i]) ++cnt;
}
cout<<cnt<<endl;
}
C:Peaks
题意:有N个观测台,M条边,每个人有一个高度H,输出有多少个节点满足它比所有它相邻的观测台高。
解法:我习惯用链式前向星来存边,思路就是查找每个节点的边,看是否>=他,如果是的话,那就不行了,否则ans++;
#include<bits/stdc++.h>
#define ll long long
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define per(i,n,a) for(int i=n;i>=a;i--)
#define endl '\n'
#define mem(a,b) memset(a,b,sizeof(a))
#define IO ios::sync_with_stdio(false);cin.tie(0);
using namespace std;
const int INF=0x3f3f3f3f;
const ll inf=0x3f3f3f3f3f3f3f3f;
const int mod=1e9+;
const int maxn=1e5+;
int h[maxn];
int tot,head[maxn];
struct E{
int to,next;
}edge[maxn<<];
void add(int u,int v){
edge[tot].to=v;
edge[tot].next=head[u];
head[u]=tot++;
}
int main(){
int n,m;cin>>n>>m;mem(head,-);
for(int i=;i<=n;i++) cin>>h[i];
for(int i=;i<=m;i++){
int u,v;cin>>u>>v;
add(u,v);add(v,u);
}
int ans=;
for(int u=;u<=n;u++){
int flag=;
for(int i=head[u];i!=-;i=edge[i].next){
int v=edge[i].to;
if(h[v]>=h[u]){
flag=;break;
}
}
if(!flag) ++ans;
}
cout<<ans<<endl;
}
D:I hate Factorization
题意:给定X,输出一组(A,B),满足A5-B5=X.
解法:看了一下数据范围,直接枚举暴力就行(写wa四次,一个小地方没开LL,好菜啊.....逃)
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
ll x;cin>>x;
for(ll i=-;i<=;i++){
for(ll j=-;j<=;j++){
ll a=i*i*i*i*i;ll b=j*j*j*j*j;
if(x==(a-b)){
cout<<i<<" "<<j<<endl;
return ;
}
}
}
}
E:This Message Will Self-Destruct in 5s
题意:给一个长度为N的序列A,求有多少数字对(i,j)满足Ai+Aj=|i - j|。
思路:我不太会数论..想了一会才明白。原式等价于:Aj + j = i - Ai,那么只需要每次查询 i - Ai的个数,然后更新Ai + i即可。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=2e5+;
int a[maxn];
int main(){
int n;cin>>n;
map<int,int> mp;ll ans=;
for(int i=;i<=n;i++){
int x;cin>>x;
ans+=mp[i-x];
mp[i+x]++;
}
cout<<ans<<endl;
}
F: Three Variables Game
题意:给N个字符串("AB","AC","BC")和A,B,C三个值,按顺序执行每个字符串的操作,如果这个字符串是"AB",那么将执行A--,B++或A++,B--,其它字符串类似,并且每一个操作之后A,B,C三个值不能小于0,判断是否按顺序执行下来,如是,并要求具体操作序列。
解法:看到这个题,第一反应就是dfs,配套剪枝就行(本来想想先莽一发dfs,但没想到过了,Exe_time也只有33ms,怀疑数据有点水?)
#include<bits/stdc++.h>
#define ll long long
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define per(i,n,a) for(int i=n;i>=a;i--)
#define endl '\n'
#define mem(a,b) memset(a,b,sizeof(a))
#define IO ios::sync_with_stdio(false);cin.tie(0);
using namespace std;
const int INF=0x3f3f3f3f;
const ll inf=0x3f3f3f3f3f3f3f3f;
const int mod=1e9+;
const int maxn=1e5+;
int n,a,b,c;
string s[maxn];
vector<char> vec;
int flag;
void dfs(int x,int a,int b,int c){
if(flag) return ;
if(x==n+&&a>=&&b>=&&c>=){
flag=;
puts("Yes");
for(int i=;i<n;i++) cout<<vec[i]<<endl;
return ;
}
if(s[x][]=='A'&&s[x][]=='B'){
if(a+>=&&b->=&&c>=){
vec.push_back('A');
dfs(x+,a+,b-,c);
vec.pop_back();
}
if(a->=&&b+>=&&c>=){
vec.push_back('B');
dfs(x+,a-,b+,c);
vec.pop_back();
}
}
else if(s[x][]=='A'&&s[x][]=='C'){
if(a+>=&&b>=&&c->=){
vec.push_back('A');
dfs(x+,a+,b,c-);
vec.pop_back();
}
if(a->=&&b>=&&c+>=){
vec.push_back('C');
dfs(x+,a-,b,c+);
vec.pop_back();
}
}
else if(s[x][]=='B'&&s[x][]=='C'){
if(a>=&&b->=&&c+>=){
vec.push_back('C');
dfs(x+,a,b-,c+);
vec.pop_back();
}
if(a>=&&b+>=&&c->=){
vec.push_back('B');
dfs(x+,a,b+,c-);
vec.pop_back();
}
}
}
int main(){
cin>>n>>a>>b>>c;flag=;
for(int i=;i<=n;i++) cin>>s[i];
dfs(,a,b,c);
if(!flag) puts("No");
}
Atcoder Beginner Contest 166的更多相关文章
- AtCoder Beginner Contest 100 2018/06/16
A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...
- AtCoder Beginner Contest 052
没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...
- AtCoder Beginner Contest 053 ABCD题
A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...
- AtCoder Beginner Contest 136
AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...
- AtCoder Beginner Contest 137 F
AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...
- AtCoder Beginner Contest 076
A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...
- AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】
AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...
- AtCoder Beginner Contest 064 D - Insertion
AtCoder Beginner Contest 064 D - Insertion Problem Statement You are given a string S of length N co ...
- AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】
AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...
随机推荐
- wordpress 常用操作
删除主题 在主题目录 wp-content/themes 中直接删除即可. 首页和文章页使用不同主题 首页使用sidebar,文章页不使用sidebar,这样文章的内容可以占更宽的页面 安装插件 Mu ...
- 取代 Python 多进程!伯克利开源分布式框架 Ray
Ray 由伯克利开源,是一个用于并行计算和分布式 Python 开发的开源项目.本文将介绍如何使用 Ray 轻松构建可从笔记本电脑扩展到大型集群的应用程序. 并行和分布式计算是现代应用程序的主要内容. ...
- Java IO 流 -- 随机读取和写入流 RandomAccessFile (文件分割和合并)
RandomAccessFile 相对其它流多了一个seek() 方法指定指针的偏移量. 1.指定起始位置读取剩余内容 public static void test01() throws IOExc ...
- 计算某天的下一天:黑盒测试之等价类划分+JUnit参数化测试
题目要求 测试以下程序:该程序有三个输入变量month.day.year(month.day和year均为整数值,并且满足:1≤month≤12.1≤day≤31和1900≤year≤2050),分别 ...
- js的属性监听
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title ...
- Linux系统curl获取公网ip
收集了几个查询当前公网ip的网址,可以通过curl命令方便的查看 curl cip.cc curl ipinfo.io curl myip.ipip.net curl http://members.3 ...
- CF1324 --- Maximum White Subtree
CF1324 --- Maximum White Subtree 题干 You are given a tree consisting of \(n\) vertices. A tree is a c ...
- 三、通过Vue基础属性做一个Table的增加、删除、姓名音位吗查询
html头文件包括css,和vue.js的文件的引用 <!DOCTYPE html> <html lang="en"> <head> <m ...
- python selenium(定位方法)
一.定位方法 注意:元素属性必须唯一存在 #id定位 find_element_by_id() #name定位 find_element_by_name() #class_name定位 find_el ...
- Java中常用的获取从当前月开始的前第i个月、取结束时间与开始时间相差多少个月份等的方法
@RunWith(SpringRunner.class) @SpringBootTest public class DateTest { @Test public void test(){ DateF ...