zoukankan      html  css  js  c++  java
  • Uva1149

    每个bin最多只能放两个,所以最佳的贪心策略是从大的开始放,如果有空间放第二个,尽量放最大的。

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 const int maxn = 100000 + 10;
     6 
     7 int t;
     8 
     9 int n,l;
    10 
    11 int a[maxn];
    12 
    13 int b[maxn];
    14 
    15 int flag[maxn];
    16 
    17 void solve(){
    18     int cnt = 0;
    19     memset(flag, 0, sizeof(flag));
    20     for(int i = 1; i <= n; ++i){
    21             if(flag[i]){
    22                 continue;
    23             } else {
    24                 ++cnt;
    25                 flag[i] = 1;
    26                 int temp = l - a[i];
    27                 int loc = upper_bound(b+1, b+1+n, temp) - b;
    28                 if(loc == 1+n) loc = n;
    29                 for(int j = loc; j >= 1; --j){
    30                     if(!flag[n-j+1] && b[j] <= temp){
    31                         flag[n-j+1] = 1;
    32                         break;
    33                     }
    34                 }
    35             }
    36     }
    37     printf("%d
    ",cnt);
    38     if(t) printf("
    ");
    39 }
    40 
    41 bool cmp(int a, int b){
    42     return a > b;
    43 }
    44 
    45 int main(){
    46         scanf("%d",&t);
    47         while(t--){
    48             scanf("%d%d",&n,&l);
    49             for(int i = 1; i <= n; ++i){
    50                 scanf("%d",&a[i]);
    51                 b[i] = a[i];
    52             }
    53             if(l == 0){
    54                 printf("0
    ");
    55                 continue;
    56             }
    57             sort(a+1, a+1+n, cmp);
    58             sort(b+1, b+1+n);
    59             solve();
    60         }
    61 }
  • 相关阅读:
    Internet上的音频/视频概述
    防火墙
    数据链路层安全
    两类密码体制
    Windows Terminal 美化分享
    2019.11.14 启用了FlagCounter
    检测一个App是不是有UWP血统
    UWP 记一次x64平台无法单步调试的bug
    UWP 使用FontIcon
    Git和Github简单教程
  • 原文地址:https://www.cnblogs.com/GeniusYang/p/6892116.html
Copyright © 2011-2022 走看看