zoj 4124 "Median" (思维?假的图论?)
传送门 来源:2019 年“浪潮杯”第十届山东省 ACM 省赛 题意: 对于一个包含n个数的(n为奇数)序列val[ ],排序后的 val[ (n+1) / 2 ] 定义为 median; 有 n 个数,并有 m 组关系,对于第 i 组关系 a i ,b i 代表第 val[a i ] > val[b i ]; 但并没有给出具体的数值; 输出一个包含 n 个元素的数组 s[ ] ; 让你判断第 i 个数 val[ i ]是可能为中位数,如果是,第 i 位为 1; 如果不是,第 i 位为 0; 输出 n 个数,其中第 i 个数为 0 或 1,含义如上; 题解: 首先,特判两种情况: ①a i = b i ; ②给出的 m 个关系有环; 对于这两种情况,输出 n 个 0; 除了这两种情况外,就是一个有向无环图; 如何判断第 i 位是否为 median 呢? 搜索: 正向搜索比第 i 个数小的数的总个数 tot1; 反向搜索比第 i 个数大的数的总个数 tot2; 那么,还剩下 res = n-(tot1+tot2+1) 个数; 如果 res ≥ |tot1-tot2|,那么第 i 个数就是中位数; AC代码: 1 #include<bits/stdc++.h> 2 using namespace std;