赛场实况:

训练反思: 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的更多相关文章

  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. ApiPost V3创事记:一个痛并快乐着的创业故事

    前言 无论是对于国家,还是对于我们个人,2020年4月,是注定是一个不同往年的4月.一场突如起来的疫情打破了我们原来的生活曲线,让我们知道了什么是苦难,什么是团结,什么是坚持,什么是胜利. 一.大幕开 ...

  2. .NET Core 初识

    什么是 ASP.NET Core? ASP.NET Core 是一个新的开源和跨平台的框架,用于构建如 Web 应用.物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序.ASP.N ...

  3. linux下五种查找命令

      我们经常需要在系统中查找一个文件或者命令,那么在Linux系统中如何快速定位和精确查找它呢?下面总结了五个基础命令·分别是which.whereis.type.locate.find. 一 whi ...

  4. CRS-0184 Cannot communicate with the CRS daemon

    事件背景 rman清理脚本异常.导致磁盘空间爆满(一个环境变量没有设置正确) 释放磁盘空间,进行rman清理 之后,领导把实例重启,但是ams实例没有关闭 环境 系统 : AIX 数据库: Oracl ...

  5. 如何使用Markdown 编写文档

    Markdown 是一种轻量级标记语言,用来编写文本文档,一般后缀名为.md.该语言在 2004 由约翰·格鲁伯(John Gruber)创建. 由于Markdown 语法简单,易读易写,变得越来越通 ...

  6. 【三剑客】awk运算符

    1. 算术运算符:+,-,*,/,% [root@oldboy test]# awk 'BEGIN{a=50;b=20;print "(a+b)=",(a+b)}' (a+b)= ...

  7. HTML入门(HB、DW)

    一.文字内容 <b></b>  <strong></strong>     /*加粗 <i></i>   <em>& ...

  8. 内蒙古特检院利用物联网/RFID技术提高电梯检测水平

    随着电梯检验工作信息化进程的进一步深入,内蒙古特检院从检验工作中寻找新方法.新手段,为检验员新引入电梯检验手持终端设备,力求提高电梯检验水平,将"电梯安全惠民工程"落到实处. 电梯 ...

  9. Nginx重写请求后将url?后的参数去除

    2019独角兽企业重金招聘Python工程师标准>>> 使用?结尾     注意,关键点就在于"?"这个尾缀.重定向的目标地址结尾处如果加了?号,则不会再转发传递 ...

  10. 四、CentOS 6.5 上传和安装Nginx

    CentOS 6.5 上传和安装Nginx