zoukankan      html  css  js  c++  java
  • [2019杭电多校第七场][hdu6655]Just Repeat

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6655

    题意是说两个人都有一些带有颜色的牌,两人轮流出牌,但是不能出对面出过的颜色的牌,最后谁不能出牌谁输。

    贪心的想,如果这种牌我有对方也有,那我肯定先出以此来减少对方可出的牌,如果有几种这样的牌,那肯定是先出两方手牌总和最多的那种颜色。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<string>
     5 #include<algorithm>
     6 #include<vector>
     7 #include<map>
     8 using namespace std;
     9 typedef long long ll;
    10 typedef unsigned long long ull;
    11 const int maxn = 2e5 + 110;
    12 struct node {
    13     ll id, num;
    14     node() {}
    15     node(ll _id, ll _num) { id = _id, num = _num; }
    16 }q[maxn];
    17 int a[maxn], b[maxn], num[maxn], numa[maxn], numb[maxn];
    18 ull k1, k2;
    19 int mod;
    20 ull rng() {
    21     unsigned long long k3 = k1, k4 = k2;
    22     k1 = k4;
    23     k3 ^= k3 << 23;
    24     k2 = k3 ^ k4 ^ (k3 >> 17) ^ (k4 >> 26);
    25     return k2 + k4;
    26 }
    27 bool cmp(node a, node b) {
    28     return a.num > b.num;
    29 }
    30 int main() {
    31     int t;
    32     scanf("%d", &t);
    33     while (t--) {
    34         int n, m, p, len = 0, cnt = 0;
    35         scanf("%d%d%d", &n, &m, &p);
    36         if (p == 1) {
    37             for (int i = 1; i <= n; i++)
    38                 scanf("%d", &a[i]), num[++len] = a[i];
    39             for (int i = 1; i <= m; i++)
    40                 scanf("%d", &b[i]), num[++len] = b[i];
    41         }
    42         else {
    43             scanf("%llu%llu%d", &k1, &k2, &mod);
    44             for (int i = 1; i <= n; i++)
    45                 a[i] = (int)(rng() % mod), num[++len] = a[i];
    46             scanf("%llu%llu%d", &k1, &k2, &mod);
    47             for (int i = 1; i <= m; i++)
    48                 b[i] = (int)(rng() % mod), num[++len] = b[i];
    49         }
    50         sort(num + 1, num + 1 + len);
    51         len = unique(num + 1, num + 1 + len) - num - 1;
    52         for (int i = 0; i <= len; i++)
    53             numa[i] = numb[i] = 0;
    54         for (int i = 1; i <= n; i++) {
    55             int x = lower_bound(num + 1, num + 1 + len, a[i]) - num;
    56             numa[x]++;
    57         }
    58         for (int i = 1; i <= m; i++) {
    59             int x = lower_bound(num + 1, num + 1 + len, b[i]) - num;
    60             numb[x]++;
    61         }
    62         for (int i = 1; i <= len; i++) {
    63             if (numa[i] && numb[i])
    64                 q[++cnt] = node(i, numa[i] + numb[i]);
    65         }
    66         sort(q + 1, q + 1 + cnt, cmp);
    67         int w = 1, suma = n, sumb = m;
    68         for (int i = 1; i <= cnt; i++) {
    69             if (w & 1)
    70                 suma--, sumb -= numb[q[i].id];
    71             else
    72                 sumb--, suma -= numa[q[i].id];
    73             w++;
    74         }
    75         if (w & 1) {
    76             if (suma > sumb)
    77                 printf("Cuber QQ
    ");
    78             else
    79                 printf("Quber CC
    ");
    80 
    81         }
    82         else {
    83             if (sumb > suma)
    84                 printf("Quber CC
    ");
    85             else
    86                 printf("Cuber QQ
    ");
    87 
    88         }
    89     }
    90 }
  • 相关阅读:
    工作的价值
    面对伤害该不该回击
    建议
    利用私有的API获得手机上所安装的所有应用信息(包括版本,名称,bundleID,类型)
    你必须知道的HTTP错误
    静态库制作
    MDM证书申请的流程
    IOS客户端实现RSA加密
    获得appstore里面app的最新的版本信息,进行版本更新
    C语言实现简单php自定义扩展
  • 原文地址:https://www.cnblogs.com/sainsist/p/11385630.html
Copyright © 2011-2022 走看看