气死我了人生中第一次打cf就掉分了

A题大水题浪费太多时间囧明明都是A两题亮老师还上分了。。

表示C题打的时候就想到正解啊(而且还更加优秀,因为家里老爷机暴力跑的超龟以为不行 其实是没认真算复杂度),虽然不会证三分性,但是最后还是AC了,暴力1000ms+ 三分40ms+

看着就很奇淫的题,猛然脑海里就想到二分政党的最后得到的选票,然后发现没有单调性,但好像满足三分

然后每次就贪心,for一遍把那些比1政党本来就有的选票+要多拿的选票还要多的拿到比这个值少1

假如还不够要多拿的,那就在剩下的拿最小的凑够

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
typedef long long LL;int m;
LL d[3100][3100],s[3100][3100];
struct node
{LL d;int i,j;node(){}node(LL D,int I,int J){d=D,i=I,j=J;}friend bool operator >(node n1,node n2){return n1.d>n2.d;}friend bool operator <(node n1,node n2){return n1.d<n2.d;}
};
priority_queue<node,vector<node>,greater<node> >q;
LL check(int mid)
{while(!q.empty())q.pop();LL ret=0;int cc=0;mid+=d[1][0];if(mid==0)return (1LL<<62);for(int i=2;i<=m;i++){if(d[i][0]>=mid){int u=d[i][0]-mid+1;ret+=s[i][u];if(u+1<=d[i][0])q.push(node(d[i][u+1],i,u+1));cc+=u;}else if(d[i][0]>0)q.push(node(d[i][1],i,1));}if(cc+d[1][0]<mid){int p=mid-(cc+d[1][0]);while(p--){node t=q.top();q.pop();ret+=t.d;if(t.j+1<=d[t.i][0])q.push(node(d[t.i][t.j+1],t.i,t.j+1));}}return ret;
}
int main()
{
//    freopen("1.in","r",stdin);
//    freopen("1.out","w",stdout);int n,x;LL k;scanf("%d%d",&n,&m);for(int i=1;i<=m;i++)d[i][0]=0;for(int i=1;i<=n;i++){scanf("%d%I64d",&x,&k);d[x][++d[x][0]]=k;}for(int i=2;i<=m;i++){sort(d[i]+1,d[i]+d[i][0]+1);s[i][0]=0;for(int j=1;j<=d[i][0];j++)s[i][j]=s[i][j-1]+d[i][j];}int l=0,r=n-d[1][0];while(r-l>3){int mid=(l+r)/2;int mmid=(mid+r)/2;LL sum1=check(mid),sum2=check(mmid);if(sum1>sum2)l=mid+1;else r=mmid-1;}LL ans=check(l);for(int i=l+1;i<=r;i++){LL dd=check(i);if(dd<ans)ans=dd;}printf("%I64d\n",ans);    return 0;
}

转载于:https://www.cnblogs.com/AKCqhzdy/p/9464063.html

Codeforces Round #503 (by SIS, Div. 2) C. Elections相关推荐

  1. Codeforces Round #503 (by SIS, Div. 2) D. The hat(交互题)

    题目链接:http://codeforces.com/contest/1020/problem/D 题意描述: 这是一个交互题,互交题就是你要输出一些问题,评测机就会回答你一些问题 你要在规定的提问次 ...

  2. Codeforces Round #503 (by SIS, Div. 1)D. the hat

    原题链接:B. The hat 题意:有n(偶数)个人围成一个圈,每个人身上有一个数字,保证相邻两个人的数字差为1, 现在要把第i个人和第i+n/2个人面对面站着,例如现在有8个人,站好后如下: 1 ...

  3. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  4. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

  5. Educational Codeforces Round 37 (Rated for Div. 2) 1

    Educational Codeforces Round 37 (Rated for Div. 2) A.Water The Garden 题意:Max想给花园浇水.花园可被视为长度为n的花园床,花园 ...

  6. Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)

    Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...

  7. Educational Codeforces Round 89 (Rated for Div. 2)(A, B, C, D)

    Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords 思路 题意非常简单,就是得到最多的物品嘛,我们假定a, ...

  8. Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs

    传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici​个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...

  9. Educational Codeforces Round 72 (Rated for Div. 2) D. Coloring Edges dfs树/拓扑找环

    传送门 文章目录 题意: 思路: 题意: 给你一张图,你需要给这个图的边染色,保证如果有环那么这个环内边的颜色不全相同,输出染色方案和用的颜色个数. n,m≤5e3n,m\le5e3n,m≤5e3 思 ...

最新文章

  1. 一个n位的数,去掉其中的k位,问怎样去使得留下来的(n-k)位数按原来的前后顺序组成的数最小...
  2. C# CheckBox与RadioButton
  3. python编写篮球_Python编程2——Python实现计算篮球比赛是否领先安全的程序
  4. Electron是个啥?
  5. 解决 sessionStroage 无法在多个标签页共享数据的问题
  6. centos7下安装python3.7.0以上版本时报错ModuleNotFoundError: No module named ‘_ctypes‘的解决办法
  7. Python 简单网页爬虫学习
  8. top 100 liked Q (26-)
  9. 批量删除和修改特定前缀的mysql表
  10. python azure-storage-blob库 使用SAS key下载blob文件实例
  11. Matlab 中文版下载,安装图文教程
  12. c语言考研真题及答案pdf,中财信息学院C语言程序设计2002年考研真题及答案.pdf...
  13. 离散数学西电版复习笔记——第一章:命题逻辑
  14. 为什么很多视频一模一样,也没有被判定为搬运?
  15. 校园IPTV数字电视教学直播系统方案-淮安生态文旅区实验小学
  16. el-table中使用el-popover点击取消按钮时popover框的显示与隐藏问题
  17. AD中出现off grid pin问题的解决方法
  18. 思维导图怎么画?思维导图快速绘制教程
  19. A*寻路中第四种烘培寻路方法Recast Mesh方法:
  20. 测试电视是不是4k的软件,如何检测自家的电视是真4K还是假4K?当贝市场告诉你...

热门文章

  1. 为什么很多公司只给博士发安家费,却不给研究生和本科生发?
  2. 一定要多反思复盘和整理
  3. 最近我一个朋友在职场上陷入了迷茫
  4. 就说现在的钱有多难挣
  5. 如何将namedtuples序列化为JSON
  6. 如何用手机NFC代替小区门禁?
  7. 爱奇艺、优酷、腾讯独播内容均超70%,如果只能三选一,哪家会员最值得买?
  8. sync/atomic 库使用小结
  9. 【Java开发规范】禁止在 foreach 循环里进行元素的 remove/add 操作
  10. 风之大陆电脑版要下载c语言,风之大陆电脑版