zoukankan      html  css  js  c++  java
  • Codeforces 140B(模拟)

    要点

    • 题意读好久。大概这样理解:每个时间点按顺序收到序号1~n的卡片,只有收过的卡片才能发给别人并且主人公会发在他心中优先级最高的。由于主人公可以在任何时间给朋友发卡片,最后输出(说得很绕但等价于)1~n号朋友最好可以得到什么类型的卡片。
    • 枚举时间点并看当前主角的最大优先级卡片是什么并给大家发,然后更新大家的接收类型。样例很良心,会发现只记录最大优先级的不够用,一旦等于这个人的编号就不允许发,这是该用第二优先级的来更新该人。
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    int n;
    int cmp[305][305], ans[305];
    
    int main() {
    	scanf("%d", &n);
    	for (int i = 1; i <= n + 1; i++) {
    		for (int j = 1, x; j <= n; j++) {
    			scanf("%d", &x);
    			cmp[i][x] = j;
    		}
    	}
    	int fir = 0, sec = 0;
    	memset(ans, 0x3f, sizeof ans);
    	for (int i = 1; i <= n; i++) {
    		if (!fir || cmp[n + 1][fir] > cmp[n + 1][i])	sec = fir, fir = i;
    		else if (!sec || cmp[n + 1][sec] > cmp[n + 1][i])	sec = i;
    		
    		for (int j = 1; j <= n; j++) {
    			if (fir && fir != j) {
    				if (ans[j] > 500 || cmp[j][ans[j]] > cmp[j][fir]) {
    					ans[j] = fir;
    				}
    			} else if (sec && sec != j) {
    				if (ans[j] > 500 || cmp[j][ans[j]] > cmp[j][sec]) {
    					ans[j] = sec;
    				}
    			}
    		}
    	}
    	for (int i = 1; i <= n; i++)
    		printf("%d%c", ans[i], " 
    "[i == n]);
    }
    
  • 相关阅读:
    sqlite 修改 id 自增值
    欧拉图与哈密顿图12:22
    nps 配置 vnc内网穿透
    0 范数、1 范数、2 范数有什么区别?
    相关测试
    golang学习笔记---channel(通道)
    golang学习笔记---pflag包
    Nginx+Keepalived配置Nginx自动启动和7*24不间断服务
    Keepalived+Nginx双机主备配置实践
    虚拟机中使用域名通过宿主window访问
  • 原文地址:https://www.cnblogs.com/AlphaWA/p/10894902.html
Copyright © 2011-2022 走看看