题解 [51nod1461] 稳定桌
解析
一开始看上去毫无思路啊.
但想通了就很很简单.
我们枚举每种长度的边作为最大的边,
于是长度比当前大的边就要砍掉,
而长度比当前小的边只能留下小于等于当前长度的边数,
砍掉代价最小的几条就好了.
用权值线段树维护一下即可.
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define int long long
#define ls(a) a<<1
#define rs(a) a<<1|1
#define fre(x) freopen(x".in","r",stdin),freopen(x".out","w",stdout)
using namespace std;
inline int read(){
int sum=0,f=1;char ch=getchar();
while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0' && ch<='9'){sum=sum*10+ch-'0';ch=getchar();}
return f*sum;
}
const int N=100001;
struct node{int d,l;}a[N];
struct tree{int l,r,cnt,sum;}t[N<<2];
int n,ans=1e18,mx=0;
int b[N],s[N],tot,f[N];
bool cmp(node a,node b){return a.l<b.l;}
inline void build(int p,int l,int r){
t[p].l=l;t[p].r=r;
if(l==r) return ;
int mid=(l+r)>>1;
build(ls(p),l,mid);build(rs(p),mid+1,r);
}
inline void add(int p,int x){
t[p].cnt++;t[p].sum+=x;
if(t[p].l==t[p].r) return ;
int mid=(t[p].l+t[p].r)>>1;
if(x<=mid) add(ls(p),x);
else if(x>mid) add(rs(p),x);
}
inline int query(int p,int k){
if(t[p].cnt<=k) return t[p].sum;
if(t[p].l==t[p].r) return t[p].l*k;
int tt=t[ls(p)].cnt;
if(tt>=k) return query(ls(p),k);
else return t[ls(p)].sum+query(rs(p),k-tt);
}
signed main(){
n=read();
for(int i=1;i<=n;i++) a[i].l=read();
for(int i=1;i<=n;i++) a[i].d=read();
for(int i=1;i<=n;i++) mx=max(mx,a[i].d);
sort(a+1,a+n+1,cmp);build(1,1,mx);
for(int i=n;i>=1;i--) f[i]=f[i+1]+a[i].d;
for(int l=1,r=1,sum=0;l<=n;l=r=r+1){
while(a[r+1].l==a[r].l) r++;
int cnt=r-l+1,tt=0;
if(sum>(cnt-1)) tt=query(1,sum-(cnt-1));
ans=min(ans,tt+f[r+1]);
for(int i=l;i<=r;i++) add(1,a[i].d);
sum+=cnt;
}
printf("%lld\n",ans);
return 0;
}
题解 [51nod1461] 稳定桌的更多相关文章
- 胡小兔的OI日志3 完结版
胡小兔的 OI 日志 3 (2017.9.1 ~ 2017.10.11) 标签: 日记 查看最新 2017-09-02 51nod 1378 夹克老爷的愤怒 | 树形DP 夹克老爷逢三抽一之后,由于采 ...
- 51nod 1494 选举拉票 | 线段树
51nod1494 选举拉票 题面 现在你要竞选一个县的县长.你去对每一个选民进行了调查.你已经知道每一个人要选的人是谁,以及要花多少钱才能让这个人选你.现在你想要花最少的钱使得你当上县长.你当选的条 ...
- 【题解】P1407国家集训队稳定婚姻
[题解][P1407 国家集训队]稳定婚姻 很好的一道建模+图论题. 婚姻关系?很像二分图匹配呀,不过不管怎么办先建模再说.婚姻关系显然用图方面的知识解决.建图! 它给定的是字符串,所以我们使用\(a ...
- 题解【洛谷P1407】 [国家集训队]稳定婚姻
题面 题解 很好的\(Tarjan\)练习题. 主要讲一下如何建图. 先用\(STL \ map\)把每个人的名字映射成数字. 输入第\(i\)对夫妻时把女性映射成\(i\),把男性映射成\(i+n\ ...
- UVA 1175 Ladies' Choice 稳定婚姻问题
题目链接: 题目 Ladies' Choice Time Limit: 6000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu 问题 ...
- BZOJ2140: 稳定婚姻
题解: 题意就是求二分图的必须边. 我们有结论: 在残量网络上跑tarjan,对于一条边(u,v) 如果该边满流||scc[u]==scc[v],那么该边是可行边. 因为如果scc[u]==scc[v ...
- Grandpa's Estate - POJ 1228(稳定凸包)
刚开始看这个题目不知道是什么东东,后面看了大神的题解才知道是稳定凸包问题,什么是稳定凸包呢?所谓稳定就是判断能不能在原有凸包上加点,得到一个更大的凸包,并且这个凸包包含原有凸包上的所有点.知道了这个东 ...
- 【稳定婚姻问题】【HDU1435】【Stable Match】
2015/7/1 19:48 题意:给一个带权二分图 求稳定匹配 稳定的意义是对于某2个匹配,比如,( a ---- 1) ,(b----2) , 如果 (a,2)<(a,1) 且(2,a)& ...
- 【LeetCode题解】排序
1. 排序 排序(sort)是一种常见的算法,把数据根据特定的顺序进行排列.经典的排序算法如下: 冒泡排序(bubble sort) 插入排序(insertion sort) 选择排序(selecti ...
随机推荐
- MySQL主从同步报错1507
mysql 从库上手动删除partiton后,主库未做修改.后期主库上删除partiton后,出现问题. 故障现场 Last_Errno: 1507 Last_Error: Error 'Error ...
- fiddler模拟发送请求和响应
iddler模拟发送请求和响应 一.fiddler模拟发送请求 1.fiddler模拟发送get请求 1)例如:访问博客园https://www.cnblogs.com/,并且登录输入密码账号登录,再 ...
- html中'disabled'与'readonly'的区别
html中'disabled'与'readonly'的区别 此随笔增量编辑 disabled 在提交表单的时候 值不会带入表单中, 而readonly则可以将值带入表单中.
- Hadoop学习(2)-java客户端操作hdfs及secondarynode作用
首先要在windows下解压一个windows版本的hadoop 然后在配置他的环境变量,同时要把hadoop的share目录下的hadoop下的相关jar包拷贝到esclipe 然后Build Pa ...
- (八)Spring 事务管理
目录 文章目录 @[toc] **`Spring`** 事务管理 `Api` 介绍之 **`PlatformTransactionManager`** 后记 #Spring 的事务管理 编程式事务管理 ...
- Python基础 第三章 使用字符串(3)字符串方法&本章小结
字符串的方法非常之多,重点学习一些最有用的,完整的字符串方法参见<Python基础教程(第三版)>附录B. 模块string,虽然风头已小,但其包含了一些字符串方法中没有的常量和函数,故将 ...
- Vasya's Function CodeForces - 837E (gcd)
大意: 给定$a,b$, $1\le a,b\le 1e12$, 定义 $f(a,0)=0$ $f(a,b)=1+f(a,b-gcd(a,b))$ 求$f(a,b)$. 观察可以发现, 每次$b$一定 ...
- windows下安装mongoDB(zip版)
windows下安装mongoDB(zip版) 下面说明如何在win10下用zip包安装好mongoDB数据库 首先要先从网上下载mongoDB的zip包 http://dl.mongodb.org/ ...
- Java并发(思维导图)【待评估、删除】
1, 2, 3,常用函数 Semaphore import java.util.concurrent.Semaphore;Semaphore name=new Semaphore(n); name.a ...
- 关于一些JS的运算符
首先呢,什么是JavaScript:JavaScript是一种脚本语言,也是一种解释型语言,更是一种由数据值决定变量类型的弱类型语言 JavaScript主要由三部分组成 ECMAScript 这个 ...