题目: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的更多相关文章

  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. [DS+Algo] 010 二叉树的遍历

    二叉树遍历 深度优先 一般用递归 一些名词 遍历方式 英文 先序 Preorder 中序 Inorder 后序 Postorder 广度优先 一般用队列 Python 代码示例 class Node( ...

  2. iview报错[Vue warn]: Error in render: "TypeError: ctx.injections.tableRoot.$scopedSlots[ctx.props.column.slot] is not a function"

    原因是我使用了iview的<Table>组件,我给Table组件的columns中定义了4个含有slot的列,但是实际在<Table>中只使用了其中3个,导致的报错. 也就是说 ...

  3. Linux 创建与删除(5)

    相对于Windows下的右键新建文件与删除,我更喜爱Linux下的命令式创建与删除,真的方便.不过Windows下也可以借助工具来实现,比如git bash.cmder等等终端工具. 创建文件 新建文 ...

  4. gcc编译工具生成动态库和静态库

    一. 库的分类 1.1. 静态库(.a) 1.1.1. 静态库的代码在编译过程中已经被载入可执行程序,因此体积比较大.所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 1. ...

  5. Codeforces 1262E Arson In Berland Forest(二维前缀和+二维差分+二分)

     题意是需要求最大的扩散时间,最后输出的是一开始的火源点,那么我们比较容易想到的是二分找最大值,但是我们在这满足这样的点的时候可以发现,在当前扩散时间k下,以这个点为中心的(2k+1)2的正方形块内必 ...

  6. 思维体操: HDU1022Train Problem I

    Train Problem I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  7. How to download and compile Android kernel goldfish ?

    Prerequisites Assuming that we already downloaded the android-ndk-r12b and sdk. w4118@w4118:~/utils$ ...

  8. 打印Java main参数

    public class Main { public static void main(String args[]){ System.out.println("打印main方法中的输入参数, ...

  9. Paper Reading_Computer Architecture

    最近(以及预感接下来的一年)会读很多很多的paper......不如开个帖子记录一下读paper心得 Computer Architecture Last level cache (llc) perf ...

  10. pip和pip3的区别

    安装了python3之后,会有pip3 1. 使用pip install XXX 新安装的库会放在这个目录下面 python2.7/site-packages 2. 使用pip3 install XX ...