Tournament
题意:
有 $n$ 个 $K$ 维向量,若向量A只要有任意一维大于向量B,则认为A可能打败B,将n个向量一个一个加入,求问对于每次加完后的向量集合:有几个向量可能活到最后。
解法:
考虑如果A可以打败B,则A到B连边,对得到的图tarjan,可以发现可能活到最后的向量在同一强联通分量。
考虑加入一个向量x,当x的每一维都大于给定强连通分量的Max,或都小于Min时,x才不能加入当前强连通分量。
这样可以发现,最终强连通分量构成一条链,用set维护这条链,每次lower_bound合并即可。
#include <bits/stdc++.h>#define LL long long #define LD double #define FOR(i,a,b) for (int i = (a);i <= (b); i++) #define DFOR(i,a,b) for (int i = (a);i >= (b); i--) #define debug(x) cerr << "debug: " << (#x) << " = " << (x) <<endl; #define PI acos(-1) #define mp make_pair #define pb push_back #define itr iterator #define bit(x) (1LL<<(x)) #define lb(x) ((x)&(-x)) #define sqr(x) ((x)*(x)) #define gn 3 #define l(x) ch[x][0] #define r(x) ch[x][1] #define y0 Y0 #define y1 Y1 #define y2 Y2 #define fir first #define sec secondusing namespace std;const int N = 50010;int n,K;struct node {int M[10], m[10], sum;bool operator < (const node &tmp)const {FOR(i, 0, K-1) if(M[i] > tmp.m[i]) return false;return 1 ;} };multiset<node> tp;int main() {scanf("%d %d", &n, &K);node tmp;FOR(i, 1, n) {FOR(i, 0, K-1) {scanf("%d", &tmp.m[i]);tmp.M[i] = tmp.m[i];}tmp.sum = 1;auto xx = tp.lower_bound(tmp);while(xx != tp.end() && !(tmp < *xx)) {FOR(i, 0, K-1) {tmp.m[i] = min(tmp.m[i], xx->m[i]);tmp.M[i] = max(tmp.M[i], xx->M[i]);}tmp.sum += xx->sum;tp.erase(xx++);}tp.insert(tmp);printf("%d\n", tp.rbegin()->sum);}return 0; }
View Code
转载于:https://www.cnblogs.com/lawyer/p/7774065.html
Tournament相关推荐
- 【CF913F】Strongly Connected Tournament 概率神题
[CF913F]Strongly Connected Tournament 题意:有n个人进行如下锦标赛: 1.所有人都和所有其他的人进行一场比赛,其中标号为i的人打赢标号为j的人(i<j)的概 ...
- Educational Codeforces Round 13 E. Another Sith Tournament 状压dp
E. Another Sith Tournament 题目连接: http://www.codeforces.com/contest/678/problem/E Description The rul ...
- Tournament CodeForces - 27B(dfs)
The tournament «Sleepyhead-2010» in the rapid falling asleep has just finished in Berland. n best pa ...
- [2021-09-02 contest]CF1251C,可达性统计(bitset优化dp),Boomerang Tournament(状压dp),小蓝的好友(mrx)(treap平衡树)
文章目录 CF1251C Minimize The Integer acwing164:可达性统计 Facebook Hacker Cup 2016 Round 1 Boomerang Tournam ...
- 【CodeForces - 357C 】Knight Tournament(并查集 或 STLset)
题干: Hooray! Berl II, the king of Berland is making a knight tournament. The king has already sent th ...
- Codeforces 678E. Another Sith Tournament(概率DP,状压)
Codeforces 678E. Another Sith Tournament 题意: n(n<=18)个人打擂台赛,给定任意两人对决的胜负概率,比赛规则:可指定一人作为最开始的擂主,每次可指 ...
- Atcoder Codefestival Exhibition/Team Relay/Tournament Round 简要题解
Exhibition Awkward 考虑容斥,至少某些限制不满足. 把不满足的边画出来,发现是若干条不相交路径,DP即可. #include <bits/stdc++.h> #defin ...
- 【SGU 448】Controlled Tournament(状态压缩动态规划)
题目链接 [SGU 448]Controlled Tournament 题目大意 给定比赛人员个数nnn,你希望赢的人的编号m" role="presentation" ...
- Knight Tournament
set的应用 一个人只能被打败一次,所以在被打败后就要从set中删去,这样才能保证从左边界遍历到右边界的过程中消耗较少的时间,如果纯暴力不优化的话肯定会超时 Hooray! Berl II, the ...
- CF850D Tournament Construction
CF850D Tournament Construction 题目传送门 挺难的一道构造题. 题目大意: 给定 mmm 个数的一个非负整数集合,不超过 303030.你需要构造一个竞赛图,满足:所有点 ...
最新文章
- Python之tushare:tushare库的简介、安装、使用方法之详细攻略
- 1.18 Java直接插入排序法
- 现实世界的Windows Azure:访问沃尔沃汽车公司的数字战略经理David Holecek
- java库存导出_java生成导出excle文件
- 引入宽字符error: converting to execution character set: Invalid or incomplete multibyte or wide character
- 单片机音频谱曲软件_【自己写的小软件】CLY单片机音乐代码超级生成器
- 读DS18B20序列号(c语言)
- sift算法的主要步骤
- 牛客网暑期ACM多校训练营(第五场): F. take(期望+线段树)
- MySQL字符串拼接函数使用
- 全志A40I tina系统蓝牙wifi调试方法
- 2行Python给图片加水印,太强了!
- Python爬取豆瓣电影评分Top250(内附源码地址与效果图)
- 电脑锁屏卡死以及任务栏卡死的解决办法
- 微信小程序 三角形实现 (评论三角形)
- Redis 发布订阅原理以及springboo中RedisTemplate集成
- 博瑞ge 加装无线 carpaly方法和效果展示
- 入手评测 联想小新Pro16和thinkbook15p有什么区别 选哪个
- ntoskrnl导致的蓝屏死机问题
- 第二十六讲 有限域基础
热门文章
- usaco 奶牛集会 奶牛抗议
- 吴思里:字节前端面试经历
- 李嘉诚--理财--如何支配你的金钱
- Python —— 字典攻击
- 【数字IC/FPGA】仲裁器进阶--Round Robin Arbiter
- redo和undo日志
- Python004~005
- JavaFX店铺管理软件
- python describe include_数据分析pandas之DataFrame.describe() 用法概述
- 【weJudge】1107. [ACM][2014新生赛重现][现场]啊~啊~,麻婆豆~腐,麻婆豆~腐~