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");
}
时间: 2024-08-06 03:43:51

cf Make It Nondeterministic (简单贪心)的相关文章

POJ 2393 Yogurt factory(简单贪心)

http://poj.org/problem?id=2393 题意:任务规定,一个酸奶制造厂,在n个星期内,分别要向外提供y[i]unit的酸奶.已知这个制造厂第i周制造每unit酸奶的费用为c[i],储存室储存每1unit酸奶1星期的费用为s.问要完成这个任务的最小费用是多少. . . . . . . . . . . . . . 思路:简单贪心.维护一个目前最优的代价minc = min(c, minc + s),然后求和. #include <iostream> using namespa

POJ 3069 Saruman&#39;s Army (简单贪心)

Saruman's Army Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5343   Accepted: 2733 Description Saruman the White must lead his army along a straight path from Isengard to Helm's Deep. To keep track of his forces, Saruman distributes se

USACO SECTION1 2.1 Milking Cows 简单贪心

题目链接: http://train.usaco.org/usacoprob2?a=p8taXWtZBpU&S=milk2 题目描述: 给出n组数, 求出最长连续有数区间与最长连续无数区间 解题思路: 简单贪心, 先排序, 然后如果有交集判断右端点,如果右端点大则延伸, 否则continue, 如果无交集更新两个ans. 代码: http://train.usaco.org/usacoprob2?a=p8taXWtZBpU&S=milk2 思考: 简单的贪心我的代码却WA了, 记住一切从简

hdu 2037简单贪心--活动安排问题

活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子.该问题要求高效地安排一系列争用某一公共资源的活动.贪心算法提供了一个简单.漂亮的方法使得尽可能多的活动能兼容地使用公共资源 设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源.每个活动i都有 一个要求使用该资源的起始时间si和一个结束时间fi,且si <fi .如果选择了活动i,则它在半开时间区间[si, fi)内占用资源

POJ-3069-Saruman&#39;s Army(Java简单贪心)

Saruman's Army Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4699   Accepted: 2430 Description Saruman the White must lead his army along a straight path from Isengard to Helm's Deep. To keep track of his forces, Saruman distributes se

HDU 1009:FatMouse&amp;#39; Trade(简单贪心)

FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 41982    Accepted Submission(s): 13962 Problem Description FatMouse prepared M pounds of cat food, ready to trade with the cats g

HDU 1009:FatMouse&#39; Trade(简单贪心)

FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 41982    Accepted Submission(s): 13962 Problem Description FatMouse prepared M pounds of cat food, ready to trade with the cats g

cf Learn from Life (简单贪心)

有N个人站在一楼.一个电梯最多承载K个人. 每个人都有一个想去的楼层.f[1]....f[N]. f[i]属于[2,2000] 从a层到b层需花费abs(a-b)秒. 问电梯送完所有人然后回到一楼至少需要多少秒. 思路: 把每个人想去的楼层从小到大排序. 先把高层的人送完再送低层的人,每次送K个.(证明:送最高层的那个人的那一趟(完整)至少需要**时间,在这一趟中“顺带”把去次K-1高层楼的人送完) 代码: int n,k; int f[2005]; int main(){ scanf("%d%

ACM_ICPC hdu-2111(简单贪心算法)

一道非常简单的贪心算法,但是要注意输入的价值是单位体积的价值,并不是这个物品的总价值!#include <iostream> #include <stdio.h> #include <algorithm> using namespace std; struct CT{ int pi; int mi; }; int cmp( CT p1 , CT p2 ){ return p1.pi > p2.pi ; } int main() { int sum , V , n