zoukankan      html  css  js  c++  java
  • Heap Partition ZOJ

    ZOJ - 3963

    贪心做一下就好了

    反正别用memset

    #include <iostream>
    #include <cstdio>
    #include <sstream>
    #include <cstring>
    #include <map>
    #include <cctype>
    #include <set>
    #include <vector>
    #include <stack>
    #include <queue>
    #include <algorithm>
    #include <list>
    #include <cmath>
    #include <bitset>
    #define rap(i, a, n) for(int i=a; i<=n; i++)
    #define rep(i, a, n) for(int i=a; i<n; i++)
    #define lap(i, a, n) for(int i=n; i>=a; i--)
    #define lep(i, a, n) for(int i=n; i>a; i--)
    #define rd(a) scanf("%d", &a)
    #define rlld(a) scanf("%lld", &a)
    #define rc(a) scanf("%c", &a)
    #define rs(a) scanf("%s", a)
    #define rb(a) scanf("%lf", &a)
    #define rf(a) scanf("%f", &a)
    #define pd(a) printf("%d
    ", a)
    #define plld(a) printf("%lld
    ", a)
    #define pc(a) printf("%c
    ", a)
    #define ps(a) printf("%s
    ", a)
    #define MOD 2018
    #define LL long long
    #define ULL unsigned long long
    #define Pair pair<int, int>
    #define mem(a, b) memset(a, b, sizeof(a))
    #define _  ios_base::sync_with_stdio(0),cin.tie(0)
    //freopen("1.txt", "r", stdin);
    using namespace std;
    const int maxn = 110000, INF = 0x7fffffff;
    
    
    struct node
    {
        int w, id;
        node(int w, int id) : w(w), id(id) {}
    };
    bool operator < (node a, node b)
    {
        if(a.w == b.w) return a.id < b.id;
        return a.w < b.w;
    }
    
    
    set<node> s;
    vector<int> G[maxn];
    int b[maxn];
    int ans[maxn];
    
    
    int main()
    {
        int T;
        rd(T);
        while(T--)
        {
            s.clear();
            int n;
            rd(n);
            int a, cnt = 0;
            for(int i = 0; i <= n; i++) G[i].clear(), ans[i] = 0;
            set<node>::iterator it;
            for(int i = 1; i <= n; i++)
            {
                rd(a);
                it = s.lower_bound(node(-a, -i));
                if(it == s.end())
                {
                    G[cnt].push_back(i);
                    b[i] = cnt++;
                }
                else
                {
                    node x = *it;
                    G[b[-x.id]].push_back(i);
                    b[i] = b[-x.id];
                    if(++ans[-x.id] == 2)
                        s.erase(it);
                }
                s.insert(node(-a, -i));
    
            }
            pd(cnt);
            for(int i = 0; i < cnt; i++)
            {
                printf("%d", G[i].size());
                for(int j = 0; j < G[i].size(); j++)
                {
    
                    printf(" %d", G[i][j]);
                }
                printf("
    ");
            }
    
    
    
        }
    
    
        return 0;
    }
  • 相关阅读:
    html 上传图片前预览
    php获取当月天数及当月第一天及最后一天、上月第一天及最后一天实现方法
    php 计算 pdf文件页数
    php 获取半年内每个月的订单数量, 总价, 月份
    php 获取两个数组之间不同的值
    小程序支付功能
    关于nginx的Job for nginx.service failed because the control process exited with error code.错误
    linux 安装 Apollo
    MongoDB待续。。。
    ABP vNext...待续
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/10790982.html
Copyright © 2011-2022 走看看