[CF1054C]Candies Distribution
题目:Candies Distribution
传送门:http://codeforces.com/problemset/problem/1054/C
分析:
方法一:
1)类似拓扑排序的做法。
2)当$L_i,R_i$均为$0$时,这个数就是当前最大的数,可以移除并且去掉他带来的影响,即左边的$R_i$减一,右边得$L_i$减一。
3)当$L_i,R_i$均为$0$时,就当这个点入度为$0$,移除影响就相当于去掉与其相邻的边。
#include <bits/stdc++.h>
using namespace std;
const int maxN=;
vector<int> tp;
int n,L[maxN],R[maxN],val[maxN];
int main() {
scanf("%d",&n);
for(int i=;i<=n;++i)scanf("%d",L+i);
for(int i=;i<=n;++i)scanf("%d",R+i);
int tn=n;
for(;;){
tp.clear();
for(int i=;i<=n;++i)
if(!L[i] && !R[i]){tp.push_back(i);val[i]=tn;L[i]=R[i]=-;}
if(tp.size()==)break;
tn-=tp.size();
for(auto it:tp){
for(int i=;i<it;++i)--R[i];
for(int i=it+;i<=n;++i)--L[i];
}
}
if(tn)puts("NO");
else{
puts("YES");
for (int i=;i<=n;++i)printf("%d ", val[i]);
}
return ;
}
方法二:
学到了一种神奇的构造。
4)如果这个序列是存在,第$i$个小朋友分糖数为$ n-(L_i-R_i) $必然是不会冲突的,检查这个序列,判断是否满足题意。
5)这道题事实上在询问有多少小朋友糖比自己多,无论最终分糖方案是什么,得到相同糖的小朋友的分组是一样的。
#include<bits/stdc++.h>
using namespace std;
const int N = ;
int L[N],R[N],res[N];
int main(){
int n;scanf("%d",&n);
for(int i=;i<=n;++i)scanf("%d",L+i);
for(int i=;i<=n;++i)scanf("%d",R+i);
for(int i=;i<=n;++i)res[i]=n-L[i]-R[i];
for(int i=;i<=n;++i)
for(int j=i+;j<=n;++j){
R[i]-=res[j]>res[i];
L[j]-=res[j]<res[i];
}
for(int i=;i<=n;++i)
if(L[i]||R[i]){puts("NO");return ;}
puts("YES");
for(int i=;i<=n;++i)printf("%d ",res[i]);
return ;
}
如果保证有合法解,求一种可行解,然后范围又极大,可以用第二种方法直接构造呀
[CF1054C]Candies Distribution的更多相关文章
- [题解]Mail.Ru Cup 2018 Round 1 - C. Candies Distribution
[题目] C. Candies Distribution [描述] n个小朋友排排坐吃糖糖,小朋友从左到右编号1到n.每个小朋友手上有一定数量的糖.对于第i个小朋友来说,编号比他小的小朋友中有li个小 ...
- Mail.Ru Cup 2018 Round 1
A. Elevator or Stairs? 签. #include <bits/stdc++.h> using namespace std; ]; int main() { while ...
- poj 3159 Candies 差分约束
Candies Time Limit: 1500MS Memory Limit: 131072K Total Submissions: 22177 Accepted: 5936 Descrip ...
- POJ 3159 Candies (栈优化spfa)
Candies 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/J Description During the kinderga ...
- POJ 3159 Candies(差分约束,最短路)
Candies Time Limit: 1500MS Memory Limit: 131072K Total Submissions: 20067 Accepted: 5293 Descrip ...
- (poj)3159 Candies
题目链接:http://poj.org/problem?id=3159 Description During the kindergarten days, flymouse was the monit ...
- poj 3159 Candies
Candies Time Limit: 1500MS Memory Limit: 131072K Total Submissions: 25776 Accepted: 7033 Descrip ...
- poj3159 Candies(差分约束)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Candies Time Limit: 1500MS Memory Limit ...
- (简单) POJ 3159 Candies,Dijkstra+差分约束。
Description During the kindergarten days, flymouse was the monitor of his class. Occasionally the he ...
随机推荐
- Jmeter响应数据显示乱码问题
Jmeter在访问接口的时候,响应内容如果有中文可能会显示乱码,原因应该是响应页面没有做编码处理,jmeter默认按照ISO-8859-1编码格式进行解析. 解决步骤: 现象:jmeter访问本地文件 ...
- 最全的DevOps自动化工具集合
版本控制&协作开发:GitHub.GitLab.BitBucket.SubVersion.Coding.Bazaar 自动化构建和测试:Apache Ant.Maven .Selenium.P ...
- win10上的Django项目实现内网映射
网上有很多关于django项目发布uwsgi模块在 windows上的下载以及安装过程, 可是他们也并没有真正的在windows上使用到这个模块(至少目前在网上还没看到过), 而大部分人就是在Djan ...
- ASP.NET服务器控件Menu
http://www.cnblogs.com/huc87/archive/2009/04/05/1429831.html ASP.NET服务器控件Menu 1. ASP.NET 服务器控件 ...
- 第7天:Django模板使用与表单
模板的配置 作为web框架,Django提供了模板,用于编写html代码,模板的设计实现了业务逻辑view与现实内容template的解耦.模板包含两部分: 静态部分: 包含html.css.js 动 ...
- 32. Longest Valid Parentheses (JAVA)
Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...
- nsswitch.conf - 系统数据库及名字服务开关配置文件
DESCRIPTION C 程序库里很多函数都需要配置以便能在本地环境正常工作, 习惯上是使用文件(例如`/etc/passwd') 来完成这一任务. 但别的名字服务, 如网络信息服务NIS, 还有域 ...
- Nginx优化_数据包头部信息过大问题
如果客户端发出请求的URL头部信息过大,网站将不能及时响应,并通过状态码414报错. <center><h1>414 Request-URI Too Large</h1& ...
- css实现div内凹角样式
平常的开发中我们一般使用到圆角都是外凸的,即border-radius属性.而如果有内凹角的情况,我们一般的考虑实现方法有2种.一种是直接使用背景图片,一种是使用css. 用到的属性则是backgro ...
- Codeforces 961 容斥叉积判共线 树状数组递增思想题
A B C D 给你N个点 问你能不能有两条直线穿过这N个点 首先假设这N个点是可以被两条直线穿过的 所以两条直线就把这N个点划分成两个集合 我们取1 2 3三个点这样必定会有两个点在一个集合内 ch ...