[POI2004] SZP (贪心+拓扑排序)】的更多相关文章

[问题描述] Byteotian 中央情报局(BIA) 雇佣了许多特工. 他们每个人的工作就是监视 另一名特工. Byteasar 国王需要进行一次秘密行动,所以他要挑选尽量多的信得过的特工. 但 是这项任务是如此的机密以至于所有参加行动的特工都必须至少被另一名没有 参加任务的特工所监视(就是说如果某个特工参加了行动,那么原先监视他的那些 特工中至少要有一个没有参加进行动). 给出监视任务的详情,要求计算最多能有 多少个特工参与其中. [输入格式] 第一行只有一个整数, n – 特工的总数, 2…
题目链接: Gym Class Time Limit: 6000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others) Problem Description   众所周知,度度熊喜欢各类体育活动. 今天,它终于当上了梦寐以求的体育课老师.第一次课上,它发现一个有趣的事情.在上课之前,所有同学要排成一列, 假设最开始每个人有一个唯一的ID,从1到N,在排好队之后,每个同学会找出包括自己在内的前方所有同学的最小ID,…
Usoperanto Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.bnuoj.com/v3/contest_show.php?cid=6866#problem/J Description Usoperanto is an artificial spoken language designed and regulated by Usoperanto Academy. The academy is now in study to es…
分析:首先,利用贪心可知,如果要所有人的分数和最高,需要把序号大的优先放在前面.其次,对于a的前面不能为b,那么只能a在b前面了,那么就建立一条从a到b的边,并且b的入度加1.然后就是拓扑排序了.要分数最高,则把哪些入度为0的点(他们不需要有哪些人一定要在他们前面,最自由)丢进优先队列,然后就可以实现把序号大的尽量放在前面而且满足题意了. 具体见代码: #include <stdio.h> #include <algorithm> #include <string.h>…
Windy has N balls of distinct weights from 1 unit to N units. Now he tries to label them with 1 to N in such a way that: No two balls share the same label. The labeling satisfies several constrains like "The ball labeled with a is lighter than the on…
题目传送门 题意:给出一条链,比如x连到y,x一定要在y的左边,且代价是这条链经过的点的权值和,问如何排序使得代价最小 分析:类似拓扑排序,先把入度为0的点入队,把指向该点的所有点按照权值排序,保证这样是代价是最小的,然后把这一块看成一个点继续入队.看图更简单: /************************************************ * Author :Running_Time * Created Time :2015/10/3 星期六 13:02:41 * File…
大意: n个点, 点$i$的等级为$r_i$, 只给出部分点的$r$值, $r_i$的范围为[1,k], 且[1,k]都至少有一个. 给定m条有向边, (x,y)表示$r[x]>r[y]$, 求一个合法的$r$序列. 我们记条件(1): [1,k]都至少有一个. 条件(2): 所有有向边(x,y), 满足$r[x]>r[y]$. 正反各拓扑一次, 这样可以求出满足条件(2)时每个点的可用等级范围[L,R], 我们考虑在不违背条件(2)的情况下, 使(1)成立. 所有点按$L$排序后, 将$1,…
[Description]https://www.luogu.com.cn/problem/P5603 \(\;\) 题意可以简化为:一个不保证联通,n个点,m条边的DAG(有向无环图),构造一个拓扑序S. 求:\(\sum_{i=1}^n f(i)\)的\(Max,Min\) 其中\(f(i)\)的定义: \[f(i)= \begin{cases} 1\;\;\;\;S(1\;to\;i-1)<S(i) \\ 0\;\;\;\;other \end{cases} \] [Sample Inpu…
题目是要给n个重量1到n的球编号,有一些约束条件:编号A的球重量要小于编号B的重量,最后就是要输出字典序最小的从1到n各个编号的球的重量. 正向拓扑排序,取最小编号给最小编号是不行的,不举出个例子真的很难理解= =比如这个数据: 1 4 2 4 1 3 2 正确答案是2 4 3 1,会得到的错误答案是4 2 1 3. 一开始我是用了贪心的做法,每次选未安排重量的最小的编号,安排给它尽量小的重量.某个编号能得到的最小的重量的计算是这样的: 计算出约束中重量要小于此编号的编号个数,记为k,这个可以先…
传送门 短代码简单题. 题意简述:对于一个序列XXX,定义其两个伴随序列a,ba,ba,b,aia_iai​表示以第iii个数结尾的最长上升子序列长度,bib_ibi​表示以第iii个数开头的最长下降子序列长度,现在给出aaa序列,问bbb序列所有数加起来最大值是多少. 思路:首先发现bbb序列就是把这个序列反过来之后得到的X′X'X′的aaa序列,因此贪心证明一波可以发现:对于这个需要自己构造的原序列是较大的数越靠前越好 然后可以根据aaa序列建一些有向边来表示各个位置的大小关系. 考虑证明如…
逃生 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7736    Accepted Submission(s): 2248 Problem Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能排成一行. 现在有n个人,从1标号到n.同时有一些奇怪的约束条件,每个都形如:a必须在b之前.同时,社会是…
题意 题目链接 Sol 非常妙的一道题. 首先不难想到拓扑排序,但是直接对原图按\(k\)从小到大拓扑排序是错的.因为当前的\(k\)大并不意味着后面的点\(k\)也大 但是在反图上按\(k\)从大到小拓扑排序就是对的.为什么呢?因为题目中给出的条件是下限, 而在反图上拓扑排序就相当于卡着下限做,因此一定是最优的 对于第二问,同样在反图上搞.对每个点分开做,贪心的策略是:如果有其他的飞机可以起飞则让他们起飞,直到没有飞机可以起飞,这时的时间就是答案 // luogu-judger-enable-…
BZOJ_4010_[HNOI2015]菜肴制作_拓扑排序+贪心 Description 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1到N的顺序编号,预估质量最高的菜肴编号为1.由于菜肴之间口味搭配的问题, 某些菜肴必须在另一些菜肴之前制作,具体的,一共有 M 条形如“i 号菜肴‘必须’ 先于 j 号菜肴制作”的限制,我们将这样的限制简写为<i,j>.现在,酒店希望能求 出一个最优的菜肴的制作顺序,使…
吐槽:扣了几个小时,大致思路是有了,但是贪心的证明就是不会, 死磕了很长时间,不想想了,结果码代码又不会码.. 深深体会到自己码力很差,写很多行还没写对,最后别人代码全一二十行,要哭了 以下可能是个人口胡瞎扯:首先n个点,每个点一个出边,所以这个图可能是有很多连通块,具体有以下几种形态: 环 内向基环树 树上有一个点套一个自环 这三种构成森林. 先看最多死多少人. 环的话是$siz-1$ 内向基环树只有树那部分的叶子(无入度)可以存活.画图举例辅助理解. 树上带自环:同上 再看很烦人的最少死多少…
<题面> 一个蒟蒻的痛苦一天 在今天的节目集训中,麦蒙将带领大家学习9种错误的解题策略 $15\%$算法(看两个就往下走吧) 1> puts("Impossible!"); 不解释(话说多测输出这个有分真是奇迹)(这个过不了样例了) 2>DFS无优化贪心法 随后,我想到,如果用dfs处理每一部分就可以将一些小的菜肴优先纳入考虑(样例也能过) 当然,这个也有错误,是贪心的目光短浅导致的,比如 1 5 4 4 1 5 1 3 4 2 5 会因为去搜了$4$而搜不到$…
ACM思维题训练集合 Furik and Rubik love playing computer games. Furik has recently found a new game that greatly interested Rubik. The game consists of n parts and to complete each part a player may probably need to complete some other ones. We know that the…
题意:       给你n个求,他们的重量是1-n(并不是说1号求的重量是1...),然后给你m组关系a,b,表示a的重量小于b的重量,然后让你输出满足要求的前提下每个球的重量,要求字典序最小. 思路:       很容易想到这个可以用拓扑排序(其实如果没有字典序那个要求的话查分约束也行),还有就是这个里面的字典序最小不是说拓扑排序的字典序最小,这个要整清楚,如果是求拓扑排序的序列字典序最小直接在出队列的时候找一个编号最小的就行,但是这个不是,我们必须要逆向建边,然后逆向分配编号,因为正向的话会…
正解:拓扑排序 解题报告: 传送门! 首先看到它这个约束就应该要想到拓扑排序辣QwQ 首先想到的应该是用优先队列代替队列,按照节点编号排序 然后也很容易被hack:<5,1> 正解应为5,1,2,3,4 但是上面这个想法的结果是2,3,4,5,1 那就想要不优化一下趴,按照能到达的点为第一关键字,自己点的编号为第二关键字排序呢 还是布星,,,<5,2><5,4><2,1><4,3><3,1> 正解应为5,2,1,4,3,但是上面这个想…
绝世好题啊.. 题意:给出一个DAG,和每个点要求出现在这个DAG里面的拓扑排序的位置<=ti,求出所有可能的拓扑排序里面每个点出现的位置的最小值. 正着做不好做,考虑反着做,建立这个图的反图. 对于一个点出现的位置的最小值,就是n-这个点在反图中出现的位置的最大值. 也就是说拓扑排序时尽量把这个点i排在后面就行了.但是还需要满足一个限制,在反图中这个限制就是每个点在拓扑排序的位置>=n-ti. 于是我们每次拓扑排序从队列中取出点的时候,尽量取n-ti值最小的点,这样就能尽量使得当前处理的点i…
这题不是求最小字典序...撕烤了半个小时才发现不对劲T T 这题是能让小的尽量前就尽量前,无论字典序...比如1能在2前面就一定要在2前面... 显然是要先拓扑排序,让小的尽量前转化成让大的尽量往后丢,这样实际上就跟字典序无关了.于是建反向图,用堆维护一下入度为0的最大值来弹出就好了. 以后拓扑排序别用for弹栈了T T WA了好久 #include<iostream> #include<cstring> #include<cstdlib> #include<cs…
Gym Class Time Limit: 6000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 768    Accepted Submission(s): 309 Problem Description 众所周知,度度熊喜欢各类体育活动. 今天,它终于当上了梦寐以求的体育课老师.第一次课上,它发现一个有趣的事情.在上课之前,所有同学要排成一列, 假设最开始每个人有…
题目链接: 题目 Problem 1014 xxx游戏 Time Limit: 1000 mSec Memory Limit : 32768 KB 问题描述 小M最近很喜欢玩XXX游戏.这个游戏很简单,仅由3个场景(分别为1.2.3)构成构成,只存在1->2.2->3.3->1的路径,三条路径的时间花费都是1个小时. 由于剧情需要,这个游戏有N个剧情任务,每个剧情任务在其中一个场景中完成,但是某些剧情的触发前提是一些必要剧情任务已经完成.为了简化问题,每个剧情任务都只需要一个小时就可以完…
Labeling Balls DescriptionWindy has N balls of distinct weights from 1 unit to N units. Now he tries to label them with 1 to N in such a way that:No two balls share the same label.The labeling satisfies several constrains like "The ball labeled with…
题意:有N个人,M个优先级a,b表示a优先于b.而且每一个人有个编号的优先级.输出顺序. 思路来自:与PKU3687一样 在主要的拓扑排序的基础上又添加了一个要求:编号最小的节点要尽量排在前面:在满足上一个条件的基础上,编号第二小的节点要尽量排在前面:在满足前两个条件的基础上,编号第三小的节点要尽量排在前面--依此类推.(注意,这和字典序是两回事,不能够混淆. ) 如图 1 所看到的,满足要求的拓扑序应该是:6 4 1 3 9 2 5 7 8 0. 图 1 一个拓扑排序的样例 一般来说.在一个有…
Labeling Balls Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10161   Accepted: 2810 Description Windy has N balls of distinct weights from 1 unit to N units. Now he tries to label them with 1 toN in such a way that: No two balls share…
You are given a program you want to execute as a set of tasks organized in a dependency graph. The dependency graph is a directed acyclic graph: each task can depend on results of one or several other tasks, and there are no directed circular depende…
Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 348  Solved: 172[Submit][Status][Discuss] Description [故事背景]还记得去年JYY所研究的强连通分量的问题吗?去年的题目里,JYY研究了对于有向图的“加边”问题.对于图论有着强烈兴趣的JYY,今年又琢磨起了“删边”的问题.[问题描述]对于一个N个点(每个点从1到N编号),M条边的有向图,JYY发现,如果从图中删去一些边,那么原图的连通性会发生改变:…
题目链接:http://codeforces.com/contest/883/problem/B There are n military men in the Berland army. Some of them have given orders to other military men by now. Given m pairs (xi, yi), meaning that the military man xi gave the i-th order to another milita…
http://acm.hdu.edu.cn/showproblem.php?pid=4857 逃生 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6665    Accepted Submission(s): 1950 Problem Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能排成一行.现…
题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5195 bc(中文):http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=573&pid=1002 题解: 1.拓扑排序+贪心 #include<algorithm> #include<iostream> #include<cstring> #include<cstdi…