HDU2647】的更多相关文章

题目简介:有个工厂的老板给工人发奖金,每人基础都是888,工人们有自己的想法,如:a 工人想要比 b 工人的奖金高,老板想要使花的钱最少 那么就可以 给b 888,给a 889 ,但是如果在此基础上,b也想比a高,那么就不能让他们满意,输出 -1:输入第一行有两个数字,分别为工人数n和要求数m,接下来m行为a员工要求比b员工奖金高. 思路简介:一般拓扑排序:通过记录邻接表入度,先查找入度为0的点输出,如有多个相同值,则随意输出,然后删除该点与下一点的连接,继续查找入度为0的点,直到全部点输出完毕…
由这两题可知拓扑排序是通过“小于”关系加边建图的 hdu2647 /* 拓扑排序的原则是把“小于”看成有向边 此题反向建图即可 并且开num数组来记录每个点的应该得到的权值 */ #include<bits/stdc++.h> #include<queue> using namespace std; #define maxn 20000 struct Edge{ int to,nxt; }edge[maxn<<]; int head[maxn],tot,n,m; voi…
题目链接: hdu-2647 /*Problem : 2647 ( Reward ) Judge Status : Accepted RunId : 16919085 Language : G++ Author : 2014300227 Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta*/ #include <bits/stdc++.h> using namespace std; ; typedef…
第一道逆拓扑纪念一下... #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<string.h> #define maxint 999999999 #define MAXN 10005 #define ll long long using namespace std; int n,m,k,…
题意:年终要给 n 个员工发奖金,每个人的起始金额是888,有些人觉得自己做的比另一个人好所以应该多得一些钱,问最少需要花多少钱,如果不能满足所有员工的要求,输出 -1 拓扑排序,从奖金少的向奖金多的建边,这样从奖金少的开始可以定 888 .对所有最开始入度为 0 的点开始,全发 888 ,由于加入队列的点的奖金数额其实是从小到大的,所以当某个点入度减为 0 时,就直接用这次用来更新的点的奖金+1 作为新一个点的奖金就行. #include<stdio.h> #include<strin…
题意:有个工厂的老板给工人发奖金,每人基础都是888,工人们有自己的想法,如:a 工人想要比 b 工人的奖金高,老板想要使花的钱最少 那么就可以 给b 888,给a 889 ,但是如果在此基础上,b也想比a高,那么就不能让他们满意,输出 -1: 分析,根据题意可以得出一个拓扑的关系,比如 一组数据: 4 4 1 2 1 3 2 4 3 4 那么有如图关系:(位于上层的要求比下层的高) 由图可以知道,我们需要给1号890,2.3号889,4号888元,但是我们在拓扑排序的时候总是从入度为0的点 (…
pid=2647">原文地址 题目分析 题意 老板发工资,可是要保证发的工资数满足每一个人的期望,比方A期望工资大于B,仅仅需比B多1元钱就可以.老板发的最低工资为888元.输出老板最少发的工资总数.若是无法满足大家的期望,则输出-1. 分析 非常明显这是一个拓扑问题.若存在环则无法满足大家的期望.若按常理,A>B,则可能会建立A指向B的有向边.此题不然,由于我们仅仅知道最少的钱数是888,所以从小到大进行拓扑排序更为恰当.所以是建立B指向A的有向边. 此之为逆拓扑排序.由于这样处理…
这道题不能用矩阵表示,因为1w*1w绝对超内存,分析数据,前一个a的钱要多于后一个b,所以我们要把b作为出度,a为入度,如果不明白这个地方,举例:b——>a——>c——>d ,b为888,钱数逐渐上升,如果反过来a为出度就不符合题意啦... 还有一个地方需要注意:判断输出-1的情况不能只判断没有一个入度为0的点,因为有可能在中间就出现矛盾了,如:a——>b——>c——>d——>c 有入度为0的点,但却要输出-1: #include<iostream>…
题意不说了,说下思路. 给出的关系是a要求的工资要比b的工资多,因为尽可能的让老板少付钱,那么a的工资就是b的工资+1.能够确定关系为a>b,依据拓扑排序建边的原则是把"小于"关系看成有向边.那么我们能够建边v->u. #include <stdio.h> #include <string.h> #include <string> #include <iostream> #include <algorithm> #…
Problem Description Dandelion's uncle is a boss of a factory. As the spring festival is coming , he wants to  distribute rewards to his workers. Now he has a trouble about how to distribute the rewards.   The workers will compare their rewards ,and s…