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|。

思路:我不太会数论..想了一会才明白。原式等价于:A+ 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的更多相关文章

  1. AtCoder Beginner Contest 100 2018/06/16

    A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...

  2. AtCoder Beginner Contest 052

    没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...

  3. AtCoder Beginner Contest 053 ABCD题

    A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...

  4. AtCoder Beginner Contest 136

    AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...

  5. AtCoder Beginner Contest 137 F

    AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...

  6. AtCoder Beginner Contest 076

    A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...

  7. AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】

    AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...

  8. AtCoder Beginner Contest 064 D - Insertion

    AtCoder Beginner Contest 064 D - Insertion Problem Statement You are given a string S of length N co ...

  9. AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】

    AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...

随机推荐

  1. python 基础篇 类基础与继承

    先来简单解释几个概念 类:一群有着相同属性和函数的对象的集合,这里对应 Python 的 class. 对象:集合中的一个事物,这里对应由 class 生成的某一个 object,比如代码中的 har ...

  2. Hbase的安装与基本操作

    简介: 1安装 HBase​   本节介绍HBase的安装方法,包括下载安装文件.配置环境变量.添加用户权限等. 1.1 下载安装文件   HBase是Hadoop生态系统中的一个组件,但是,Hado ...

  3. spark2.4.5计算框架中各模块的常用实例

    本项目是使用scala语言给出了spark2.4.5计算框架中各模块的常用实例. 温馨提醒:spark的版本与scala的版本号有严格的对应关系,安装请注意. Spark Core RDD以及Pair ...

  4. MySQL如何创建一个好索引?创建索引的5条建议【宇哥带你玩转MySQL 索引篇(三)】

    MySQL如何创建一个好索引?创建索引的5条建议 过滤效率高的放前面 对于一个多列索引,它的存储顺序是先按第一列进行比较,然后是第二列,第三列...这样.查询时,如果第一列能够排除的越多,那么后面列需 ...

  5. ajax发送时禁用按钮

    css /*div无法点击*/ .div-cant-click { pointer-events: none; } 发送ajax实例 $.ajax({ url:'url', type:'post', ...

  6. 2019-2020-1 20199325《Linux内核原理与分析》第十二周作业

    什么是ShellShock? Shellshock,又称Bashdoor,是在Unix中广泛使用的Bash shell中的一个安全漏洞,首次于2014年9月24日公开.许多互联网守护进程,如网页服务器 ...

  7. Windows环境,获取当前线程的ID,GetCurrentThreadId

    GetCurrentThreadId 打印格式:0x%08lx 头文件:processthreadsapi.h (include Windows Server 2003, Windows Vista, ...

  8. C++多线程队列实现

    C++多线程队列实现 C++多线程队列学习 介绍 在项目中,进行多线程队列实现是一个比较麻烦的事, 找到了一个实现比较好的多线程队列实现, 自己做了一点修改更加适应自己的项目, 记录下来, 有需要的自 ...

  9. Scala教程之:静态类型

    文章目录 泛类型 型变 协变 逆变 不变 类型上界 类型下界 内部类 抽象类型 复合类型 自类型 隐式参数 隐式转换 多态方法 类型推断 Scala是静态类型的,它拥有一个强大的类型系统,静态地强制以 ...

  10. 使用sys模块写一个软件安装进度条

    import sys,time for i in range(50): sys.stdout.write('#') sys.stdout.flush() #强制刷新将内存中的文件写一条,输出一条. t ...