首页 > 其他分享 >LG - P3243

LG - P3243

时间:2024-08-22 15:29:57浏览次数:8  
标签:LG int Queue -- edge ans push P3243

给一些二元组,规定 \((u,v)\) 中,\(u\) 的出现顺序要高于 \(v\),并且要让值较小的尽量靠前出现,求最终的序列。

第一眼看着像最小字典序拓扑序,写了一下,发现过不去 \(3\) 测。考虑如何转化到一个好写的东西。

想让权值较小的数靠前出现,考虑权值较大的数,需要其在后面出现,并且较大的尽可能靠后。

于是将答案序列反转过来,需要较大的必须靠前,仔细思考这个与一开始的题目要求的区别。

但是题目中的 \((u,v)\),显然是不能使用的,于是见反边之后跑最大字典序拓扑序然后倒序输出即可。

\(code:\)

#include<bits/stdc++.h>
using namespace std;

const int N=1e5+1000;
#define ll long long
#define L(i,j,k) for(int i=j;i<=k;i++)

int t;

int n,m;
vector<int> edge[N];
int in[N];

priority_queue<int> Queue;

vector<int> ans;

int main(){
#ifndef ONLINE_JUDGE
	freopen("in.in","r",stdin);
#endif
	
	ios::sync_with_stdio(0);
	
	cin>>t;
	while(t--){
		
		L(i,1,n)edge[i].clear();
		memset(in,0,sizeof(in));
		ans.clear();
		
		cin>>n>>m;
		
		L(i,1,m){
			int u,v;
			cin>>u>>v;
			edge[v].push_back(u);
			in[u]++;
		}
		
		L(i,1,n){
			if(!in[i])Queue.push(i);
		}
		
		
		while(!Queue.empty()){
			int u=Queue.top();
			Queue.pop();
			for(int v: edge[u]){
				if(!(--in[v])){
					Queue.push(v);
				}
			}
			ans.push_back(u);
		}
		
		int siz=ans.size();
		if(siz==n)for(int i=siz-1;i>=0;i--)cout<<ans[i]<<' ';
		else cout<<"Impossible!";
		cout<<'\n';
		
	}
	return 0;
}

标签:LG,int,Queue,--,edge,ans,push,P3243
From: https://www.cnblogs.com/Pump-kin/p/18373945

相关文章

  • Study Plan For Algorithms - Part7
    1.罗马数字转整数题目链接:https://leetcode.cn/problems/roman-to-integer/罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符数值I1V5X10L50C100D500M1000通常情况下,罗马数字中小的数字在大的数字的右边。但也存在六种特例:I可以放在......
  • [Lgxの归纳] 动态规划算法
    参考文章:dp题方法总汇-YeahPotato组合问题选讲-command_block前言2023NOI大纲中,写明了动态规划入门算法为四级难度,属于CSP-J的考察范围。在联合省选2024中,D1T3/D2T1/D2T2,以及NOI2024中,D1T2/D2T2都以不同的形式考察了动态规划算法。甚至在IOI含金量最高......
  • lg树上操作
    lg树上操作P3258树上差分P1600[NOIP2016]天天爱跑步分开两边处理。对于上升段,如果一个点深度是x=dep_i+w_i,那么i就被贡献我们可以将整个上升段的x位置都加,然后在每个点处统计dep_i+w_i位置的值。每个点开一个vector记录修改操作。不过这样可能会有互相影响......
  • 【LGR-196-Div.4】洛谷入门赛 #26 题A - H 详细题解--优化思路简洁代码(C++,Python语
    前言:    觉得这个比赛很有意思的,都是暴力题,涉及一些细节,难度比较适合刚学编程语言的,可以很好的锻炼基础还有手速,最后两题也是比较有意思,之后也准备更新atc的比赛题解和洛谷的一些高质量比赛题解(算法网瘾就是想参加各种比赛)   如果觉得有帮助,或者觉得我写的好,......
  • lg根号数据结构
    根号数据结构序列分块通过将序列分成小段,整块标记,不足整块的暴力,以平衡修改查询的复杂度。如果两个操作的调用次数有较大差异,可以使用分块维护更多/更少信息来平衡两边的时间复杂度。请注意并非选择“更快”的数据结构就更好,比如树状数组看似更平衡,但是修改和询问的次数不平衡......
  • CHC5223 Data Structures and Algorithms
    CHC5223DataStructuresandAlgorithms2023-2024-21of6AssignmentValue100%ofCourseworkResitIndividualworkBackgroundThesubwaysystemofacityisanetworkofundergroundorelevatedtrainsthatproviderapidtransitforpassengerswithint......
  • 四十、【人工智能】【机器学习】- 梯度下降(Gradient Descent Algorithms)算法模型
     系列文章目录第一章【机器学习】初识机器学习第二章【机器学习】【监督学习】-逻辑回归算法(LogisticRegression)第三章【机器学习】【监督学习】-支持向量机(SVM)第四章【机器学习】【监督学习】-K-近邻算法(K-NN)第五章【机器学习】【监督学习】-决策树(......
  • Study Plan For Algorithms - Part5
    1.回文数题目链接:https://leetcode.cn/problems/palindrome-number/给定一个整数x,如果x是一个回文整数,返回true;否则,返回false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。classSolution:defisPalindrome(self,x:int)->bool:str_x......
  • Study Plan For Algorithms - Part4
    1.整数反转题目链接:https://leetcode.cn/problems/reverse-integer/给定一个32位的有符号整数x,返回将x中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围[−2^31,2^31−1],就返回0。classSolution:defreverse(self,x:int)->int:......
  • Twenty Lectures on Algorithmic Game Theory 算法博弈论二十讲 Lecture 2 Mechanism
    TwentyLecturesonAlgorithmicGameTheory算法博弈论二十讲Lecture2MechanismDesignBasics过去的15年里,计算机科学与经济学之间进行了活跃的互动,催生了算法博弈论这一新兴领域。许多现代计算机科学中的核心问题,从大规模网络中的资源分配到在线广告,都涉及多个自......