Educational Codeforces Round 55 (Rated for Div. 2) A/B/C/D
http://codeforces.com/contest/1082/problem/A
WA数发,因为默认为x<y = =
分情况讨论,直达 or x->1->y or x->n->y 取最小值。
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define inf 0x3f3f3f3f
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
//#define debug
int main(){
#ifdef debug
ifstream cin("C:/Users/Administrator/Desktop/test/in.txt");
#endif debug
LL t;
cin>>t;
while(t--){
LL n,x,y,d;
cin>>n>>x>>y>>d;
if(abs(y-x)%d==){
cout<<abs(y-x)/d<<endl;
}
else{
bool ok=;
LL ans=;
if((y-)%d==){
ok=;
ans=min(ans,(y-)/d+(LL)(ceil(1.0*(x-)/d)));
}
if((n-y)%d==){
ok=;
ans=min(ans,(n-y)/d+(LL)(ceil(1.0*(n-x)/d)));
}
if(ok==){
cout<<-<<endl;
}
else{
cout<<ans<<endl;
}
}
}
return ;
}
http://codeforces.com/contest/1082/problem/B
预处理G个数的前后缀长度,然后枚举所有S,考虑交换能达到的最大值。
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define inf 0x3f3f3f3f
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
//#define debug
void f(){
char s[];
int l[]={},r[]={};
int n,G=,S=,ans=;
cin>>n>>s+;
for(int i=;i<=n;++i){
if(s[i]=='S') l[i]=,S++;
else l[i]=l[i-]+,G++;
if(l[i]>ans)ans=l[i];
}
r[n+]=;
for(int i=n;i>=;--i){
if (s[i]=='S') r[i]=;
else r[i]=r[i+]+;
}
if(S<){
cout<<n-S<<endl;
return;
}
for(int i=;i<=n;++i){
if(s[i]=='S'){
ans=max(ans,l[i-]+r[i+]+);
}
}
if(ans>G)ans=G;
cout<<ans<<endl; }
int main(){
#ifdef debug
ifstream cin("C:/Users/Administrator/Desktop/test/in.txt");
#endif debug
f();
return ;
}
http://codeforces.com/contest/1082/problem/C
C的题意是给出n个人的专长(m种)si和对应的熟练度ri,挑出一部分人组成一个团体,要求团体中每个不同的专长对应的人数一致。求使得团队熟练度总和最大是多少。
对专长进行分类,然后按照熟练度降序求前缀和。然后枚举不同专长对应的人数即可,需要注意的是有一个优化是对专长人数进行降序排列后再进行查找会节省很多时间,因为当到达某个专长时的人数不足以满足,可以及时的break。
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define inf 0x3f3f3f3f
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
//#define debug
LL s[],r[],x[];
std::vector<LL> v[];
bool cmp(int i,int j){
return v[i].size()>v[j].size();
}
int main(){
#ifdef debug
ifstream cin("C:/Users/Administrator/Desktop/test/in.txt");
#endif debug
LL n,m;
cin>>n>>m;
//for(int i=1;i<=m;++i)v[i].push_back(0);
for(int i=;i<=n;++i){
//cin>>s[i]>>r[i];
scanf("%lld%lld",s+i,r+i);
v[s[i]].push_back(r[i]);
}
int maxn=;
for(int i=;i<=m;++i){
sort(v[i].begin(),v[i].end(),greater<LL>());
maxn=max(maxn,(int)(v[i].size()));
}
LL ans=;
for(int i=;i<=m;++i){
x[i]=i;
for(int j=;j<v[i].size();++j){
v[i][j]+=v[i][j-];
}
}
sort(x+,x++m,cmp);
for(int i=;i<=maxn;++i){
LL tmp=;
for(int j=;j<=m&&v[x[j]].size()>=i;++j){
if(v[x[j]][i-]>) tmp+=v[x[j]][i-];
}
if(tmp>ans)ans=tmp;
}
cout<<ans<<endl;
return ;
}
http://codeforces.com/contest/1082/problem/D
D题的题意是给出n个点以及他们的度数,询问是否可以构造出一幅无自环无重边的无向图且使得任意两点最短距离的最大值尽可能的大。
其实是个很简单的构造题,按照度数降序排列之后,先尽可能的组成一条链,然后看看剩下的孤独点是否可以加在树上即可。
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define inf 0x3f3f3f3f
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
struct node
{
int id,a;
}x[];
bool cmpa(node A,node B){return A.a>B.a;}
std::vector<int> g[];
void add(int i,int j){
g[i].push_back(j);
g[j].push_back(i);
}
int main(){
int n,i,j,m=;
cin>>n;
for(i=;i<=n;++i){
x[i].id=i;
cin>>x[i].a;
}
sort(x+,x++n,cmpa);
int l=;
for(i=;i<=n;i++){
x[i].a--,x[i-].a--;
add(x[i].id,x[i-].id);
m++;
l++;
if(x[i].a==)break;
}
int md=i++;
int o=;
while(i<=n){
bool ok=;
for(j=;j<=md;++j){
if(x[j].a>=){
o=;
ok=;
x[j].a--;
x[i].a--;
add(x[i].id,x[j].id);
i++;m++;
break;
}
}
if(!ok)break;
}
l+=o;
if(i<=n){puts("NO");}
else{
cout<<"YES "<<l<<endl;
cout<<m<<endl;
for(i=;i<=n;++i){
for(j=;j<g[i].size();++j){
if(g[i][j]>i){
cout<<i<<' '<<g[i][j]<<endl;
}
}
}
}
return ;
}
Educational Codeforces Round 55 (Rated for Div. 2) A/B/C/D的更多相关文章
- Educational Codeforces Round 55 (Rated for Div. 2) C. Multi-Subject Competition 【vector 预处理优化】
传送门:http://codeforces.com/contest/1082/problem/C C. Multi-Subject Competition time limit per test 2 ...
- Educational Codeforces Round 55 (Rated for Div. 2) B. Vova and Trophies 【贪心 】
传送门:http://codeforces.com/contest/1082/problem/B B. Vova and Trophies time limit per test 2 seconds ...
- Codeforces 1082 C. Multi-Subject Competition-有点意思 (Educational Codeforces Round 55 (Rated for Div. 2))
C. Multi-Subject Competition time limit per test 2 seconds memory limit per test 256 megabytes input ...
- Codeforces 1082 A. Vasya and Book-题意 (Educational Codeforces Round 55 (Rated for Div. 2))
A. Vasya and Book time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- Educational Codeforces Round 55 (Rated for Div. 2):E. Increasing Frequency
E. Increasing Frequency 题目链接:https://codeforces.com/contest/1082/problem/E 题意: 给出n个数以及一个c,现在可以对一个区间上 ...
- Educational Codeforces Round 55 (Rated for Div. 2):D. Maximum Diameter Graph
D. Maximum Diameter Graph 题目链接:https://codeforces.com/contest/1082/problem/D 题意: 给出n个点的最大入度数,要求添加边构成 ...
- Educational Codeforces Round 55 (Rated for Div. 2):C. Multi-Subject Competition
C. Multi-Subject Competition 题目链接:https://codeforces.com/contest/1082/problem/C 题意: 给出n个信息,每个信息包含专业编 ...
- Educational Codeforces Round 55 (Rated for Div. 2)E
题:https://codeforces.com/contest/1082/problem/E 题意:给出n个数和一个数c,只能操作一次将[L,R]之间的数+任意数,问最后该序列中能存在最多多少个c ...
- Educational Codeforces Round 55 (Rated for Div. 2)
D. Maximum Diameter Graph 题意 给出每个点的最大度,构造直径尽可能长的树 思路 让度数大于$1$的点构成链,考虑是否能在链的两端加度为$1$的点 代码 #include &l ...
随机推荐
- 说明Heap与stack的差别。
Heap 是堆,Stack 是栈. 栈与堆都是Java用来在Ram中存放数据的地方,与C++不同,Java会自动管理栈与堆,程序员不能直接设置栈与堆. Java的堆是一个运行时的数据区,类的对象从中分 ...
- 在mybatis中resultMap与resultType的区别
MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMapresultType是直接表示返回类型的,而resultMap则是对外部ResultMa ...
- Installation Guide of Ubuntu 14.04, 64bit on Dell Server
Installation Guide of Ubuntu 14.04, 64bit on Dell Server 准备:U盘(已通过ultraiso刻录ISO镜像). 1.插入U盘: 2.启动服务器, ...
- 程序修改图标后显示未更新——强制刷新windows图标缓存
http://blog.csdn.net/vvlowkey/article/details/51133486 20160412 问题:修改兴迪局放测量软件图标后,release文件夹中生成文件的小图标 ...
- 正则解析json数据
http://tool.chinaz.com/regex http://tool.oschina.net/regex/
- JQGrid 在页面加载时展开SubGrid
1.jqgrid在加载完成之后展开SubGrid,用得如下办法: gridComplete: function () { var rowIds = $("#list2").getD ...
- xdg-open命令智能打开各种格式的文件
在linux中,通常用命令行打开文本文件,比如用命令gedit.more.cat.vim.less.但当需要打开其他格式文件时,比如pdf.jpg.mp3格式文件,咱们通常做法是进入到文件所在的目录, ...
- 树莓派 无屏幕 安装Ubuntu系统 无头安装 无显示器 用网线
能看到此篇博客的人说明都尝试失败了,会发现内存卡刷入Ubuntu后,无法通过ssh操作树莓派.是因为官方的ubuntu系统在初次运行时需要设定一些东西,类似windows第一次启动也需要设置那样,如果 ...
- Codeforces 729E Subordinates
题目链接:http://codeforces.com/problemset/problem/729/E 既然每一个人都有一个顶头上司,考虑一个问题: 如果这些人中具有上司数目最多的人有$x$个上司,那 ...
- javascript 创建video元素
<!DOCTYPE html> <html> <body> <h3>演示如何创建 VIDEO 元素</h3> <p>请点击按钮来 ...