Codeforces #503 C. Elections(贪心,逆向
逆向考虑。
暴力遍历 k(k是1到n/2+1 范围内的),挑出对于每一个k,记对于党派 i,num[ i ]为其票数。num[ i ]小于k-1的就不用改变投票了(这部分是比较贵的),而 >=k-1的,都让他们投票给党派1(这部分是比较便宜的),这意味着要逆着贪心
简言之,就是尽量使贵的不改,便宜的改,控制贵的票数小于k。
做法:按照p的大小 把结构体按从小到大排序。对于每一个k,从大到小 找出对于这个k 不需要改变投票给1的最大值(总钱数-原来就投给1的钱数-不需要改变投票给1的最大值= 需要改变投票给1的最小值(即答案) )。
- #include<iostream>
- #include<cstdio>
- #include <cctype>
- #include<algorithm>
- #include<cstring>
- #include<cmath>
- #include<string>
- #include<cmath>
- #include<set>
- #include<vector>
- #include<stack>
- #include<queue>
- #include<map>
- using namespace std;
- #define ll long long
- #define mem(a,x) memset(a,x,sizeof(a))
- #define se second
- #define fi first
- const int INF= 0x3f3f3f3f;
- const int N=1e5+;
- int n,m,num[N];
- ll res,sum=,sum1=;
- struct node
- {
- int p,c;
- }a[N];
- bool cmp(node x,node y) { return x.c < y.c ; }
- int main()
- {
- cin>>n>>m;
- for(int i=;i<=n;i++){
- scanf("%d%d",&a[i].p,&a[i].c);
- sum+=a[i].c; //总钱
- if(a[i].p==) sum1+=a[i].c; //原来就投 1的人的总钱
- }
- sort(a+,a++n,cmp);
- ll ans=-;
- for(int k=;k<=n/+;k++) //枚举最终投 1的票数; n/2+1 必要
- {
- ll s=;
- int cnt=;
- for(int i=;i<=m;i++) num[i]=;
- for(int i=n;i>=;i--)
- {
- if(cnt+i <=k) break; // 一定要 cnt+i > k ; 因为累加的是投票不需要改变的最大值, cnt+i = 原来投1的数量+后来被贿赂投1的数量
- if(a[i].p==){
- cnt++;
- continue;
- }
- if(num[a[i].p] <k- )
- {
- s+=a[i].c; //累加 投别的改为投1的钱
- //cout<<a[i].c<<endl;
- num[a[i].p]++;
- }
- else
- cnt++;
- }
- ans=max(ans,s);
- }
- cout<<sum-sum1-ans<<endl;
- }
Codeforces #503 C. Elections(贪心,逆向的更多相关文章
- CodeForces - 1020C C - Elections(贪心+枚举)
题目: 党派竞争投票 有n个人,m个党派,这n个人每个人有一个想要投的党派的编号Pi,如果想要这个人改变他的想法,那么就需要花费Ci元钱. 现在你是编号为1的党派,如果你想要赢(你的票数严格大于其他党 ...
- codeforces 704B - Ant Man 贪心
codeforces 704B - Ant Man 贪心 题意:n个点,每个点有5个值,每次从一个点跳到另一个点,向左跳:abs(b.x-a.x)+a.ll+b.rr 向右跳:abs(b.x-a.x) ...
- CodeForces - 50A Domino piling (贪心+递归)
CodeForces - 50A Domino piling (贪心+递归) 题意分析 奇数*偶数=偶数,如果两个都为奇数,最小的奇数-1递归求解,知道两个数都为1,返回0. 代码 #include ...
- codeforces 1020 C Elections(枚举+贪心)
题意: 有 n个人,m个党派,第i个人开始想把票投给党派pi,而如果想让他改变他的想法需要花费ci元.你现在是党派1,问你最少花多少钱使得你的党派得票数大于其它任意党派. n,m<3000 思路 ...
- Codeforces 161 B. Discounts (贪心)
题目链接:http://codeforces.com/contest/161/problem/B 题意: 有n个商品和k辆购物车,给出每个商品的价钱c和类别t(1表示凳子,2表示铅笔),如果一辆购物车 ...
- CodeForces 176A Trading Business 贪心
Trading Business 题目连接: http://codeforces.com/problemset/problem/176/A Description To get money for a ...
- Codeforces Gym 100803C Shopping 贪心
Shopping 题目连接: http://codeforces.com/gym/100803/attachments Description Your friend will enjoy shopp ...
- Codeforces 486C Palindrome Transformation(贪心)
题目链接:Codeforces 486C Palindrome Transformation 题目大意:给定一个字符串,长度N.指针位置P,问说最少花多少步将字符串变成回文串. 解题思路:事实上仅仅要 ...
- Codeforces 1154D - Walking Robot - [贪心]
题目链接:https://codeforces.com/contest/1154/problem/D 题解: 贪心思路,没有太阳的时候,优先用可充电电池走,万不得已才用普通电池走.有太阳的时候,如果可 ...
随机推荐
- linux 大量time_wait的解决方法
通过调整内核参数解决vi /etc/sysctl.conf 编辑文件,加入以下内容:net.ipv4.tcp_syncookies = 1net.ipv4.tcp_tw_reuse = 1net.ip ...
- LeetCode 783. 二叉搜索树结点最小距离(Minimum Distance Between BST Nodes)
783. 二叉搜索树结点最小距离 LeetCode783. Minimum Distance Between BST Nodes 题目描述 给定一个二叉搜索树的根结点 root, 返回树中任意两节点的 ...
- SpringBoot项目集成PageHelper使用
SpringBoot项目集成PageHelper使用 一.开始 地址:https://github.com/pagehelper/Mybatis-PageHelper 在spring boot ...
- (一)SpringBoot Demo之 Hello World
文章目录 最终效果 pom文件编写 编写资源类 编写控制器 运行项目 原文 : https://spring.io/guides/gs/rest-service/ 类型:官网入门指南 要求:JDK1. ...
- Word 查找替换高级玩法系列之 -- 通配符大全A篇
1. 通配符大全一览 序号 特殊字符(不使用通配符) 代码(不使用通配符) 特殊字符(使用通配符) 代码(使用通配符) 1 任意单个字符 ^? 任意单个字符 ? 2 任意数字 ^### 任意数字(单个 ...
- hdu 6661 Acesrc and String Theory (后缀数组)
大意: 求重复$k$次的子串个数 枚举重复长度$i$, 把整个串分为$n/i$块, 如果每块可以$O(1)$计算, 那么最终复杂度就为$O(nlogn)$ 有个结论是: 以$j$开头的子串重复次数最大 ...
- hdu 1045 要求全部逐一搜索完的深搜
#include<stdio.h> #include<string.h> int visit[10][10]; char map[10][10]; int n,ans,ss,t ...
- App功能测试点总结
1.手机操作系统android(谷歌).ios(苹果).Windows phone(微软).Symbian(诺基亚).BlackBerry OS(黑莓).windows mobile(微软),目前主流 ...
- SQL Server2008本地数据库调用SP发送邮件
一.首先要对本地数据库做配置 1.通过使用数据库邮件配置向导和sp_configure存储过程配置启用数据库邮件: 注:服务器名称填写发送服务器的路径或者IP,电子邮件地址为寄件者地址 配置好数据库邮 ...
- activemq BytesMessage || TextMessage
需求:使用 python 程序向 activemq 的主题推送数据,默认推送的数据类型是 BytesMessage,java 程序那边接收较为麻烦,改为推送 TextMessage 类型的数据 解决方 ...