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的更多相关文章

  1. 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 ...

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

  3. 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 ...

  4. 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 ...

  5. Educational Codeforces Round 55 (Rated for Div. 2):E. Increasing Frequency

    E. Increasing Frequency 题目链接:https://codeforces.com/contest/1082/problem/E 题意: 给出n个数以及一个c,现在可以对一个区间上 ...

  6. Educational Codeforces Round 55 (Rated for Div. 2):D. Maximum Diameter Graph

    D. Maximum Diameter Graph 题目链接:https://codeforces.com/contest/1082/problem/D 题意: 给出n个点的最大入度数,要求添加边构成 ...

  7. Educational Codeforces Round 55 (Rated for Div. 2):C. Multi-Subject Competition

    C. Multi-Subject Competition 题目链接:https://codeforces.com/contest/1082/problem/C 题意: 给出n个信息,每个信息包含专业编 ...

  8. Educational Codeforces Round 55 (Rated for Div. 2)E

    题:https://codeforces.com/contest/1082/problem/E 题意:给出n个数和一个数c,只能操作一次将[L,R]之间的数+任意数,问最后该序列中能存在最多多少个c ...

  9. Educational Codeforces Round 55 (Rated for Div. 2)

    D. Maximum Diameter Graph 题意 给出每个点的最大度,构造直径尽可能长的树 思路 让度数大于$1$的点构成链,考虑是否能在链的两端加度为$1$的点 代码 #include &l ...

随机推荐

  1. (转载)C#:Form1_Load()不被执行的三个解决方法

    我的第一个c#练习程序,果然又出现问题了...在Form1_Load() not work.估计我的人品又出现问题了. 下面实现的功能很简单,就是声明一个label1然后,把它初始化赋值为hello, ...

  2. mybatis配置文件namespace用法总结

    本文为博主原创,未经允许不得转载: 由于在应用过程中,发现namespace在配置文件中的重要性,以及配置的影响,在网上看了很多博客,发现很多人对namespace存在误解, 所以总结一下namesp ...

  3. JS 上下文模式

    function test(){ console.log(a);//undefined; var a = 1; } test(); 也许你会遇到过上面这样的面试题,你只知道它考的是变量提升,但是具体的 ...

  4. BOM - 浏览器API

     1,javascript   组成部分: 1.ECMAscript(核心标准):    定义了基本的语法,比如:if for 数组 字符串 ... 2.BOM  : 浏览器对象模型(Browser ...

  5. EDCheckPrefabRef

    using UnityEngine;using System.Collections;using UnityEditor;using UnityEngine.UI;using System.Refle ...

  6. 烽火HG220G-U E00L2.03M2000光猫改桥接教程

    烽火HG220G-U E00L2.03M2000光猫改桥接教程 P.S. 此教程同样适用于HG221G/HG260G-U/HG261G.(2016.12) 随着北京联通从原有的ONU升级到HGU之后, ...

  7. Spring官网下载各版本jar包

    1:浏览器输入官网地址:http://spring.io/projects 2:点击如图树叶页面按钮.  3:点击如图小猫图片按钮.  4:查找downloading spring artifacts ...

  8. 第 8 章 容器网络 - 049 - 准备 Overlay 网络实验环境

    overlay环境准备 在docker-machine (10.12.31.21)的基础上 docker主机 host1 (10.12.31.22) host2 (10.12.31.23) 在dock ...

  9. redhat 7.0 配置Bond

    把/etc/sysconfig/network-scripts/目录下的ifcfg-bond*文件手动移动到/tmp目录. 重启网络:systemctl restart NetworkManager ...

  10. Getting started with Processing 第十三章——延伸(1)

    导入库: 导入库的名称为:import processing.libName.* 声音 播放声音 支持的格式:wav,aiff,mp3声明: SoundFile blip;创建:blip = new ...