首页 > 其他分享 >CF1765H题解

CF1765H题解

时间:2022-12-29 17:44:30浏览次数:46  
标签:din int 题解 rep 病人 放置 CF1765H include

思路:对每个病人单独来考虑。我们发现正着来考虑每个位置放哪个病人不能保证对之后的病人无影响,故尝试着反着做,当前处理到第 \(i\) 个位置时,第 \(t\) 个还没有被放置的病人能放置仅当 \(p_t \ge i\) 并且所有必须在他之前被放置的病人已经被放置,显然病人 \(t\) 在 \(i\) 前面的位置也一定可以放,所以我们只需要用数据结构来维护能够放置的病人的集合,同时随便拿一个出来放,当集合为空时就是能放的最前面的位置。

正确性:将 \(m\) 个约束条件看做有向边,最终会形成一张拓扑图(因为保证一定有解),所以我们实际在做拓扑排序。

code:

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<vector>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define mp(a,b) make_pair(a,b)
using namespace std;
const int N=2010;
typedef pair<int,int>pii;
int n,m,p[N],din[N];
vector<int>v[N];
void work(int k)
{
	priority_queue<pii>q;
	memset(din,0,sizeof(din));
	rep(i,1,n)
		rep(j,1,v[i].size())din[v[i][j-1]]++;
	rep(i,1,n)if(i!=k&&!din[i])q.push(mp(p[i],i));
	per(i,n,1)
	{
		if(q.empty()||q.top().first<i){printf("%d ",i);return;}
		int x=q.top().second;q.pop();
		rep(j,1,v[x].size())
			if(!--din[v[x][j-1]]&&v[x][j-1]!=k)q.push(mp(p[v[x][j-1]],v[x][j-1]));
	}
}
int main()
{
	scanf("%d%d",&n,&m);
	rep(i,1,n)scanf("%d",&p[i]);
	rep(i,1,m)
	{
		int x,y;scanf("%d%d",&x,&y);
		v[y].push_back(x);
	}
	rep(i,1,n)work(i);
	return 0;
}

标签:din,int,题解,rep,病人,放置,CF1765H,include
From: https://www.cnblogs.com/onlycre/p/17013122.html

相关文章

  • [NOIP2013 提高组] 货车运输 题解
    [NOIP2013提高组]货车运输题解本题解介绍一种最大生成树+并查集+启发式合并离线的做法。想法题目要多次求两点之间的最大瓶颈路长度,所以可以先参照最小瓶颈路的通......
  • LeetCode 寻找数组的中心下标算法题解 All In One
    LeetCode寻找数组的中心下标算法题解AllInOne724.FindPivotIndex寻找数组的中心下标"usestrict";/****@authorxgqfrms*@licenseMIT*@copyr......
  • Cordforces 1774D题解
    题目链接:https://codeforces.com/problemset/problem/1774/DDescription:给定n个长为m的二进制串,每次可以选出任意两个,然后交换这两个二进制串同一列的数。求最少的操作......
  • [题解] CF1761E Make It Connected
    CF1761EMakeItConnected题目大意给一张无向图,每次操作表现为选择一个点\(x\),断开所有原来连上的边,连接所有原来断开的边。求最少需要几步使得图联通,并构造方案。思......
  • LOJ 6041 「雅礼集训 2017 Day7」事情的相似度 题解 (SAM+启发式合并)
    题目链接首先很容易想到的是对反串求SA和LCP,然后询问就是求起点在某个区间内的所有后缀两两LCP的最大值,可以用莫队解决,时间复杂度\(O(n\sqrtnlogn)\),应该是过不了的。......
  • P5137 题解
    前言首先感谢所有帮助我卡常的大佬们。题意求\((\sum_{i=0}^{n}a^ib^{n-i})\modp\)的值(\(n\leq10^{18}\),\(p\)不一定为质数)。分析看到数据范围,首先想到快......
  • C#提示指定的路径或文件名太长问题解决办法
    我用的是.net4.0的环境,直接在app.config配置文件中加几行配置就行。如下图:<configuration><runtime><AppContextSwitchOverridesvalue="Switch.System.IO.......
  • SEERC2022 D Divisible by 4 Spanning Tree 题解
    题意给定\(n\)个点\(m\)条边的无向连通图,判断是否有存在生成树满足:度数为奇数的点个数为\(4\)的倍数。\(1\len\le200000,1\lem\le400000\)题解度数总和是\(2n......
  • 【题解】P5298 [PKUWC2018]Minimax
    P5298[PKUWC2018]Minimax思路线段树合并优化树形dp.值域1e9首先考虑离散化。然后发现需要维护每种权值的出现概率,于是可以考虑到一个简单的树形dp:设\(f[i][j]\)......
  • 问题解决:Failed to download metadata for repo ‘appstream‘: Cannot prepare inter
    https://cloud.tencent.com/developer/article/1993317 大家都知道Centos8于2021年年底停止了服务,大家再在使用yum源安装时候,出现下面错误“错误:Failedtodownloadmet......