AtCoder Beginner Contest 131 Solution
前言
这次ABC还是有一点难度的吧.
TaskA Security
Solution
直接模拟就好了.
Code
/*
mail: mleautomaton@foxmail.com
author: MLEAutoMaton
This Code is made by MLEAutoMaton
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<iostream>
using namespace std;
#define ll long long
#define re register
#define file(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)
inline int gi(){
int f=1,sum=0;char ch=getchar();
while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0' && ch<='9'){sum=(sum<<3)+(sum<<1)+ch-'0';ch=getchar();}
return f*sum;
}
char s[100010];
int main(){
scanf("%s",s+1);
for(int i=1;i<strlen(s+1);i++){
if(s[i]==s[i+1])return puts("Bad"),0;
}
puts("Good");
return 0;
}
TaskB Bite Eating
Solution
直接枚举删除那个然后判断就行了.
Code
/*
mail: mleautomaton@foxmail.com
author: MLEAutoMaton
This Code is made by MLEAutoMaton
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<iostream>
using namespace std;
#define ll long long
#define re register
#define file(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)
inline int gi(){
int f=1,sum=0;char ch=getchar();
while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0' && ch<='9'){sum=(sum<<3)+(sum<<1)+ch-'0';ch=getchar();}
return f*sum;
}
int n,L,a[210];
int main(){
n=gi();L=gi();int Sum=0;
for(int i=1;i<=n;i++)a[i]=L+i-1,Sum+=a[i];
int Min=1e9+10,ans;
for(int i=1;i<=n;i++){
int sum=0;
for(int j=1;j<=n;j++)if(i!=j)sum+=a[j];
if(abs(Sum-sum)<Min){Min=abs(Sum-sum);ans=sum;}
}
printf("%d\n",ans);
return 0;
}
TaskC Anti-Division
Solution
求个\(gcd\)容斥就行了.
Code
/*
mail: mleautomaton@foxmail.com
author: MLEAutoMaton
This Code is made by MLEAutoMaton
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<iostream>
using namespace std;
#define ll long long
#define int ll
#define re register
#define file(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)
inline int gi(){
int f=1,sum=0;char ch=getchar();
while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0' && ch<='9'){sum=(sum<<3)+(sum<<1)+ch-'0';ch=getchar();}
return f*sum;
}
ll get(ll a,ll b,ll c){
return (b-a+1)-(b/c-(a-1)/c);
}
ll gcd(ll a,ll b){
if(!b)return a;
return gcd(b,a%b);
}
ll a,b,sumc,sumd,sumcd;int c,d;
signed main(){
scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
printf("%lld\n",get(a,b,c)+get(a,b,d)-get(a,b,1ll*c*d/gcd(c,d)));
return 0;
}
TaskD Megalomania
Solution
直接按照最晚完成时间排序然后模拟就行.
Code
/*
mail: mleautomaton@foxmail.com
author: MLEAutoMaton
This Code is made by MLEAutoMaton
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<iostream>
using namespace std;
#define ll long long
#define int ll
#define re register
#define file(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)
inline int gi(){
int f=1,sum=0;char ch=getchar();
while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0' && ch<='9'){sum=(sum<<3)+(sum<<1)+ch-'0';ch=getchar();}
return f*sum;
}
struct node{int x,y;}job[200010];
int n;
bool operator<(const node a,const node b){
return a.y<b.y || (a.y==b.y && a.x<b.x);
}
signed main(){
n=gi();
for(int i=1;i<=n;i++)job[i].x=gi(),job[i].y=gi();
sort(&job[1],&job[n+1]);int now=0;
for(int i=1;i<=n;i++){
now+=job[i].x;
if(now>job[i].y)return puts("No"),0;
}
puts("Yes");
return 0;
}
TaskE Friendships
Solution
考虑菊花图是最多的,那么一步一步往菊花图里面加边就行了.
Code
/*
mail: mleautomaton@foxmail.com
author: MLEAutoMaton
This Code is made by MLEAutoMaton
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<iostream>
using namespace std;
#define ll long long
#define re register
#define file(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)
inline int gi(){
int f=1,sum=0;char ch=getchar();
while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0' && ch<='9'){sum=(sum<<3)+(sum<<1)+ch-'0';ch=getchar();}
return f*sum;
}
int n,k;
struct node{int x,y;}edge[1000010];
int main(){
n=gi();k=gi();
int tot=(n-2)*(n-1)/2,m=n-1;
for(int i=1;i<=m;i++)edge[i].x=n,edge[i].y=i;
if(k>tot)return puts("-1"),0;int now=2,Q=1;
n--;
while(tot!=k){
tot--;
edge[++m]=(node){now,(now+Q-1)%n+1};
now++;now=(now-1)%n+1;
if(now==2)Q++;
}
printf("%d\n",m);
for(int i=1;i<=m;i++)
printf("%d %d\n",edge[i].x,edge[i].y);
return 0;
}
TaskF Must Be Rectangular!
Solution
\(yyb\)就是神仙!!!
考虑把一个点的\(x,y\)分割,那么就相当于\(x\)->\(y\)连边,然后就有考虑一个联通块肯定可以搞成完全图,那么完全图的边数就是点数...
最后直接减去最初的点数就没了.
Code
/*
mail: mleautomaton@foxmail.com
author: MLEAutoMaton
This Code is made by MLEAutoMaton
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<iostream>
using namespace std;
#define ll long long
#define re register
#define file(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)
#define MAX 100100
inline int gi(){
int f=1,sum=0;char ch=getchar();
while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0' && ch<='9'){sum=(sum<<3)+(sum<<1)+ch-'0';ch=getchar();}
return f*sum;
}
int n,f[MAX<<1];
int getf(int x){return x==f[x]?x:f[x]=getf(f[x]);}
int sz1[MAX<<1],sz2[MAX<<1];
ll ans;
int main(){
n=gi();
for(int i=1;i<MAX+MAX;++i)f[i]=i;
for(int i=1;i<=n;++i)
{
int u=gi(),v=gi();
f[getf(u)]=getf(v+MAX);
}
for(int i=1;i<=MAX;++i)
sz1[getf(i)]+=1;
for(int i=MAX+1;i<MAX+MAX;++i)
sz2[getf(i)]+=1;
for(int i=1;i<MAX+MAX;++i)ans+=1ll*sz1[i]*sz2[i];
cout<<ans-n<<endl;
return 0;
}
AtCoder Beginner Contest 131 Solution的更多相关文章
- AtCoder Beginner Contest 114 Solution
A 753 Solved. #include <bits/stdc++.h> using namespace std; ]; int main() { mp[] = mp[] = mp[] ...
- AtCoder Beginner Contest 115 Solution
A Christmas Eve Eve Eve Solved. #include <bits/stdc++.h> using namespace std; int main() { int ...
- AtCoder Beginner Contest 131 Task F. Must Be Rectangular
Score: 600 points Approach 固定横坐标 $x$,考虑横坐标为 $x$ 的竖直线上最多可以有几个点. Observations 若最初两条竖直线 $x_1$.$x_2$ 上都有 ...
- AtCoder Beginner Contest 131 F - Must Be Rectangular!
题意:给出二维平面的n个点坐标,定义一种操作:若恰好三个点能形成一个矩形(当然这个矩形会缺了一个点),那么就在图上添加这个缺的点,问在原图上最多能进行几次这样的操作. 解法:这题想了挺久没想到,一看题 ...
- AtCoder Beginner Contest 053 ABCD题
A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...
- AtCoder Beginner Contest 068 ABCD题
A - ABCxxx Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement This contes ...
- AtCoder Beginner Contest 154 题解
人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...
- AtCoder Beginner Contest 238 A - F 题解
AtCoder Beginner Contest 238 \(A - F\) 题解 A - Exponential or Quadratic 题意 判断 \(2^n > n^2\)是否成立? S ...
- AtCoder Beginner Contest 100 2018/06/16
A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...
随机推荐
- 使用WinSXS进行系统盘瘦身Windows 7/2008/10/2012不断变大的C盘(Windows 更新清理)
这是一款非常给力的国产良心小工具,用阿里云ECS的时候,一个C盘没多久就被坑爹的微软更新沉余文件塞满.此工具简单好用一下搞定! 操作系统: 所有 NT 6.X 内核的操作系统.比如 Windows V ...
- mac+php+xdebug
1,下载xdebug 2,进入xdebug-2.4.0RC4目录,运行phpize命令, 2,google之后说要安装autoconf brew install autoconf 3,但是使用brew ...
- Rails5入门
更新: 2017/05/29 更新: 2017/09/07 补充对ruby自身的扩张的放置位置 配置文件位置 /config/routes.rb 最简单的定义方法 get ('hello/in ...
- url中传参数为中文的转码与解码解决方法
1.转码 中文为 “你好” var ProjectName = encodeURI(encodeURI("你好"));,如下图所示 跳转页面 window.location.h ...
- javascript实现引用数据类型的深拷贝和浅拷贝详解
关于引用类型值的详解,请看另一篇随笔 https://www.cnblogs.com/jinbang/p/10346584.html 深拷贝和浅拷贝,也就是引用数据类型栈和堆的知识点.深浅拷贝的原型都 ...
- 洛谷P3366 【模板】最小生成树(Kruskal)
题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz 输入输出格式 输入格式: 第一行包含两个整数N.M,表示该图共有N个结点和M条无向边.(N<=5000,M<= ...
- 仿QQ局域网聊天软件
1 目的 想复习一下TCP/IP协议,再结合一下以前学的Qt的知识,加上前段时间学的MySQL数据库操作,所以写了个"仿QQ局域网聊天软件"小项目,只实现了一部分功能,还没写完 ...
- 274 H-Index H指数
给定一位研究者的论文被引用次数的数组(被引用次数是非负整数).写一个方法计算出研究者的H指数.H-index定义: “一位科学家有指数 h 是指他(她)的 N 篇论文中至多有 h 篇论文,分别被引用了 ...
- git 删除分支如何恢复
强制删除了一个分支而后又想重新使用这个分支,该怎么找回该分支上的代码呢? 一:问题描述: 今天师父说上线几个功能,让我把开发的分支推送到远程.当打开git就傻眼了,之前开发好的分支被我删除了,就连推送 ...
- [Windows Server 2012] MySQL更改数据库引擎(MyISAM改为INNODB)
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:更改MyS ...