重现赛地址: 牛客

总共十三道题,A了七道题,罚时是同题数的榜首,惨痛银牌,再多一道就有金
了,悔しい,来年冲冲冲

剩下五道题不一定有题解(菜的不行),先从简单的开始:

M题:比赛!


题意:

首先输入一个 n ,之后 n 行给出 n 条信息,每条信息格式固定。如图,三个字符加一个用来分隔的 “ : ” ,每种字符代表一位选手,意思是第一位选手成绩排在第二位和第三位之间。根据选手给出的信息,将选手根据成绩进行一个可能的排序,能排出任意一种可能就输出序列,如果无论如何都不可能就输出No Answer。

当初看题看到关系网第一时间就往食物链方向卡了…然后又转链表map暴力,怎么都做不到完美记录下可能的输出状态。结果这是到图论拓扑题,属于是 开眼界 太菜了 (但凡当时刷点图论也不至此)

#include<bits/stdc++.h>
#include<unordered_map>
#define mem(a,b) memset(a,b,sizeof a)
#define ios_sync (ios::sync_with_stdio(false),cin.tie(0),cout.tie(0))
#define sca scanf
#define pri printf
#define ul u << 1
#define ur u << 1 | 1
#include<vector>
#include<string>
using namespace std;typedef long long ll;
typedef pair<int, int> PII;//最根本的操作:对于每一条信息给的三个选手,建一条有向链
//比如对 A :BC ,建 B -> A -> C
//这样就记录下来了三个选手之间的关系//同时每建一条边都去进行一个判定,比如 B -> A ,就去判定一下从 A 开始能不能走到 B 点,如果能走到就相当于存在一个环,代表给出的信息肯定是有矛盾的,这样最后肯定找不出一条序列满足所有信息//如果信息全部都没有矛盾,相当于这个图里没有环的存在
//一个没有环的图,非常理所当然地就应该想到拓扑序列
//
//B -> A ,A 的入度就该++,意味着 A 入队前应该先处理掉之前对其有影响的点(B),当它处理完影响自己的点后,此时输出肯定能满足所有采访(限制条件信息)//素晴らしいconst int N = 505, M = 1005;
ll INF = 0x3f3f3f3f, mod = 1e9;
int n, m, k, T;
int h[N], ne[M], e[M], idx;//用一个邻接表,可能会有疑问重边该怎么处理?事实上重边也不影响,入度照常++就行,拓扑遍历某个点必定会把连向它的所有点(即使重复相连,这条边也肯定记录在表中)的入度--,所以不会有影响
int dist[N], ru[N], ss[N];
//ss记录离散后的数字对应的字符,毕竟最后还要输出
bool st[N];
map<char, int> mp;//离散,把选手编号转化成数字
char str[10];void add(int a, int b) {e[idx] = b, ne[idx] = h[a], h[a] = idx++;ru[b]++;//建边,单向,入度++
}bool dfs(int a, int b) {//判断有没有边 a -> bmem(st, 0);queue<int> q;q.push(a);st[a] = true;//从该点开始往下跑一遍图,标记点防止跑重边while (q.size()){int t = q.front();q.pop();for (int i = h[t]; ~i; i = ne[i]) {int j = e[i];if (!st[j]) {if (j == b)return true;//找的到 bst[j] = true;q.push(j);}}}return false;//找不到 b
}void top_sort() {queue<int> q;for (int i = 1; i <= k; i++)if (!ru[i])q.push(i);//入度0点先入队while (q.size()){int t = q.front();q.pop();pri("%c", ss[t]);//随时输出拓扑序for (int i = h[t]; ~i; i = ne[i]) {int j = e[i];ru[j]--;if (!ru[j])q.push(j);}}
}int main() {sca("%d", &n);mem(h, -1);//初始化bool flag = true;//记录信息是否有矛盾while (n--){cin.ignore(1024, '\n');//清空缓冲区sca("%s", str);if (!flag)continue;//如果有矛盾之后的建图都不需要了int x = str[0], y = str[2], z = str[3];if (!mp[x])mp[x] = ++k, ss[k] = x;//离散化,记录if (!mp[y])mp[y] = ++k, ss[k] = y;if (!mp[z])mp[z] = ++k, ss[k] = z;add(mp[y], mp[x]);//传入离散后的数字建边if (flag && dfs(mp[x], mp[y]))flag = false;//若无矛盾,查询能否反向走到,能就有自环,矛盾add(mp[x], mp[z]);if (flag && dfs(mp[z], mp[x]))flag = false;}if (flag)top_sort();else pri("No Answer");return 0;
}

看能力更新(

2021 - 辽宁省第二届大学生程序设计竞赛相关推荐

  1. 【Java/补题/牛客/ACM赛制】2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛)

    文章目录 题目链接 知识一览 题目列表 快输 C - GCD(数论分块) 题目链接 2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛) 知识一览 01-数论分块 题目列 ...

  2. “亚信科技杯”南邮第七届大学生程序设计竞赛之网络预赛 (K L题解)

    "亚信科技杯"南邮第七届大学生程序设计竞赛之网络预赛 (K L题解) 第一次出题,果然背锅了,L题由于数据问题,让两种不对的方法ac了,分别是:H<0时取前一天送上花(应该是 ...

  3. “亚信科技杯”南邮第七届大学生程序设计竞赛之网络预赛 (部分题解)

    "亚信科技杯"南邮第七届大学生程序设计竞赛之网络预赛 比赛链接http://acm.njupt.edu.cn/acmhome/contest.do?&method=cont ...

  4. 2022.3.12 绍兴文理学院元培学院第十五届大学生程序设计竞赛

    绍兴文理学院元培学院第十五届大学生程序设计竞赛 A 阳光明媚的数学题 B 爱的素数 C 庄生的笔 D 上流的聚餐 E 规划(一) F 规划(二) G 运动的球球 H 物资转移 I 小杨环 J 前四位 ...

  5. 浙江省计算机程序比赛员,浙江省第十七届大学生程序设计竞赛成功举行

    10月17日晚上,本次大赛闭幕式采用线下线上同步举行,线下在学校叔同剧场举行,线上进行"云端直播".学校副校长黄兆信教授,浙江省大学生科技竞赛委员会副主任陆国栋教授,省程序设计竞赛 ...

  6. 安徽大学第九届大学生程序设计竞赛 网络预选赛

    A. 成功人士 Time Limit: 1000 ms   Memory Limit: 64 MB Total Submission: 250   Submission Accepted: 76 De ...

  7. 绍兴文理学院元培学院第十五届大学生程序设计竞赛

    题目集入口 - 补题 (pintia.cn) 目录 1.爱的素数(分析题) 2.规划一(最小生成树) 3.物资转移(贪心) 4.前四位(高精度) 5.上流的聚餐(并查集) 6.庄生的笔(分析题) 1. ...

  8. 浙江省第十五届大学生程序设计竞赛 记录

    其实还是非常激动,当初浙大校赛只有三题,然后后来通过 tryout 幸运得以参加省赛 其实当初天梯赛没有被选上,就以为大概是没有希望打省赛了.. 虽然说不是所有的努力都会得到应有的回报,但是没有努力的 ...

  9. “Wishare杯”南邮第九届大学生程序设计竞赛之网络赛 部分题解

    作为一只退役狗,有幸还能出3个题(E,F,H) H.小学生都会 时间限制(普通/Java) :  10000 MS/ 30000 MS          运行内存限制 : 81920 KByte 总提 ...

最新文章

  1. 超轻量AI引擎MindSpore Lite
  2. 软件工程师安德烈·梅萨成功夺得世界小姐桂冠
  3. HttpWebRequest.GetResponse() raises exception when http status code 400 (bad request) is returned
  4. PHPMailer配置QQ邮箱163邮箱和谷歌邮箱发送邮件
  5. 济南电子机械工程学校计算机专业班主任,济南电子机械工程学校庆祝2020年教师节暨表彰大会隆重举行...
  6. docker入门与实践之【05-Dockfile指令】
  7. C++容器遍历时删除元素
  8. Dubbo-admin的安装
  9. App测试的11点建议
  10. SQL注入-盲注(布尔盲注与时间盲注)
  11. 面试中常被问到(七)封装继承多态知多少
  12. 分享15款免费好用的中文字体
  13. Paper pass使用方法总结,毕业论文查重攻略
  14. linux如何装coap协议,coap协议源码安装与测试
  15. 企业外贸网站建设的要求及注意事项
  16. Syzmlw 蜗居大结局
  17. 参考 | 升级 Win11 移动热点开不了或者开了连不上
  18. opencv 棋盘标定
  19. 爆笑!你知道msdn与csdn的意思吗?
  20. 【Crypto】BUGKU-抄错的字符

热门文章

  1. Flutter 导航教程
  2. 写一个完整的万年历网页
  3. 电子发票多页打印技巧(将四张不同发票打印在一页纸上)
  4. linux 删除历史密码
  5. 【栅格地图路径规划】基于matlab D星和D星_Lite算法机器人栅格地图路径规划【含Matlab源码 2530期】
  6. 彻底搞定欢乐锁与悲观锁
  7. substance painter仿制图章和passthrough层设置
  8. windows2008服务器IIS7下php程序伪静态处理 猫叔
  9. python 修改文件创建时间_python 两种方法修改文件的创建时间、修改时间、访问时间...
  10. Java基础短时自学总结