• Codeforces 534D Handshakes 构造 模拟 贪心


    题意:人们依次进大厅,后进来的人会和里面所有的人都握手, 大厅里面有三个人就 其中丧二恩就可以结伴走出大厅。给你每个人进大厅时候握手的次数。让你求一个进场顺序。

    解题思路:比赛的时候是用的从后往前推。比较难,发现从前往后直接模拟就行了 。

    解题代码:

     1 // File Name: d.cpp
     2 // Author: darkdream
     3 // Created Time: 2015年04月13日 星期一 01时30分17秒
     4 
     5 #include<vector>
     6 #include<list>
     7 #include<map>
     8 #include<set>
     9 #include<deque>
    10 #include<stack>
    11 #include<bitset>
    12 #include<algorithm>
    13 #include<functional>
    14 #include<numeric>
    15 #include<utility>
    16 #include<sstream>
    17 #include<iostream>
    18 #include<iomanip>
    19 #include<cstdio>
    20 #include<cmath>
    21 #include<cstdlib>
    22 #include<cstring>
    23 #include<ctime>
    24 #include<queue>
    25 #define LL long long
    26 
    27 using namespace std;
    28 int n ;
    29 int a[200005];
    30 int point[2000005];
    31 int ans[200005];
    32 queue<int> qu[200000];
    33 int main(){
    34     scanf("%d",&n);
    35     for(int i = 1;i <= n;i ++)
    36     {
    37         scanf("%d",&a[i]);
    38         qu[a[i]].push(i);
    39     }
    40     int j = 0 ; 
    41     for(int i = 1;i <= n;i ++){
    42         while(qu[j].empty() && j >= 3)
    43             j -= 3; 
    44         if(qu[j].empty())
    45         {
    46             puts("Impossible
    ");
    47             return 0 ; 
    48         }
    49         ans[i] = qu[j].front();
    50         qu[j].pop();
    51         ++ j;
    52     }
    53     puts("Possible
    ");
    54     for(int i = 1;i <= n;i ++)
    55         printf(i == 1?"%d":" %d",ans[i]);
    56 return 0;
    57 }
    View Code
  • 相关阅读:
    tensorflow 学习
    join-semi and join-anti
    深入拆解Tomcat_Jetty 笔记
    Set化
    DDD实战-笔记
    高并发系统设计-笔记
    技术管理
    性能调优-笔记
    程序员是如何思考的-笔记
    LeetCode
  • 原文地址:https://www.cnblogs.com/zyue/p/4423027.html
Copyright © 2020-2023  润新知