zoukankan      html  css  js  c++  java
  • 1020C Elections

    传送门

    题目大意

    现在有 n个人,m个党派,第i个人开始想把票投给党派pi,而如果想让他改变他的想法需要花费ci元。你现在是党派1,问你最少花多少钱使得你的党派得票数大于其它任意党派。

    分析

    我们枚举i,表示除了自己之外的其它任何党派最多得票数不超过i,而我们每次只需要改变一个党派中需要花费的钱最少的那几个人就行了,在保证其它党派德比得票数都小于i之后如果自己党派的得票小于i,则不断改变需花费钱最少的那一个人的想法就行了。详见代码。

    代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cctype>
    #include<cmath>
    #include<cstdlib>
    #include<queue>
    #include<ctime>
    #include<vector>
    #include<set>
    #include<map>
    #include<stack>
    using namespace std;
    #define li long long
    const li inf = 1e18;
    struct node {
          int a;
          li b;
    };
    node d[5000];
    inline bool cmp(const node x,const node y){
          return x.b<y.b;
    }
    int used[5000],tot[5000];
    int main(){
          int n,m,i,j,k;
          scanf("%d%d",&n,&m);
          for(i=1;i<=n;i++){
            scanf("%d%lld",&d[i].a,&d[i].b);
          }
          sort(d+1,d+n+1,cmp);
          li ans=inf;
          for(i=1;i<=n;i++){
              memset(used,0,sizeof(used));
              memset(tot,0,sizeof(tot));
              li sum=0;
              for(j=n;j>0;j--)
                if(d[j].a!=1){
                    if(tot[d[j].a]+1>=i){
                      tot[1]++;
                      used[j]=1;
                      sum+=d[j].b;
                    }else {
                      tot[d[j].a]++;
                    }
                }else {
                  tot[1]++;
                used[j]=1;    
                }
              for(j=1;j<=n;j++)
                if(!used[j]&&tot[1]<i){
                    tot[1]++;
                    sum+=d[j].b;
                }
              if(tot[1]>=i)ans=min(ans,sum);
          }
          cout<<ans<<endl;
          return 0;
    }
  • 相关阅读:
    asp.net 内部重定向
    配置元素customErrors
    路由配置4-伪静态
    路由配置3
    路由配置2(转)
    ASP.NET实现图片防盗链(转)
    global中拦截404错误的实现方法
    使用一个HttpModule拦截Http请求,来检测页面刷新(F5或正常的请求)
    HttpApplication事件执行顺序(转)
    Android Studio NDK 新手教程(5)--Java对象的传递与改动
  • 原文地址:https://www.cnblogs.com/yzxverygood/p/9463247.html
Copyright © 2011-2022 走看看