题目: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 ;
}

如果保证有合法解,求一种可行解,然后范围又极大,可以用第二种方法直接构造呀

最新文章

  1. boost.python笔记
  2. Linux命令学习总结:date命令
  3. 调试一个socket通信bug的心理过程和反思
  4. sass2:
  5. phar文件的使用
  6. Apache htpasswd命令用法详解
  7. android 第三方 Im
  8. UNIX-LINUX编程实践教程-&gt;第八章-&gt;实例代码注解-&gt;写一个简单的shell
  9. Apache Mina 入门实例
  10. poj3714Raid(平面最近点对)
  11. redhat enterprixe 5.0 DNS 服务配置与管理
  12. day3-Python集合、函数、文件操作,python包的概念
  13. w3c_html_study_note_5.26
  14. [转载]IIS下开启php扩展失效? 感谢作者 本人泪流满面
  15. JqueryUI 为什么TypeError: $(...).slides is not a function
  16. 基于Js实现的UrlEncode和UrlDecode函数代码
  17. JAVA17.1.12流程学习,潜心学习,少说多做,脚踏实地,一心一意。
  18. Spring.NET 的IOC(依赖注入)
  19. jackson把json转换成LIst
  20. vb越界

热门文章

  1. springboot swagger教程&#128512;
  2. Aliyun-Centos 7 LNMP安装(最新版LNMP)
  3. PHP 堆 栈 数据段 代码段 存储的理解
  4. [LeetCode] 82. 删除排序链表中的重复元素 II
  5. SCUT - 485 - 质因数计数 - 原根
  6. HBase Shell 的常用操作总结
  7. 同步锁 synchronized
  8. 【学习总结】快速上手Linux玩转典型应用-第4章-准备工作
  9. 自定义UICollectionLayout
  10. mailstats - 显示邮件状态信息