zoukankan      html  css  js  c++  java
  • codeforces To Add or Not to Add (排序 + 优化)

    http://codeforces.com/problemset/problem/231/C

     题意:

    有 n 个数 ,你有  k 个 1 向这 n 个数加 (也可以 不加),求  使经过操作后 ,  相同的数最多 为  多少,这个数的数值为多少?

    题解:

    排序 + 优化。。。。 

     1 #include<stdio.h>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<queue>
     7 #include<set>
     8 #include<map>
     9 #define Min(a,b)  a>b?b:a
    10 #define Max(a,b)  a>b?a:b
    11 #define CL(a,num)  memset(a,num,sizeof(a));
    12 #define inf 9999999
    13 #define maxn 103000
    14 #define eps  1e-6
    15 using namespace std;
    16 #define read() freopen("data.txt","r",stdin) ;
    17 #define mod 1000000007
    18 #define ll    __int64
    19 int n , m ;
    20 ll a[maxn],s[maxn] ;
    21 int main()
    22 {
    23     int i , j ;
    24     //read() ;
    25     while(scanf("%d%d",&n,&m)!=EOF)
    26     {
    27         for(i = 1 ;  i <= n;i++)  scanf("%I64d",&a[i]) ;
    28 
    29         sort(a + 1,a+n + 1) ;
    30         //for(i =0 ; i < n;i++) printf("%d  +++++\n",a[i]) ;
    31         s[0] = 0 ;
    32         for(i = 1 ; i <= n;i++)
    33         {
    34             s[i] = s[i - 1] + a[i] ;
    35         }
    36         ll ans= 0 ;
    37         ll t = a[0] ;
    38         for(i = 1 ,j = 0; i <= n;i++)
    39         {
    40             while( a[i]*(i - j ) - ( s[i] - s[j]) > m && j < i)j++;
    41 
    42             if(i - j  > ans)
    43             {
    44                 ans = i - j ;
    45                 t = a[i]  ;
    46             }
    47 
    48         }
    49         printf("%I64d %I64d\n",ans,t) ;
    50     }
    51 }
  • 相关阅读:
    2.2 范式和反范式
    1.7 关系数据库设计理论
    2.1 选择优化的数据类型
    1.6 间隙锁(next-key locking)
    1.5 MySQL的存储引擎
    1.4 多版本并发控制
    1.3 事物和并发一致性问题
    1.2 并发控制
    1.1 MySQL逻辑架构
    php自定义函数及内部函数----数组处理函数
  • 原文地址:https://www.cnblogs.com/acSzz/p/2743937.html
Copyright © 2011-2022 走看看