cf Make It Nondeterministic (简单贪心)
有N个人。每个人都有两个名字。
给出这N个人的一个排列。p[1]...p[N]。
现在让每个人挑自己丙个名字中的一个名字。问是否存在一种方案,使得挑出来的N个名字按字典序排完以后正好是p[1]...p[N]。
思路:
按照p[1]..p[N]的顺序挑第p[i]个人名字中小的(要大于第p[i-1]个人挑出来的名字),若不行,则挑另一个。若另一个名字也不大于第p[i-1]个人挑出来的名字,就输出NO。
不多说,直接看代码。
代码:
int n;
string name1[100005];
string name2[100005];
string cun[100005];
int p[100005]; int main(){
scanf("%d",&n);
rep(i,1,n){
cin>>name1[i]>>name2[i];
}
rep(i,1,n){
scanf("%d",&p[i]);
if(i==1){
if(name1[p[i]]<name2[p[i]])
cun[1]=name1[p[i]];
else
cun[1]=name2[p[i]];
}else{
bool ok=false;
if(name1[p[i]]<name2[p[i]]){
if(name1[p[i]]>cun[i-1]){
ok=true;
cun[i]=name1[p[i]];
}
else if(name2[p[i]]>cun[i-1]){
ok=true;
cun[i]=name2[p[i]];
}
}else{
if(name2[p[i]]>cun[i-1]){
ok=true;
cun[i]=name2[p[i]];
}
else if(name1[p[i]]>cun[i-1]){
ok=true;
cun[i]=name1[p[i]];
}
}
if(!ok){
printf("NO\n");
return 0;
}
}
}
printf("YES\n");
}
稍微优化后的代码(更短些):
int n;
string name1[100005];
string name2[100005];
string cun[100005];
int p[100005]; int main(){
scanf("%d",&n);
rep(i,1,n){
cin>>name1[i]>>name2[i];
if(name1[i]>name2[i])
swap(name1[i],name2[i]);
}
rep(i,1,n){
scanf("%d",&p[i]);
if(i==1){
cun[1]=name1[p[i]];
}else{
if(name1[p[i]]>cun[i-1]){
cun[i]=name1[p[i]];
continue;
}
else if(name2[p[i]]>cun[i-1]){
cun[i]=name2[p[i]];
continue;
}
puts("NO");
return 0;
}
}
puts("YES");
}
cf Make It Nondeterministic (简单贪心)的更多相关文章
- CF 628C --- Bear and String Distance --- 简单贪心
CF 628C 题目大意:给定一个长度为n(n < 10^5)的只含小写字母的字符串,以及一个数d,定义字符的dis--dis(ch1, ch2)为两个字符之差, 两个串的dis为各个位置上字符 ...
- CF 435B Pasha Maximizes(贪心)
题目链接: [传送门][1] Pasha Maximizes time limit per test:1 second memory limit per test:256 megabytes ...
- Uva 11729 Commando War (简单贪心)
Uva 11729 Commando War (简单贪心) There is a war and it doesn't look very promising for your country. N ...
- CDOJ 1502 string(简单贪心)
题目大意:原题链接 相邻两个字母如果不同,则可以结合为前一个字母,如ac可结合为a.现给定一个字符串,问结合后最短可以剩下多少个字符串 解体思路:简单贪心 一开始读题时,就联想到之前做过的一道题,从后 ...
- ACM_发工资(简单贪心)
发工资咯: Time Limit: 2000/1000ms (Java/Others) Problem Description: 作为广财大的老师,最盼望的日子就是每月的8号了,因为这一天是发工资的日 ...
- ACM_Ruin of Titanic(简单贪心)
Ruin of Titanic Time Limit: 2000/1000ms (Java/Others) Problem Description: 看完Titanic后,小G做了一个梦.梦见当泰坦尼 ...
- cf 605A Sorting Railway Cars 贪心 简单题
其实就是求总长度 - 一个最长“连续”自序列的长度 最长“连续”自序列即一个最长的lis,并且这个lis的值刚好是连续的,比如4,5,6... 遍历一遍,贪心就是了 遍历到第i个时,此时值为a[i], ...
- cf Learn from Life (简单贪心)
有N个人站在一楼.一个电梯最多承载K个人. 每个人都有一个想去的楼层.f[1]....f[N]. f[i]属于[2,2000] 从a层到b层需花费abs(a-b)秒. 问电梯送完所有人然后回到一楼至少 ...
- hdu 2037简单贪心--活动安排问题
活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子.该问题要求高效地安排一系列争用某一公共资源的活动.贪心算法提供了一个简单.漂亮的方法使得尽可能多的活动 ...
随机推荐
- 2. Go并发编程--GMP调度
目录 1. 前言 1.1 Goroutine 调度器的 GMP 模型的设计思想 1.2 GMP 模型 1.3. 有关M和P的个数问题 1.4 P 和 M 何时会被创建 2. 调度器的设计策略 3. g ...
- PHP的引用计数是什么意思?
什么是引用计数 在PHP的数据结构中,引用计数就是指每一个变量,除了保存了它们的类型和值之外,还额外保存了两个内容,一个是当前这个变量是否被引用,另一个是引用的次数.为什么要多保存这样两个内容呢?当然 ...
- composer出现问题: Could not open input file: composer.phar
可以执行下面命令 php -r "readfile('https://getcomposer.org/installer');" | php This will install c ...
- mysql 基础配置经验
创建库: 排序:utf8_unicode_ci和utf8_general_ci对中.英文来说没有实质的差别.utf8_general_ci校对速度快,但准确度稍差. 普遍的意思utf8_unicode ...
- Python Type Hints(类型提示)
在做自动化测试的时候,改进测试框架,类型提示会让你写代码时更加流程,当你在一个模块定义了类型,而其他模块没有提示的时候,是相当不方便.
- Spring Cloud Gateway 没有链路信息,我 TM 人傻了(下)
本系列是 我TM人傻了 系列第五期[捂脸],往期精彩回顾: 升级到Spring 5.3.x之后,GC次数急剧增加,我TM人傻了 这个大表走索引字段查询的 SQL 怎么就成全扫描了,我TM人傻了 获取异 ...
- HTML 网页开发、CSS 基础语法——四. HTML基本语法
1. HTML规范和HTML标签 W3C:world wide web consortium,万维网联盟.专门发布和维护互联网的规范和标准. 2. HTML标签 HTML 标记通常被称为 HTML 标 ...
- P4091-[HEOI2016/TJOI2016]求和【斯特林数,NTT】
正题 题目链接:https://www.luogu.com.cn/problem/P4091 题目大意 给出\(n\),求 \[\sum_{i=0}^n\sum_{j=0}^i\begin{Bmatr ...
- 深入浅出WPF-05.控件与布局
控件与布局 突出特点:1.专门的UI设计语言XAML,无需像MFC那样使用编程语言设计UI.2.前几代在UI和数据交互方面是由消息Message到控件事件,始终是把UI控件放在主导位置而把数据放在了次 ...
- asp.net core 中配合响应 html5 的音视频播放流,以及文件下载
一.asp.net core 中配合响应 html5 的音视频播放流,以及文件下载 问题描述: 目前测试了在 Windows(谷歌浏览器).Android(系统浏览器.QQ.微信).iOS 三个系统不 ...