zoukankan      html  css  js  c++  java
  • 【HDOJ6667】Roundgod and Milk Tea(模拟)

    题意:有n个班级,每个班级有a[i]个人,b[i]杯奶茶

    每个人至多喝一杯奶茶,且不能喝自己班的

    问能喝到奶茶的最多总人数

    n<=1e6,a[i],b[i]<=1e9

    思路:

    做法一:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 typedef unsigned int uint;
     5 typedef unsigned long long ull;
     6 typedef pair<int,int> PII;
     7 typedef pair<ll,ll> Pll;
     8 typedef vector<int> VI;
     9 typedef vector<PII> VII;
    10 //typedef pair<ll,ll>P;
    11 #define N  1000010
    12 #define M  200010
    13 #define fi first
    14 #define se second
    15 #define MP make_pair
    16 #define pb push_back
    17 #define pi acos(-1)
    18 #define mem(a,b) memset(a,b,sizeof(a))
    19 #define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)
    20 #define per(i,a,b) for(int i=(int)a;i>=(int)b;i--)
    21 #define lowbit(x) x&(-x)
    22 #define Rand (rand()*(1<<16)+rand())
    23 #define id(x) ((x)<=B?(x):m-n/(x)+1)
    24 #define ls p<<1
    25 #define rs p<<1|1
    26 
    27 const int MOD=1e9+7,inv2=(MOD+1)/2;
    28       double eps=1e-4;
    29       int INF=1e9;
    30       int inf=0x7fffffff;
    31       int dx[4]={-1,1,0,0};
    32       int dy[4]={0,0,-1,1};
    33 
    34 ll a[N],b[N];
    35 
    36 ll read()
    37 {
    38    ll v=0,f=1;
    39    char c=getchar();
    40    while(c<48||57<c) {if(c=='-') f=-1; c=getchar();}
    41    while(48<=c&&c<=57) v=(v<<3)+v+v+c-48,c=getchar();
    42    return v*f;
    43 }
    44 
    45 void solve()
    46 {
    47     int n;
    48     scanf("%d",&n);
    49     ll s=0,ans=0;
    50     rep(i,1,n)
    51     {
    52         a[i]=read(),b[i]=read();
    53         s+=b[i];
    54     }
    55     rep(i,1,n) ans+=min(a[i],s-b[i]);
    56     ans=min(ans,s);
    57     printf("%I64d
    ",ans);
    58 }
    59 
    60 
    61 
    62 int main()
    63 {
    64     int cas=read();
    65     while(cas--) solve();
    66     return 0;
    67 }

     做法二:题解做法

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 typedef unsigned int uint;
     5 typedef unsigned long long ull;
     6 typedef pair<int,int> PII;
     7 typedef pair<ll,ll> Pll;
     8 typedef vector<int> VI;
     9 typedef vector<PII> VII;
    10 #define N  1100000
    11 #define M  4100000
    12 #define fi first
    13 #define se second
    14 #define MP make_pair
    15 #define pi acos(-1)
    16 #define mem(a,b) memset(a,b,sizeof(a))
    17 #define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)
    18 #define per(i,a,b) for(int i=(int)a;i>=(int)b;i--)
    19 #define lowbit(x) x&(-x)
    20 #define Rand (rand()*(1<<16)+rand())
    21 #define id(x) ((x)<=B?(x):m-n/(x)+1)
    22 #define ls p<<1
    23 #define rs p<<1|1
    24 
    25 const ll MOD=1e9+7,inv2=(MOD+1)/2;
    26       double eps=1e-6;
    27       int INF=1e9;
    28 
    29 
    30 int read()
    31 {
    32    int v=0,f=1;
    33    char c=getchar();
    34    while(c<48||57<c) {if(c=='-') f=-1; c=getchar();}
    35    while(48<=c&&c<=57) v=(v<<3)+v+v+c-48,c=getchar();
    36    return v*f;
    37 }
    38 
    39 int a[N],b[N];
    40 
    41 int main()
    42 {
    43     //freopen("1.in","r",stdin);
    44     int cas;
    45     scanf("%d",&cas);
    46     while(cas--)
    47     {
    48         int n=read();
    49         ll sa=0,sb=0;
    50         rep(i,1,n)
    51         {
    52             a[i]=read(); b[i]=read();
    53             sa+=a[i];
    54             sb+=b[i];
    55         }
    56         if(sa>sb)
    57         {
    58             int flag=0,s=0;
    59             rep(i,1,n)
    60              if(a[i]+b[i]-(sa-sb)>sb)
    61              {
    62                  flag=1;
    63                  s=a[i]+b[i]-(sa-sb)-sb;
    64              }
    65              if(flag) printf("%I64d
    ",sb-s);
    66               else printf("%I64d
    ",sb);
    67         }
    68          else
    69          {
    70              int flag=0,s=0;
    71              rep(i,1,n)
    72               if(a[i]+b[i]-(sb-sa)>sa)
    73               {
    74                  flag=1;
    75                  s=a[i]+b[i]-(sb-sa)-sa;
    76               }
    77              if(flag) printf("%I64d
    ",sa-s);
    78               else printf("%I64d
    ",sa);
    79          }
    80     }
    81 
    82     return 0;
    83 }
  • 相关阅读:
    【做题】51NOD1518 稳定多米诺覆盖——容斥&dp
    【做题】TCSRM592 Div1 500 LittleElephantAndPermutationDiv1——计数&dp
    【做题】TCSRM591 Div1 500 PyramidSequences——数形结合&思维
    【做题】NOWCODER142A Ternary String——数列&欧拉定理
    【做题】CF196E. Opening Portals 排除无用边&最小生成树
    【做题】HDU6331 Walking Plan——矩阵&分块
    【做题】BZOJ2534 L-gap字符串——调和级数
    【做题】BZOJ2342 双倍回文——马拉车&并查集
    overleaf 提交arXiv 不成功
    神经网络 (2)- Alexnet Training on MNIST
  • 原文地址:https://www.cnblogs.com/myx12345/p/11654748.html
Copyright © 2011-2022 走看看