题意:

有 $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相关推荐

  1. 【CF913F】Strongly Connected Tournament 概率神题

    [CF913F]Strongly Connected Tournament 题意:有n个人进行如下锦标赛: 1.所有人都和所有其他的人进行一场比赛,其中标号为i的人打赢标号为j的人(i<j)的概 ...

  2. Educational Codeforces Round 13 E. Another Sith Tournament 状压dp

    E. Another Sith Tournament 题目连接: http://www.codeforces.com/contest/678/problem/E Description The rul ...

  3. Tournament CodeForces - 27B(dfs)

    The tournament «Sleepyhead-2010» in the rapid falling asleep has just finished in Berland. n best pa ...

  4. [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 ...

  5. 【CodeForces - 357C 】Knight Tournament(并查集 或 STLset)

    题干: Hooray! Berl II, the king of Berland is making a knight tournament. The king has already sent th ...

  6. Codeforces 678E. Another Sith Tournament(概率DP,状压)

    Codeforces 678E. Another Sith Tournament 题意: n(n<=18)个人打擂台赛,给定任意两人对决的胜负概率,比赛规则:可指定一人作为最开始的擂主,每次可指 ...

  7. Atcoder Codefestival Exhibition/Team Relay/Tournament Round 简要题解

    Exhibition Awkward 考虑容斥,至少某些限制不满足. 把不满足的边画出来,发现是若干条不相交路径,DP即可. #include <bits/stdc++.h> #defin ...

  8. 【SGU 448】Controlled Tournament(状态压缩动态规划)

    题目链接 [SGU 448]Controlled Tournament 题目大意 给定比赛人员个数nnn,你希望赢的人的编号m" role="presentation" ...

  9. Knight Tournament

    set的应用 一个人只能被打败一次,所以在被打败后就要从set中删去,这样才能保证从左边界遍历到右边界的过程中消耗较少的时间,如果纯暴力不优化的话肯定会超时 Hooray! Berl II, the ...

  10. CF850D Tournament Construction

    CF850D Tournament Construction 题目传送门 挺难的一道构造题. 题目大意: 给定 mmm 个数的一个非负整数集合,不超过 303030.你需要构造一个竞赛图,满足:所有点 ...

最新文章

  1. Python之tushare:tushare库的简介、安装、使用方法之详细攻略
  2. 1.18 Java直接插入排序法
  3. 现实世界的Windows Azure:访问沃尔沃汽车公司的数字战略经理David Holecek
  4. java库存导出_java生成导出excle文件
  5. 引入宽字符error: converting to execution character set: Invalid or incomplete multibyte or wide character
  6. 单片机音频谱曲软件_【自己写的小软件】CLY单片机音乐代码超级生成器
  7. 读DS18B20序列号(c语言)
  8. sift算法的主要步骤
  9. 牛客网暑期ACM多校训练营(第五场): F. take(期望+线段树)
  10. MySQL字符串拼接函数使用
  11. 全志A40I tina系统蓝牙wifi调试方法
  12. 2行Python给图片加水印,太强了!
  13. Python爬取豆瓣电影评分Top250(内附源码地址与效果图)
  14. 电脑锁屏卡死以及任务栏卡死的解决办法
  15. 微信小程序 三角形实现 (评论三角形)
  16. Redis 发布订阅原理以及springboo中RedisTemplate集成
  17. 博瑞ge 加装无线 carpaly方法和效果展示
  18. 入手评测 联想小新Pro16和thinkbook15p有什么区别 选哪个
  19. ntoskrnl导致的蓝屏死机问题
  20. 第二十六讲 有限域基础

热门文章

  1. usaco 奶牛集会 奶牛抗议
  2. 吴思里:字节前端面试经历
  3. 李嘉诚--理财--如何支配你的金钱
  4. Python —— 字典攻击
  5. 【数字IC/FPGA】仲裁器进阶--Round Robin Arbiter
  6. redo和undo日志
  7. Python004~005
  8. JavaFX店铺管理软件
  9. python describe include_数据分析pandas之DataFrame.describe() 用法概述
  10. 【weJudge】1107. [ACM][2014新生赛重现][现场]啊~啊~,麻婆豆~腐,麻婆豆~腐~