zoukankan      html  css  js  c++  java
  • Codeforces 798D Mike and distribution

    题目链接

    题目大意

    给定两个序列a,b,要求找到不多于个下标,使得对于a,b这些下标所对应数的2倍大于所有数之和。

    N<=100000,所有输入大于0,保证有解。

    因为明确的暗示,所以一定找个。

    考虑去掉取整符号,分奇偶讨论。

    1 n为奇数

    将a从大到小排序,首先取最大的,接着每两个数取其中b较大的。

    2 n为偶数

     将a从大到小排序,首先取最大的和另一个(都可以),接着每两个数取其中b较大的。

     1 #include<algorithm>
     2 #include<iostream>
     3 #include<cstdio>
     4 using namespace std;
     5 const int N=100005;
     6 int n;
     7 struct node
     8 {
     9     int a,b,pos;
    10 }t[N];
    11 bool cmp(node c,node d)
    12 {
    13     return c.a>d.a;
    14 }
    15 int main()
    16 {
    17     scanf("%d",&n);
    18     for(int i=1;i<=n;i++)
    19         scanf("%d",&t[i].a);
    20     for(int i=1;i<=n;i++)
    21         scanf("%d",&t[i].b);
    22     for(int i=1;i<=n;i++)
    23         t[i].pos=i;
    24     sort(t+1,t+n+1,cmp);
    25     printf("%d
    ",n/2+1);
    26     printf("%d ",t[1].pos);
    27     if(n%2==0)
    28     {
    29         printf("%d ",t[n].pos);
    30         n--;
    31     }
    32     for(int i=2;i<=n;i+=2)
    33         if(t[i].b>t[i+1].b)
    34             printf("%d ",t[i].pos);
    35         else
    36             printf("%d ",t[i+1].pos);
    37     printf("
    ");
    38     return 0;
    39 }
  • 相关阅读:
    vue中富文本编辑框
    vue中生成二维码
    在ABP中使用linq
    js根据年月得到当前这个月总共有多少天
    mescroll在vue中的应用
    javascript积累
    javascript常用的操作
    情侣间常犯的7个沟通问题
    欧洲旅游六大最佳目的地
    见与不见
  • 原文地址:https://www.cnblogs.com/fantasquex/p/9350593.html
Copyright © 2011-2022 走看看