Atcoder Beginner Contest 167
赛场实况:

训练反思: A题签到不说了,B题第一眼没看清楚数据范围,写了一堆然后仔细一看1e12果断不能暴力..立马换了一个写法,连交2发wa(细节啊细节!!),C题看了半天英语没看懂说了什么,拿翻译软件翻了一下才算是懂,小数据范围一眼看出dfs,然后一发过(英语好菜qaq),D也是个简单题,就是找循环节,但是一直RE(想了半小时没想懂为什么),最后仔细看了一下题发现可以自己指向自己.....那么一开始就是死循环1的情况,压哨AC...。EF等我有空了补一下再更新。
A:Registration
签到题没意思,不说了。
#include<bits/stdc++.h>
#define ll long long
#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;
int main(){
string s,t;cin>>s>>t;
if(t.length()==s.length()+){
int flag=;
for(int i=;i<s.length();i++){
if(s[i]!=t[i]){
flag=;break;
}
}
if(flag) puts("No");
else puts("Yes");
}else{
puts("No");
}
}
B:Easy Linear Programming
签到题,依次贪心a,然后再贪心b,最后贪心c,注意数据范围,别无脑莽(比如我)
#include<bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;
int main(){
ll a,b,c,k;cin>>a>>b>>c>>k;
ll ans=;
if(k<=a){
ans=k;cout<<ans<<endl;return ;
}
else if(k>a&&k<=a+b){
ans+=a;
cout<<ans<<endl;return ;
}else if(k>(b+a)){
ans+=a;
ans-=(k-(a+b));
cout<<ans<<endl;return ;
}
}
C:Skill Up
题意:n行,m列,然后每一行购买的代价是C[i],如果你购买了该i行,你m个技能每个技能经验+a[i][j],然后题目要求每个技能的经验严格>=x,问你最小购买的代价.
我不知道有什么简便做法,反正我看到n,m<=12就觉得是dfs,但是我看榜单过的速度好快...或许有更简单的做法吧。
#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 a[][],c[],cur[];int n,m,k,ans=INF;
void dfs(int x,int sum){
for(int i=;i<=m;i++){
cur[i]+=a[x][i];
}
int fg=;
for(int i=;i<=m;i++){
if(cur[i]<k) fg=;
}
if(fg==) {ans=min(ans,sum+c[x]);}
for(int i=x+;i<=n;i++){
dfs(i,sum+c[x]);
for(int j=;j<=m;j++){
cur[j]-=a[i][j];
}
}
}
int main(){
cin>>n>>m>>k;
for(int i=;i<=n;i++){
cin>>c[i];
for(int j=;j<=m;j++){
cin>>a[i][j];
}
}
for(int i=;i<=n;i++){
mem(cur,);
dfs(i,);
}
if(ans!=INF) cout<<ans<<endl;
else cout<<-<<endl;
}
D:Teleporter
题意:有N个点,每个点与to[i]有个单向边,问从1开始走(1是第0个点),第k个点是什么。
解法:就是找循环节,然后如果k在循环节开始之前,那无所谓直接硬钢,如果在循环节之内了,那你需要减去循环节之前的数目,然后对于循环节总数取模确定你在循环节里的哪个位置。坑点,一个点可以自己走向自己(我没注意那么多一开始,以为题目默认不能这样...否则你会有3个RE点,我调了半小时心态都崩了,菜是原罪)
#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=4e6+;
ll to[maxn],pos[maxn],vis[maxn],mp[maxn];
int main(){
ll n,k;cin>>n>>k;
for(int i=;i<=n;i++){
cin>>to[i];
}
pos[]=;vis[]=;mp[]=;
ll now=to[],cnt=,dis=,l=;
while(!vis[now]){
vis[now]=++cnt;
mp[cnt]=now;
now=to[now];
if(vis[now]){
dis=cnt+-vis[now];
l=vis[now];
}
}
k=k+;
if(l==){cout<<""<<endl;return ;}
if(k<l){
cout<<mp[k]<<endl;
}else{
k=k-l;
k%=dis;
k+=l;
cout<<mp[k]<<endl;
}
}
E:Colorful Blocks(待补)
F:racket Sequencing(待补)
Atcoder Beginner Contest 167的更多相关文章
- 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 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...
随机推荐
- centos下python多版本管理(pyenv+python+virtualenv+ipython)
pyenv是个多版本python管理器,可以同时管理多个python版本共存,如pypy,miniconde等等 1 环境准备 安装相关软件和pyenv1.1 安装相关软件yum install -y ...
- react: typescript jest && enzyme
Install Jest 1.install jest dependencies jest @types/jest ts-jest -D 2.jest.config.js module.exports ...
- Java面试系列第2篇-Object类中的方法
Java的Object是所有引用类型的父类,定义的方法按照用途可以分为以下几种: (1)构造函数 (2)hashCode() 和 equals() 函数用来判断对象是否相同 (3)wait().wai ...
- TensorFlow keras vgg16net的使用
from tensorflow.python.keras.applications.vgg16 import VGG16,preprocess_input,decode_predictions fro ...
- 获取某个时间开始 之后的 N次[周几,周几]
废话不多说,直接上菜! 调用函数代码举例 //PS :这里需要注意的是 周日 是 0 !!!!! console.log(getBeforeDate(-10000)) //一万天之后的日期 conso ...
- MySQL优化之COUNT(*)效率(部分转载与个人亲测)
说到MySQL的COUNT(*)的效率,发现越说越说不清楚,干脆写下来,分享给大家. COUNT(*)与COUNT(COL)网上搜索了下,发现各种说法都有:比如认为COUNT(COL)比COUNT(* ...
- Install go1.5 for CentOS7
https://golang.org/doc/install 下载好后,通过FTPS,传递到Linux里去,放哪里随便你自己,因为被墙了,所以在Windows通过旋风下载了这个玩意儿. 你也可以: w ...
- 【Django 2.2文档系列】Model 外键中的on_delete参数用法
场景 我们用Django的Model时,有时候需要关联外键.关联外键时,参数:on_delete的几个配置选项到底是干嘛的呢,你知道吗? 参数介绍 models.CASCADE 级联删除.Django ...
- NC使用练习之通达OA-2017版本漏洞复现后续
利用上一篇通达OA的漏洞环境,练习NC工具的使用. 步骤: 1.本机启动nc.exe监听端口: 确认端口是否成功监听成功: 2.用冰蝎将nc.exe上传至目标机: 3.用命令行在目标机启动nc.exe ...
- qt 鼠标拖动窗口 跳动 解决
因为获取当前的位置,似乎没有把标题栏的高度记进去. 所以移动前,得考虑到标题栏的高度. 用以下方式获取标题栏高度: QApplication::style()->pixelMetric(QSty ...