Codeforces Round #503 Div. 2
时间相对来说还是比较合适的,正好放假就可以打一打啦。
A. New Building for SIS:http://codeforces.com/contest/1020/problem/A
题意概述:有n座楼,每座楼有h层。上一层楼和下一层楼各需要一分钟,在a,b两层之间有跨楼的通道,每次可以走到相邻的楼,时间也是一分钟,给出k组询问,求每组点对之间的最小时间。
打CF学英语。一开始看起来像是最短路,但是画画图就发现并没有那么复杂,首先两栋楼之间的那一段是无论如何都要走的,关键是a,b的限制,其实也很简单,如果楼层高的那个比a低,或者楼层低的那个比b高,就先都走到a层或b层,其他时间直接用大的减去小的就可以。还要注意一点就是如果两个点本来就在同一栋楼上就不用考虑a,b的限制可以直接走。因为这个浪费了两次提交次数...
# include <cstdio>
# include <iostream> using namespace std; int n,h,a,b,k;
int ta,fa,tb,fb;
int ans; int main()
{
scanf("%d%d%d%d%d",&n,&h,&a,&b,&k);
if(a>b) swap(a,b);
for (int i=;i<=k;++i)
{
scanf("%d%d%d%d",&ta,&fa,&tb,&fb);
ans=max(ta,tb)-min(ta,tb);
if(fa>fb) swap(fa,fb); if(ta!=tb)
{
if(fb<a) ans+=a-fa+a-fb;
else if(fa>b) ans+=fa-b+fb-b;
else ans+=fb-fa;
}
else ans+=fb-fa;
printf("%d\n",ans);
}
return ;
}
A-New Building for SIS
B. Badge:http://codeforces.com/contest/1020/problem/B
题意概述:并不想概述。
数据范围比较小,直接$N^2$模拟。
# include <cstdio>
# include <iostream>
# include <cstring> using namespace std; int n,x,ans;
int p[];
bool vis[]; int main()
{
scanf("%d",&n);
for (int i=;i<=n;++i)
scanf("%d",&p[i]);
for (int i=;i<=n;++i)
{
memset(vis,,sizeof(vis));
x=i;
while ()
{
if(vis[x])
{
ans=x;
break;
}
vis[x]=true;
x=p[x];
}
printf("%d ",ans);
}
return ;
}
B-Badge
C. Elections:http://codeforces.com/contest/1020/problem/C
题意概述:有n个学生,m个政党,每个学生有支持的政党,但是如果你给他一些钱,他就可以给你想让他投的党投票,现在想付出最少的钱使得1政党有绝对优势(票数严格大于其他党)。$1<=n,m<=3000$
有一种贪心策略是一直收买所需钱最少的学生直到符合条件,但是这样显然是有点问题的,有可能其实只用收买一个收钱多的使得他的政党失败就可以了,但是却收买了许多所需钱虽然少但是无关紧要的人。关键是1号的票数没有确定使得难以贪心,所以考虑枚举最终票数。枚举完票数就开始处理,把每个党超过这个票数且收钱最少的人收买过来,如果这些人都收买完了可是还没有达到预定的票数,就一直收买之前还没有收买过的学生直到人数达标。开long long。
# include <cstdio>
# include <iostream>
# include <cstring>
# include <algorithm> using namespace std; int n,m,ns,cnt[],Sum[];
struct peo
{
int p,c,rk;
}a[];
struct val
{
int rk,v;
}b[];
bool vis[];
long long min_ans=-,ans; bool cmpa (peo a,peo b)
{
if(a.p==b.p) return a.c<b.c;
return a.p<b.p;
} bool cmpb (val a,val b)
{
return a.v<b.v;
} int main()
{
scanf("%d%d",&n,&m);
for (int i=;i<=n;++i)
{
scanf("%d%d",&a[i].p,&a[i].c);
a[i].rk=i;
b[i].rk=i;
b[i].v=a[i].c;
}
sort(a+,a++n,cmpa);
sort(b+,b++n,cmpb);
for (int i=;i<=n;++i)
Sum[ a[i].p ]++;
for (int s=;s<=n;++s)
{
ns=;
ans=;
memset(vis,,sizeof(vis));
memset(cnt,,sizeof(cnt));
for (int j=;j<=n;++j)
{
if(a[j].p==) ns++,vis[ a[j].rk ]=true;
else
{
if(Sum[ a[j].p ]-cnt[ a[j].p ]>=s)
{
vis[ a[j].rk ]=true;
cnt[ a[j].p ]++;
ans+=a[j].c;
ns++;
}
}
}
for (int i=;i<=n;++i)
{
if(ns>=s) break;
if(vis[ b[i].rk ]) continue;
ns++;
ans+=b[i].v;
}
if(min_ans==-) min_ans=ans;
min_ans=min(ans,min_ans);
}
cout<<min_ans;
return ;
}
C-Elections
D. The Hat:http://codeforces.com/contest/1020/problem/D
交互题,不会做。
题意概述:n个人排成一个圈。发给每个人一张纸条,问有没有两个正好相对的人拿到了一样的纸条。题意清晰易懂,但是交互部分看不懂,为什么还能返回负数呢...?
E. Sergey's problem:http://codeforces.com/contest/1020/problem/E
题意概述:一个有向无自环图中选出一些点,使得这些点两两间没有连边,且从这些点出发可以用1或2步到达其他所有没被选到的点,有重边。
考试的时候想了好久不会做,赛后看了其他人的代码发现此题做法很奇特,而且至今也没有明白这样做为什么能对。首先贪心的选出一些点使得没选到的点都可以走一步到达,再跑反图贪心地去掉有边相连的点。emmm所以这样怎么就对了呢...虽然找不到反例但是不是很懂,等过几天也许就有详细的题解了吧。
# include <cstdio>
# include <iostream>
# define R register int using namespace std; const int maxn=;
int firs[maxn],x,y,n,m,h,cnt,cs[maxn],re[maxn];
struct edge
{
int too,nex;
}g[maxn]; int read()
{
int x=;
char c=getchar();
while (!isdigit(c))
c=getchar();
while (isdigit(c))
{
x=(x<<)+(x<<)+(c^);
c=getchar();
}
return x;
} void write (int x)
{
if(x>=) write(x/);
putchar(x%+'');
} void add (int x,int y)
{
g[++h].too=y;
g[h].nex=firs[x];
firs[x]=h;
} int main()
{
scanf("%d%d",&n,&m);
for (R i=;i<=m;++i)
{
x=read(),y=read();
add(x,y);
}
for (R i=;i<=n;++i)
if(!re[i])
{
re[i]=i;
for (R j=firs[i];j;j=g[j].nex)
if(!re[ g[j].too ]) re[ g[j].too ]=i;
cs[i]=true;
}
for (R i=n;i>=;--i)
if(re[i]==i)
if(cs[i])
{
for (R j=firs[i];j;j=g[j].nex)
cs[ g[j].too ]=false;
}
for (R i=;i<=n;++i)
if(cs[i]) cnt++;
printf("%d\n",cnt);
for (R i=;i<=n;++i)
if(cs[i])
{
write(i);
putchar(' ');
}
return ;
}
E-Sergey's problem
---shzr
Codeforces Round #503 Div. 2的更多相关文章
- 【Codeforces Round #503 (Div. 2)】
A:https://www.cnblogs.com/myx12345/p/9843198.html B:https://www.cnblogs.com/myx12345/p/9843245.html ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
- Codeforces Round #262 (Div. 2) 1003
Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...
- Codeforces Round #262 (Div. 2) 1004
Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...
- Codeforces Round #371 (Div. 1)
A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...
随机推荐
- 让 VS2010 支持 HTML5 和 CSS3.0
现在的热门话题之一是HTML5 和 CSS3.好的, 它们都很时髦,它们也必然会影响网络开发的未来. 让我们尝尝鲜,花点时间安装设置一下,尽快让Visual Studio2010支持HTML5 和 C ...
- elasticsearch6.7 05. Document APIs(2)Index API
Single document APIs Index API Get API Delete API Update API Multi-document APIs Multi Get API Bulk ...
- Mycat入门配置_读写分离配置
1.Mycat的分片 两台数据库服务器: 192.168.80.11 192.168.80.4 操作系统版本环境:centos6.5 数据库版本:5.6 mycat版本:1.4 release 数据库 ...
- AngularJS图片上传功能实践
逻辑理清楚了:service提供FileReader函数,directive提供点击事件的绑定和监听,controller用来修改html上的ng-src属性值 1.HTML <input ty ...
- 手把手在MyEclipse中搭建Hibernate开发环境
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53414303冷血之心的博客) 在MyEclipse中如何搭建Hib ...
- ebook
libgen.io onlybooks.org www.ebook3000.com www.foxebook.net
- VMware Linux虚拟机与WIN7操作系统共享无线网络上网配置
Linux虚拟机与WIN7操作系统共享无线网络上网配置 by:授客 QQ:1033553122 测试环境: CentOS-7-x86_64-DVD-1503-01.iso Vmware 9 实践操作: ...
- SQLServer 常见SQL函数
SQL Server SQL函数 by:授客 QQ:1033553122 字符函数 日期函数 数学函数 系统函数
- Swagger使用教程 SwashbuckleEx
一.前言 自从之前写了一篇<Webapi文档描述-swagger优化>这篇文章后,欠了大家一篇使用文档的说明,现在给大家补上哈. 二.环境 .Net Framework 4.5 WebAp ...
- Jenkins自动构建的几种方式
1.远程URL构建 在任务配置处的构建触发器中选择远程触发,例如,在下图框中输入abc,则只需要在网页上输入地址:Jenkins_URL/job/工程名/build?token=abc 2.利用cur ...