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. 字符串模版,替代原来Es5的+号拼装字符串

    字符串模版 这节我们主要学习ES6对字符串新增的操作,最重要的就是字符串模版,字符串模版的出现让我们再也不用拼接变量了,而且支持在模板里有简单计算操作.小伙伴们是不是已经摩拳擦掌等不急了那?那我们就开 ...

  2. 用yarn代替cnpm,cnpm漏包有点严重

    npm 的方式  npm  install  -g  yarn   安装完成后,你可以测试下自己的版本 yarn --version 开始使用 单独安装包的方式add 不是install,后面不用加 ...

  3. Unity3D学习笔记(二十九):AssetBundle

    AssetBundle 什么是AssetBundle? AssetBundle是把一些资源文件或场景文件,以某种方式保存在一个文件中.一个AssetBundle可以包含模型.材质.图片或场景等.但是A ...

  4. Linux命令1——a

    addUser: -c:备注 -d:登陆目录 -e:有效期限 -f:缓冲天数 -g:组 -b:用户目录 -G:附加组 -s:制定使用默认的shell -u:指定用户ID -r:建立系统账号 -M:不自 ...

  5. 嵌入式Linux要学哪些东西?你真的造吗?

    嵌入式Linux要学哪些?一些人总在寻思,怕走了弯路,又怕学的东西离企业需求远.那么今天就请华清远见高级讲师曹大神告诉你,9点浅析嵌入式学习步骤.下面是他本人亲笔. 1.要学习Linux,首先要会用, ...

  6. 手把手教你学习R语言

    本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开始,如何进行,选择什么学习资源.虽然网络上有许多不错的免费学习资源,然而它们多过了头,反 ...

  7. 删除node_modules文件

    删除node_modules文件夹报错:路径太长,无法删除. npm install rimraf -g rimraf node_modules

  8. Maven命令行创建java或javaWeb项目

    Maven命令行创建java或javaWeb项目   1.命令行创建普通java项目 mvn archetype:generate -DgroupId=com.fxust -DartifactId=d ...

  9. download 属性

    1.使用场景 对浏览器 识别/不识别 的文件下载 2.核心代码 var eleTextarea = document.querySelector('textarea'); var eleButton ...

  10. 用 JavaScript 将网站后台的数据变化实时更新到前端

    1.ajax短连接:客户端每隔一秒钟发一次请求,服务器收到请求后会立刻返回结果,不管有没有新数据.2.ajax长连接:客户端发送一次请求,服务器端收到请求后查询有没有新数据,如果没有新数据就阻塞这个请 ...