题目: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$,移除影响就相当于去掉与其相邻的边。

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int maxN=;
  4. vector<int> tp;
  5. int n,L[maxN],R[maxN],val[maxN];
  6. int main() {
  7. scanf("%d",&n);
  8. for(int i=;i<=n;++i)scanf("%d",L+i);
  9. for(int i=;i<=n;++i)scanf("%d",R+i);
  10. int tn=n;
  11. for(;;){
  12. tp.clear();
  13. for(int i=;i<=n;++i)
  14. if(!L[i] && !R[i]){tp.push_back(i);val[i]=tn;L[i]=R[i]=-;}
  15. if(tp.size()==)break;
  16. tn-=tp.size();
  17. for(auto it:tp){
  18. for(int i=;i<it;++i)--R[i];
  19. for(int i=it+;i<=n;++i)--L[i];
  20. }
  21. }
  22. if(tn)puts("NO");
  23. else{
  24. puts("YES");
  25. for (int i=;i<=n;++i)printf("%d ", val[i]);
  26. }
  27. return ;
  28. }

方法二:

学到了一种神奇的构造。

4)如果这个序列是存在,第$i$个小朋友分糖数为$ n-(L_i-R_i) $必然是不会冲突的,检查这个序列,判断是否满足题意。

5)这道题事实上在询问有多少小朋友糖比自己多,无论最终分糖方案是什么,得到相同糖的小朋友的分组是一样的。

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N = ;
  4. int L[N],R[N],res[N];
  5. int main(){
  6. int n;scanf("%d",&n);
  7. for(int i=;i<=n;++i)scanf("%d",L+i);
  8. for(int i=;i<=n;++i)scanf("%d",R+i);
  9. for(int i=;i<=n;++i)res[i]=n-L[i]-R[i];
  10. for(int i=;i<=n;++i)
  11. for(int j=i+;j<=n;++j){
  12. R[i]-=res[j]>res[i];
  13. L[j]-=res[j]<res[i];
  14. }
  15. for(int i=;i<=n;++i)
  16. if(L[i]||R[i]){puts("NO");return ;}
  17. puts("YES");
  18. for(int i=;i<=n;++i)printf("%d ",res[i]);
  19. return ;
  20. }

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

[CF1054C]Candies Distribution的更多相关文章

  1. [题解]Mail.Ru Cup 2018 Round 1 - C. Candies Distribution

    [题目] C. Candies Distribution [描述] n个小朋友排排坐吃糖糖,小朋友从左到右编号1到n.每个小朋友手上有一定数量的糖.对于第i个小朋友来说,编号比他小的小朋友中有li个小 ...

  2. Mail.Ru Cup 2018 Round 1

    A. Elevator or Stairs? 签. #include <bits/stdc++.h> using namespace std; ]; int main() { while ...

  3. poj 3159 Candies 差分约束

    Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 22177   Accepted: 5936 Descrip ...

  4. POJ 3159 Candies (栈优化spfa)

    Candies 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/J Description During the kinderga ...

  5. POJ 3159 Candies(差分约束,最短路)

    Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 20067   Accepted: 5293 Descrip ...

  6. (poj)3159 Candies

    题目链接:http://poj.org/problem?id=3159 Description During the kindergarten days, flymouse was the monit ...

  7. poj 3159 Candies

    Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 25776   Accepted: 7033 Descrip ...

  8. poj3159 Candies(差分约束)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Candies Time Limit: 1500MS   Memory Limit ...

  9. (简单) POJ 3159 Candies,Dijkstra+差分约束。

    Description During the kindergarten days, flymouse was the monitor of his class. Occasionally the he ...

随机推荐

  1. linux应用程序启动时加载库错误问题

    ldd text查看依赖库 ln -s /lib64/libpcre.so.0 /usr/local/lib/libpcre.so做软连接

  2. C语言I-博客作业05

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 C语言1博客作业05 我在这个课程的目标是 学会运用函数编代码 这个作业在那个具体方面帮助我实现目标 写C语言作业的时候,编代码的实践中 ...

  3. [转帖]IDC发布2018下半年中国公有云市场报告

    IDC发布2018下半年中国公有云市场报告:AWS以6.4%的份额名列第四 http://www.itpub.net/2019/05/06/1793/ 电信的公有云 好像是用的 华为的技术. AWS在 ...

  4. sprintf()函数可能发生的错误

    接收到如下数据: GET http://app.tdvpn.com/heartbeat?mac=898607B81017AT+CIPSTATUS? &status=/ HTTP/1.1 Hos ...

  5. GUI自动化测试中优化测试用例思维方法

    1.测试脚本与数据解耦(数据驱动) 让操作相同但是数据不同的测试可以通过同一 套自动化测试脚本来实现,只是在每次测试执行时提供不同的测试输入数据. 2.页面对象模型(POM) 以页面为单位来封装页面上 ...

  6. 简述COOKIE和SESSION的区别与联系?

    cookie 和session 的区别:1.cookie数据存放在客户的浏览器上,session数据放在服务器上.2.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 ...

  7. 有十个div,怎样实现选中其中一个,改变其背景色,另外九个不变,当选中另一个时又改变另一个的背景色

    这个是jq写的,可以自己下载一个js库,配上这个就可以了,里面的div可以用class控制,比如你10个div class为a1 也就是<div class="a1"> ...

  8. 分布式系统中唯一 ID 的生成方法

    在分布式系统存在多个 Shard 的场景中, 同时在各个 Shard 插入数据时, 怎么给这些数据生成全局的 unique ID? 在单机系统中 (例如一个 MySQL 实例), unique ID ...

  9. JavaScript是如何工作的:引擎,运行时间以及调用栈的概述

    JavaScript是如何工作的:引擎,运行时以及调用栈的概述 原文:How JavaScript works: an overview of the engine, the runtime, and ...

  10. express与koa对比

    使用体验koaconst Koa = require('koa');const app = new Koa();app.use(ctx => { ctx.body = 'Hello Koa'; ...