solution:

恶心题。考点:位运算 + 模拟。

我们将比赛分成两类:第一种是严格的胜利,即赢家的获胜位置严格小于输家的获胜位置。第二种是非严格的胜利,这意味着球员在球场上的获胜位置是相等的。

现在问题转化为在一个 3 列的网格上统计。提供 kcznolkcznolkcznol 大佬的 O(n)O(n)O(n) 算法,暴踩标算:

  1. 从左往右扫一遍,对于这一列的每个球员是第一次出现,那么我们统计 (i+1,n)(i+1,n)(i+1,n) 的答案;否则直接跳过。具体我们要维护 cnt[8][3]cnt[8][3]cnt[8][3] 表示在状态 maskmaskmask 的第 iii 行排的最小且球场编号最小的球员的位置。
  2. 现在我们计算非严格胜利。枚举 iii , i2i2i2 行 (i<i2)(i<i2)(i<i2) , 如果 xxx, yyy 都不等于 000 (x≠y)(x\ne y)(x​=y), 我们可以枚举 i3∈[0,2]i3\in [0,2]i3∈[0,2] , 使得在输家位置最靠前的情况下场地编号最小,就可以比较出 xxx , yyy 的结果。

常数大概有 23∗3∗3=722^3*3*3=7223∗3∗3=72 。

#include <bits/stdc++.h>
#define ll long long
#define INF 0x3f3f3f3f
#define PII pair<int,int>
using namespace std;
const int mx=1e5+5;
int n,a[3][mx],id[mx][3],cnt[8][3],ans[mx];
ll ans2[3];
int in[mx];
//转化为一个三行的表格,然后求啥 ?
inline int read() {int x=0; char c=getchar();while(c<'0'||c>'9') c=getchar();while(c>='0'&&c<='9') {x=(x<<1)+(x<<3)+c-'0';c=getchar();}return x;
}
void add(int j,int w) {for(int s=1;s<=7;s++) {int mn_i=-1;for(int i=0;i<=2;i++) {if(s>>i&1&&(mn_i==-1||id[j][i]<id[j][mn_i])) mn_i=i;}cnt[s][mn_i]+=w;}
}
signed main() {//  freopen("data.in","r",stdin);n=read();for(int i=0;i<=2;i++) {for(int j=1;j<=n;j++) {id[a[i][j]=read()][i]=j;}}for(int j=1;j<=n;j++) add(j,1);for(int j=1;j<=n;j++) {for(int i=0;i<=2;i++) {if(in[a[i][j]]) a[i][j]=0; //player a[i][j] 已经计算过了 else {add(a[i][j],-1);for(int i1=i;i1<=2;i1++) {//in[x] : 状压 if(a[i1][j]==a[i][j]) {in[a[i][j]]|=1<<i1;}}} }for(int i=0;i<=2;i++) {if(a[i][j]) {int x=a[i][j];//cnt[i][j] 记录 状态为 i 的当中最优决策为 j 的 player 个数 for(int t=0;t<=2;t++) {ans2[t]+=cnt[in[x]][t];ans[x]+=cnt[in[x]][t];}for(int i1=i+1;i1<=2;i1++) {//对于非严格的处理(我们首先比较败者名次靠前,再比较场地编号) if(a[i1][j]) { int y=a[i1][j];PII mn={n+1,n+1};for(int t=0;t<=2;t++) {//此处 x 取得最优,当前得到的点对为 (id[y][t], t) if(id[x][t]==j) {mn=min(mn,{id[y][t],t});}//此处 y 取得最优,当前得到的点对为 (id[x][t], t) if(id[y][t]==j) {mn=min(mn,{id[x][t],t});}}//得到所举办的场地ans2[mn.second]++;ans[id[x][mn.second]==j?x:y]++; }}}}}printf("%lld %lld %lld\n",ans2[0],ans2[1],ans2[2]);for(int i=1;i<=n;i++) printf("%d ",ans[i]);
}

【题解】[COCI2020-2021#1] Tenis相关推荐

  1. Codeforces Round #698 (Div. 2)(A ~ F)6题全,超高质量题解)【每日亿题】2021/2/4

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #698 (Div. 2)(A ~ F)6题全,超 ...

  2. Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #694 (Div. 1 + Div2)(A ~ ...

  3. 2021第十二届蓝桥杯Python组国赛/决赛 题解

    2021第十二届蓝桥杯Python组国赛/决赛 题解 前言 2021年第十二届蓝桥杯国赛/决赛,因为疫情原因没有像往年一样前往北京参赛,而是在自己学校的机房进行考试,形式上类似蓝桥杯省赛,但由于参加国 ...

  4. 【解题报告】2021牛客寒假算法基础集训营4

    [解题报告]2021牛客寒假算法基础集训营4 前面的话 A :九峰与签到题 | 模拟 (签到题) B: 武辰延的字符串 | exKMP D :温澈滢的狗狗 | 二分 E: 九峰与子序列 | d p d ...

  5. 2021.8.8 ~ 2021.8.14 在SSL集训总结(Week 1 已更完)

    集训总结 前言 因为疫情,就回到SSL集训了 (可能有点长,右边有目录) 后续,第二周 2021.8.15 ~ 2021.8.25 在SSL集训总结(Week 2)(更新ing) Day -1(8.7 ...

  6. 蓝桥杯青少创意编程python组

    第十二届蓝桥杯青少年组国赛C++中级组 第1题 -- 第3题(python3实现) 第十二届蓝桥杯青少年组国赛C++中级组 第1题 -- 第3题(python3实现)_dllglvzhenfeng的博 ...

  7. 动画学信奥 漫画学算法 CSP-J入门级 (一)、计算机基础与编程环境(依据「NOI大纲」)

    信息学奥赛到底考什么?NOI大纲文字收藏版 信息学奥赛到底考什么?NOI大纲文字收藏版_A-别针少儿编程的博客-CSDN博客 NOI大纲 CSP初赛篇·知识大纲 CSP-入门级-NOI大纲 NOI大纲 ...

  8. 第十一届蓝桥杯青少组Python竞赛真题

    第十一届蓝桥省赛Python组复盘 第十一届蓝桥省赛Python组复盘_哔哩哔哩_bilibili 蓝桥杯青少组Python竞赛真题讲解 蓝桥杯青少组Python竞赛真题讲解_哔哩哔哩_bilibil ...

  9. NOIP历年第二轮入门组真题集合

    NOIP历年第二轮入门组真题集合 年份 题目 题解链接 2000 T1-计算器的改良 T2- 税收与补贴问题 T3-乘积最大 T4-单词接龙 题解链接 2001 T1-数的记数 T2-最大公约数和最小 ...

最新文章

  1. 【快乐水题】575. 分糖果
  2. SSD( Single Shot MultiBox Detector)关键源码解析
  3. Oracle fgs(精细审计)使用
  4. windows 开始命令集
  5. solr学习笔记-linux下配置solr
  6. 三目运算(三目表达式)是什么?
  7. 土是独体字结构吗_独体结构的字大全
  8. 洛杉矶凌晨4点-------启航
  9. @RunWith注解找不到,怎么办?
  10. 51单片机开发实例 基于51单片机的万年历
  11. LOB类型的学习、总结
  12. html关于页内样式,HTML的页内样式演示案例
  13. NFT是登记在区块链上的所有权证书
  14. 别让假装努力毁了你,最强的68道软件测试基础问答题你能答的溜嘛?
  15. 每日分享之《生命树》
  16. NB-Iot烟感04:BC26模块原理图设计
  17. Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
  18. PTA 兔子繁衍问题
  19. Win10强制更改/重置开机密码
  20. 精品源码素材资源网整站源码打包+数据2GB

热门文章

  1. 使用node服务器简单启动本地项目
  2. python iloc函数_python pandas Series.iloc用法及代码示例
  3. captcha 生成验证码
  4. 告诉你不知道的—国内润滑油品牌大汇总
  5. 使用matlab对sinc函数进行最小二乘拟合仿真
  6. matlab移花接木,数据帝:天山移花接木VS明教怒火连斩
  7. 掌财社移花接木,使用mysql模拟redis
  8. C# 16 进制字符串转 int
  9. handlebar 初学笔记
  10. PYGAME - image convert