• The Weakest Sith


    http://codeforces.com/gym/101149/problem/F

    题目要输出最丑陋的衣服。所以每件衣服都要和其他衣服比一次。

    但是注意到,能赢一件衣服的衣服,就算是好衣服了。

    那么,可以选1做起始点,然后向后比较,如果后面的能赢比较点,那么这件就是好衣服了。

    如果不能,那么证明起始点那件衣服是好衣服。当前这件衣服不确定,所以就重新选这件衣服做起吃点,去比较。

    有可能会1赢7,7赢8但是8赢2这样,就是说可能要往前比较一次。

    所以把数组写两次就可以了。

    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #define IOS ios::sync_with_stdio(false)
    using namespace std;
    #define inf (0x3f3f3f3f)
    typedef long long int LL;
    
    #include <iostream>
    #include <sstream>
    #include <vector>
    #include <set>
    #include <map>
    #include <queue>
    #include <string>
    const int maxn = 2e5 + 20;
    struct node {
        int a, b, c;
        bool operator == (const struct node & rhs) const {
            return a == rhs.a && b == rhs.b && c == rhs.c;
        }
    }arr[maxn * 2];
    bool iswin[maxn * 2];
    bool check(struct node a, struct node b) { //b打赢a
        if (b.a > a.a && b.b > a.b) return true;
        if (b.a > a.a && b.c > a.c) return true;
        if (b.b > a.b && b.c > a.c) return true;
        return false;
    }
    void work() {
        int n;
        cin >> n;
        for (int i = 1; i <= n; ++i) {
            cin >> arr[i].a >> arr[i].b >> arr[i].c;
            arr[i + n] = arr[i];
        }
        int ans = 0;
        struct node now = arr[1];
        int id = 1;
        for (int i = 2; i <= 2 * n; ++i) {
            if (now == arr[i]) continue;
            if (check(now, arr[i])) {
                iswin[i] = true;
            } else {
                iswin[id] = true;
                now = arr[i];
                id = i;
            }
        }
        for (int i = 1; i <= n; ++i) {
            ans += iswin[i] == false;
        }
        cout << ans << endl;
        for (int i = 1; i <= n; ++i) {
            if (iswin[i] == false) {
                cout << i << endl;
            }
        }
    }
    
    int main() {
    #ifdef local
        freopen("data.txt","r",stdin);
    #endif
        IOS;
        work();
        return 0;
    }
    View Code
  • 相关阅读:
    Python队列
    Python异步IO(协程)
    redis学习笔记
    Python线程池
    Python多线程与多进程知识梳理
    Golang处理小数四舍五入与不进行四舍五入的用法
    Linux定时备份数据库,通过使用Shell脚本自动备份数据库
    基于.Net C# 通信开发串口调试助手
    基于.Net C# 通信开发网络调试助手
    使用RestTemplate调用第三方接口上传文件
  • 原文地址:https://www.cnblogs.com/liuweimingcprogram/p/6038291.html
Copyright © 2020-2023  润新知