洛谷——P1347 排序】的更多相关文章

洛谷—— P1347 排序 题目描述 一个不同的值的升序排序数列指的是一个从左到右元素依次增大的序列,例如,一个有序的数列A,B,C,D 表示A<B,B<C,C<D.在这道题中,我们将给你一系列形如A<B的关系,并要求你判断是否能够根据这些关系确定这个数列的顺序. 输入输出格式 输入格式: 第一行有两个整数n,m,n表示需要排序的元素数量,2<=n<=26,第1到n个元素将用大写的A,B,C,D....表示.m表示将给出的形如A<B的关系的数量. 接下来有m行,每…
题目描述 一个不同的值的升序排序数列指的是一个从左到右元素依次增大的序列,例如,一个有序的数列A,B,C,D 表示A<B,B<C,C<D.在这道题中,我们将给你一系列形如A<B的关系,并要求你判断是否能够根据这些关系确定这个数列的顺序. 输入输出格式 输入格式: 第一行有两个整数n,m,n表示需要排序的元素数量,2<=n<=26,第1到n个元素将用大写的A,B,C,D....表示.m表示将给出的形如A<B的关系的数量. 接下来有m行,每行有3个字符,分别为一个大写…
这个题看到很多人写Topo排序,其实这道题第一眼看更像是一个差分约束的裸题QWQ... 令dis[x]表示x的相对大小(1是最小,n是最大),显然,对于一个关系A<B,我们有dis[A]<dis[B],也就是dis[A]<=dis[B]-1,然后我们就可以建一条从B到A的权值为-1的有向边. 而我们最后要求的就是dis[x]的最小值,为了使它们的值都落在1~n之间,我们新建一个虚拟的点0,并令dis[0]=0且dis[x]>dis[0]. 这样我们要求的就是dis[x]-dis[0…
题目大意:给定 N 个变量和 M 个变量之间的偏序关系,问能否求出这 N 个变量之间的一个全序.若能,输出最少利用多少条已知信息即可求的结果,且输出该全序:若无解,输出到第几条已知信息可以判定无解:若读到最后一条信息也无法判断,输出无法判断. 题解:偏序关系自然对应着一个有向图,每一个已知信息等价为给这个有向图加一条边,若能够得到全序,则证明拓扑排序过程中能够找出一条长度为 N 的链,若无解,则是在拓扑排序过程中存在自环,否则就是无法判断. 代码如下 #include <bits/stdc++.…
题目描述 一个不同的值的升序排序数列指的是一个从左到右元素依次增大的序列,例如,一个有序的数列\(A,B,C,D\) 表示\(A<B,B<C,C<D\).在这道题中,我们将给你一系列形如\(A<B\)的关系,并要求你判断是否能够根据这些关系确定这个数列的顺序. 输入格式 第一行有两个整数\(n,m\),\(n\)表示需要排序的元素数量,\(2 \leq n \leq 26\),第\(1\)到\(n\)个元素将用大写的\(A,B,C,D....\)表示.\(m\)表示将给出的形如\(…
这篇题解没有用拓补排序 (嗐 菜就直说) 个人感觉这道题拓补排序没有变种\(Floyd\)好写吧,思维难度也低一点(亲眼目睹机房dalao这道题拓补排序调了很久). 吐槽结束,开始正题~ 对于这道题为什么可以用\(Floyd\),应该就是传递性了.当\(A>B\)时,\(B>C\),那么现在肯定有\(A>C\)了,想想原来的\(Floyd\),是不是也有点传递性的味道.这样一来,我们就可以在已知一部分条件的情况下,求出其他值的大小关系,最后看是不是每个数都跟其他的每一个数确认了关系,如果…
解:splay + 线段树合并,分裂. 首先有个乱搞做法是外层拿splay维护,有序区间缩成splay上一个节点.内层再开个数据结构支持合并分裂有序集合. 内层我一开始想的是splay,然后就没有复杂度保证,乱搞. 后来发现可以用线段树分裂/合并来,全程复杂度一个log还能在线实时回答询问,NB! 解法二:二分答案 + 把原序列转成01序列来排序.这个我没写,但是感觉很神奇. #include <bits/stdc++.h> , M = ; namespace seg { int ls[M],…
分块,注意重复的值之间的处理.跟普通分块的操作一样的啦,具体可以参见‘不勤劳的图书管理员’. #include <bits/stdc++.h> using namespace std; #define maxn 500000 #define lowbit(i) i & (-i) #define int long long ][maxn]; struct node { int num, id, rank; }a[]; int read() { ; char c; c = getchar(…
洛谷题目传送门 又是一年联赛季.NOIP2017至此收官了. 这个其实是比较套路的图论DP了,但是细节有点恶心. 先求出\(1\)到所有点的最短路\(d1\),和所有点到\(n\)的最短路\(dn\). 设\(f_{i,j}\)表示\(i\)号点,所有与\(d1\)差距不超过\(j\)的路径条数.转移的时候肯定是从小到大枚举\(j\),再枚举边转移.显然每条边都有一个\(\Delta\)值,为\(d1_x-d1_y+w\),含义就是强制经过这条边的最短路长度相较于原最短路长度的增量.于是有转移式…
洛谷题目传送门 你谷无题解于是来补一发 随便百度题解,发现了不少诸如树剖\(log^3\)LCT\(log^2\)的可怕描述...... 于是来想想怎么利用题目的性质,把复杂度降下来. 首先,每个点的输出状态只有\(0/1\),于是每个点的总状态也非常有限,可以根据权值为\(1\)的儿子数量\(0-3\)分为四种,记为该点的点权. 我们都会模拟暴力过程--先改叶子节点(先默认为\(0\)改为\(1\)),如果它的父亲此时权值为\(1\)的儿子数量从原来小于\(0\)的变成大于\(0\)的,那么父…