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 }
  • 相关阅读:
    npm start报错
    npm install 错误
    vue父子组件间传值
    vue-devtools安装过程的坑
    用js进行排序
    筛选表格数据
    基于ElementUI封装可复用的表格组件
    小程序头部滑动切换
    DisneyDiffuse解析
    基于URP的ScreenSpaceDecal的实现(其实和URP没啥关系)
  • 原文地址:https://www.cnblogs.com/fantasquex/p/9350593.html
Copyright © 2011-2022 走看看