CodeForces 472C Design Tutorial: Make It Nondeterministic (贪心)

来源:互联网 发布:vb设置焦点 编辑:程序博客网 时间:2024/05/16 05:56

题意:给出n个人的姓和命,然后给出排列顺序,每个人选择自己的姓或者名作为关键字,问是否可能使得按照给定的顺序,关键字递增。

思路:每个人尽可能选择小的关键字,如果较小的关键字没上一个关键字大就选较大的关键字。如果还是没上一个关键字大就输出无解。

代码:

#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <string>using namespace std;int n;string first[100005];string last[100005];int prio[100005];int main() {while (~scanf("%d", &n)) {for (int i = 1; i <= n; i++)cin >> first[i] >> last[i];for (int i = 1; i <= n; i++)cin >> prio[i];bool flag = true;string pre;if (first[prio[1]] < last[prio[1]]) pre = first[prio[1]];else pre = last[prio[1]];for (int i = 2; i <= n; i++) {string tt = "";if (first[prio[i]]>pre){tt=first[prio[i]];}if (last[prio[i]]>pre){if (tt=="") tt=last[prio[i]];else tt=min(last[prio[i]],tt);}pre=tt;if (tt == "") {flag = false;break;}}if (flag) cout << "YES" << endl;else cout << "NO" << endl;}return 0;}


0 0