【【henuacm2016级暑期训练】动态规划专题 O】Robot Rapping Results Report
【链接】  我是链接,点我呀:) 
 【题意】
让你确定一个最小的k
使得1..k这些比赛的结果能够推导出所有人之间的实力大小
【题解】
如果关系越多。那么就越能确定所有人之间的大小关系。
(多一点也能唯一确定。不嫌多
那么就二分一下k.
做一个拓扑排序。
如果能做唯一的拓扑排序。那么就ok
否则返回false.
【代码】
#include <bits/stdc++.h>
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define all(x) x.begin(),x.end()
#define pb push_back
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
using namespace std;
const double pi = acos(-1);
const int dx[4] = {0,0,1,-1};
const int dy[4] = {1,-1,0,0};
const int M = 1e5;
int n,m,ru[M+10];
vector<pair<int,int> > g[M+10];
pair<int,int> a[M+10];
queue<int> dl;
bool ok(int mid){
    memset(ru,0,sizeof ru);
    for (int i = 1;i <= mid;i++){
        ru[a[i].second]++;
    }
    int cnt = 0;
    while (!dl.empty()) dl.pop();
    for (int i = 1;i <= n;i++)
        if (ru[i]==0){
            dl.push(i);
        }
    while (!dl.empty()){
        int x = dl.front();dl.pop();
        cnt++;
        if (!dl.empty()) return false;
        for (auto y:g[x]){
            if (y.second>mid) continue;
            ru[y.first]--;
            if (ru[y.first]==0) dl.push(y.first);
        }
    }
    if (cnt==n) return true;
    return false;
}
int main(){
	#ifdef LOCAL_DEFINE
	    freopen("rush_in.txt", "r", stdin);
	#endif
	ios::sync_with_stdio(0),cin.tie(0);
    cin >> n >> m;
    for (int i = 1;i <= m;i++){
        int x,y;
        cin >> x >> y;
        a[i] = {x,y};
        g[x].push_back({y,i});
    }
    int l = 1,r = m,temp = -1;
    while (l<=r){
        int mid = (l+r)>>1;
        if (ok(mid)){
            r = mid - 1;temp = mid;
        }else{
            l = mid + 1;
        }
    }
    cout<<temp<<endl;
	return 0;
}
【【henuacm2016级暑期训练】动态规划专题 O】Robot Rapping Results Report的更多相关文章
- 【henuacm2016级暑期训练-动态规划专题 C】Little Girl and Maximum XOR
		[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 考虑r最后的二进制形式为 1xxxxx 那么我们肯定想让第一个最高位的1保留. 因此我们选取的另外一个数字 一定是 0xxxxx的形 ... 
- 【henuacm2016级暑期训练-动态规划专题  B】Coloring Trees
		[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] f[i][j][k]前i个位置,第i个位置放j这个颜色,然后形成了k个联通块的最小花费 分第i个位置有没有已经放颜色两种情况考虑. ... 
- 【 henuacm2016级暑期训练-动态规划专题 A 】Cards
		[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 很显然只要维护B,R,G的数量就好了. 可以很容易想到一个dfs(int a,int b,int c) 然后如果a+b+c==1,那 ... 
- CROC 2016 - Elimination Round (Rated Unofficial Edition) D. Robot Rapping Results Report 二分+拓扑排序
		D. Robot Rapping Results Report 题目连接: http://www.codeforces.com/contest/655/problem/D Description Wh ... 
- codeforces 655D D. Robot Rapping Results Report(拓扑排序+拓扑序记录)
		题目链接: D. Robot Rapping Results Report time limit per test 2 seconds memory limit per test 256 megaby ... 
- 【 【henuacm2016级暑期训练】动态规划专题 P】Animals
		[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 第i只动物如果饲养它的话. 代价是固定的就是(n-i+1)a[i] 所以相当于给你n个物品,每个物品的重量为(n-i+1)a[i], ... 
- 【【henuacm2016级暑期训练】动态规划专题 N】Valid Sets
		[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 给你一棵树. 让你统计其中子树T的数量. 这个子树T要满足最大值和最小值之差小于等于d 树形DP 可以枚举点root为子树的根. 统 ... 
- 【【henuacm2016级暑期训练】动态规划专题 M】Little Pony and Harmony Chest
		[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 每一位显然只要取1..60这些数字. 然后需要保证每个这些数字里面,每个数字所用到的质因子都它所唯一拥有的.别人不能用 因为如果别人 ... 
- 【【henuacm2016级暑期训练】动态规划专题 L】Civilization
		[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 给一个森林. 就是由很多棵树组成.. 然后会询问你其中一棵树的最长链. 初始状态的最长链可以用两遍dfs分别找最长路得到. 然后要求 ... 
随机推荐
- NEFU 84
			其实同POJ 1061 #include <iostream> #include <cstdio> #include <cstring> #include < ... 
- 【解决方法】UITableView 性能优化笔记
			1.网络图片异步载入,SDWebImage. 2.文字直接 drawInRect/drawAtPoint 绘制,參考 ABTableViewCell.AdvancedTableViewCells. 3 ... 
- HTML5开发移动web应用——Sencha Touch篇(8)
			DataView是Sencha Touch中最重要的组件,用于数据的可视化.数据可视化的重要性不言而喻,能够讲不论什么数据以形象的方式展示给用户. 眼下,怎样更好地可视化是很多公司或框架都在追求的. ... 
- Linux体验之旅(一)——制作U启,安装rhel-server-6.3
			U启制作: 双击UltraISO: 点击文件→打开: 选择rhel-server6.3 点击启动→选择写入硬盘映像 最后选择格式化优盘→写入→完毕 注意:启动盘制作完毕后一定记得将rhel-serve ... 
- bzoj1786: [Ahoi2008]Pair 配对&&1831: [AHOI2008]逆序对
			一个自以为很对的东西,我们往-1放的数肯定是不增的. 然后就预处理一下,假如i这个位置放j会多多少逆序对. DP一下,我的复杂度应该是O(n*m^2)的,然而你随便搞都能省掉一个m吧,我算了算好像可以 ... 
- nyoj--68--三点顺序(数学)
			三点顺序 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 现在给你不共线的三个点A,B,C的坐标,它们一定能组成一个三角形,现在让你判断A,B,C是顺时针给出的还是逆时针 ... 
- No changes detected  or App 'blog' could not be found. Is it in INSTALLED_APPS?
			出现该问题的原因: django没有在setting.py的配置文件中找到app内容,需要增加app的名称 E:\PycharmProjects\Mysite>python manage.py ... 
- jQuery插件开发的两种方法
			1 类级别 类级别你可以理解为拓展jquery类,最明显的例子是$.ajax(...),相当于静态方法. 开发扩展其方法时使用$.extend方法,即jQuery.extend(object); $. ... 
- Chrome 开发工具系列
- 关于Angular官网《英雄指南》教程几点问题修正(此问题在2018年4月份有效,以后可能就订正了)
			1.官网中在导入“of”关键字时的引用为: import { Observable, of } from 'rxjs'; 应该改为: import { Observable } from 'rxjs/ ... 
