zoukankan      html  css  js  c++  java
  • Codeforces Round #553 (Div. 2) D. Stas and the Queue at the Buffet 贪心+公式转化

    题意 给出n个pair (a,b) 把它放在线性序列上 1--n 上 使得  sum(a*(j-1)+b*(n-j))  最小

    思路 :对式子进行合并 同类项 有:    j*(a-b)+  (-a+b*n) 可以发现   只和第一项有关  所以把a-b小的和大的j 结合即可

    比赛的时候被B搞得心态爆炸就开始乱搞了 实际上已经试过a-b 了但是不知道为啥没有过样例 也怪自己不冷静 冷静一推也就是半分钟的事情

     1 #include<bits/stdc++.h>
     2 #define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;i++)
     3 #define MS(arr,arr_value) memset(arr,arr_value,sizeof(arr)) 
     4 #define F first 
     5 #define S second
     6 #define pii pair<int ,int >
     7 #define mkp make_pair
     8 #define pb push_back
     9 #define arr(zzz) array<ll,zzz>
    10 using namespace std;
    11 #define ll long long 
    12 const int maxn=3e5+5;
    13 const int inf=0x3f3f3f3f;
    14 vector<pii>v;
    15 int main(){
    16     int n;
    17     scanf("%d",&n);
    18     for(int i=0;i<n;i++){
    19     int a,b;    
    20         scanf("%d%d",&a,&b);
    21         v.pb(mkp(a,b));
    22     }
    23     sort(v.begin(),v.end(),[&](pii a,pii b)->bool{
    24     return a.F-a.S>b.F-b.S;        
    25     });
    26     ll ans=0;
    27 
    28     for(int i=0;i<n;i++){
    29         ans+=1ll*v[i].F*(i)+1ll*v[i].S*(n-i-1);
    30     }
    31     cout<<ans<<endl;
    32 
    33     return 0;
    34 }
    View Code
  • 相关阅读:
    Linux与Windows命令的比较
    操作系统的启动过程
    Spyder快捷键
    pytoch的最佳打开方式
    操作系统逻辑结构
    插值法
    bzoj3509[CodeChef]COUNTARI
    bzoj2969 矩形粉刷
    hdu5575 Discover Water Tank
    bzoj3473字符串&bzoj3277串
  • 原文地址:https://www.cnblogs.com/ttttttttrx/p/10792953.html
Copyright © 2011-2022 走看看