https://odzkskevi.qnssl.com/7dfb262544887eff6fb35bfb444759d6?v=1502084197

做法是类似于最大割之类的东西,把每个碎片按照按钮拆点,从s到每个碎片第一个点连inf,每个碎片第i个按钮向第i+1个按钮连100-i能量。

然后最大流最小割,最大流=割掉的边和=100*n-能量和的最大值。

#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdio>
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define dow(i,l,r) for(int i=r;i>=l;i--)
#define rep0(i,r) for(int i=0;i<r;i++)
#define repedge(i,x) for(int i=cur[x];i>=0;i=e[i].next)
#define maxn 20020
#define maxm 200100
#define LL long long
using namespace std; typedef struct {
int next,f,t;
}E;
E e[maxm]; int gap[maxn],d[maxn],fi[maxn],cur[maxn],s,t,total=;
const int inf=;
int n,m,q; void add(int j,int k,int l)
{
e[total].f=l;
e[total].t=k;
e[total].next=fi[j];
fi[j]=total;
total++;
} void addedge(int j,int k,int l)
{
add(j,k,l);
add(k,j,);
} int sap(int x,int flow)
{
if (x==t) return flow;
int now=;
repedge(i,x) {
int too=e[i].t;
if (d[too]+==d[x] && e[i].f) {
int more=sap(too,min(e[i].f,flow-now));
e[i].f-=more;
e[i^].f+=more;
cur[x]=i;
if (flow==(now+=more)) return flow;
}
}
if (!(--gap[d[x]])) d[s]=t;
gap[++d[x]]++;
cur[x]=fi[x];
return now;
} int maxflow()
{
memset(d,,sizeof(d));
memset(gap,,sizeof(gap));
rep(i,,t) cur[i]=fi[i];
gap[]=t;
int ans=;
while (d[s]<t) ans+=sap(s,inf);
//printf("%d\n",ans);
return ans;
} int main()
{
// freopen("1.in","r",stdin);
scanf("%d %d",&n,&m);
memset(fi,-,sizeof(fi));
s=n*(m+)+;
t=s+;
rep(i,,n) {
int now=(i-)*(m+);
addedge(s,now+,inf);
addedge(now+m+,t,inf);
rep(j,,m) {
int k;
scanf("%d",&k);
if (k!=-) addedge(now+j,now+j+,-k);
else addedge(now+j,now+j+,inf);
}
}
scanf("%d",&q);
while (q--) {
int j,k;
scanf("%d %d",&j,&k);
rep(i,,m) {
int now1=(j-)*(m+)+i;
int now2=(k-)*(m+)+i+;
addedge(now1,now2,inf);
}
}
//printf("%d\n",maxflow());
printf("%.2lf\n",(100.0*n-maxflow())/(n+0.0));
return ;
}
  • 我1

【CodeChef-SPCLN】Cleaning the Space的更多相关文章

  1. 【BZOJ4619/3709】[Wf2016]Swap Space/[PA2014]Bohater 贪心

    [BZOJ4619][Wf2016]Swap Space Description 你有许多电脑,它们的硬盘用不同的文件系统储存数据.你想要通过格式化来统一文件系统.格式化硬盘可能使它的容量发生变化.为 ...

  2. 【POJ - 2376】Cleaning Shifts(贪心)

    Cleaning Shifts Descriptions: 原文是English,我这就直接上Chinese了,想看原文的点一下链接哦 大表哥分配 N (1 <= N <= 25,000) ...

  3. 【Codechef FRBSUM】【FJOI2016】【BZOJ4299】【BZOJ 4408】 可持久化线段树

    4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 475  Solved: 287[Submit][Status ...

  4. 【CodeChef PREFIXOR】Prefix XOR

    https://odzkskevi.qnssl.com/f0fbdb108ec813b1294f8f714805963b?v=1502083692 网上搜到的题解: http://blog.csdn. ...

  5. 【Luogu P4644】Cleaning Shifts

    题目 给定 \(n\) 个区间 \([a_i, b_i]\), 花费为 \(c_i\), 求覆盖 \([L, R]\) 区间的所有整数的最小花费. \(0\le n \le 10^4, 0\le L, ...

  6. 【CodeChef EDGEST】Edges in Spanning Trees(树链剖分+树上启发式合并)

    点此看题面 大致题意: 给你两棵\(n\)个点的树,对于第一棵树中的每条边\(e_1\),求存在多少条第二棵树中的边\(e_2\),使得第一棵树删掉\(e_1\)加上\(e_2\).第二棵树删掉\(e ...

  7. 【AGC010 C】Cleaning

    题意 有一棵 \(n\) 个点的树,第 \(i\) 个节点有 \(a_i\) 个石子. 每次都可以选择一对不同的叶子节点,这对叶子节点路径上的所有点都必须要有石子.然后去掉这两个叶子节点路径上的每个节 ...

  8. 【RS】Local Latent Space Models for Top- N Recommendation-利用局部隐含空间模型进行Top-N推荐

    [论文标题]Local Latent Space Models for Top- N Recommendation  (KDD-2018 ) [论文作者]—Evangelia Christakopou ...

  9. 【SIGGRAPH】【最终幻想XV】的战斗场景实时演示的要点解说

    [SIGGRAPH][最终幻想XV]的战斗场景实时演示的要点解说 原文:西川善司 http://www.4gamer.net/games/999/G999902/20160730004/        ...

随机推荐

  1. bootstrap的Alerts中 可以放置p标签 设置 align="center" 用来设置文本居中

    效果

  2. Python运维三十六式:用Python写一个简单的监控系统

    市面上有很多开源的监控系统:Cacti.Nagios.Zabbix.感觉都不符合我的需求,为什么不自己做一个呢? 用Python两个小时徒手撸了一个简易的监控系统,给大家分享一下,希望能对大家有所启发 ...

  3. 「日常训练」 Fire!(UVA-11624)

    与其说是训练不如说是重温.重新写了Java版本的代码. import java.util.*; import java.math.*; import java.io.BufferedInputStre ...

  4. oracle 查看锁表及解锁的语句

    解锁语句: alter system kill session 'sid, serial#'; alter system kill session '23, 1647'; 查询那些对象被锁: sele ...

  5. JDBC处理大数据

    1.处理大文本 package com.demo; import java.io.File; import java.io.FileNotFoundException; import java.io. ...

  6. [转]Git 撤销操作

    二. Git撤消操作 12.1 修改最后一次提交 git commit --amend 1.新建一个文件 2.提交一个之前的更改 3.跟踪这个文件 4.跟前一次一起提交 提示你是否重新编辑提交说明,如 ...

  7. Javascript 初学笔记

    变量作用域 自 ES2015 起,JS 引入let 和 const 关键词定义变量的块作用域(Block Scope). var 仅支持全局作用域(Global Scope)和函数作用域(Functi ...

  8. [笔记] FreeBSD使用小技巧

    非交互式添加用户 sed直接修改文件 sed -i '' 's/a/b/' file sed添加一行 sed '1a\ newline' file sed '1s/.*/&\'$'\nnewl ...

  9. 欢迎来怼第二周Scrum会议六(总第十三次)

    一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华 小组照片 二.开会信息 时间:2017/10/25  17:19~17:35(总计16min).地点:东 ...

  10. Android开发第二阶段(1)

    今天:总结第一阶段的冲刺成果,第一阶段就是主要是学习andriod开发,参考文件有<黑马教学视频><Mars教学视频>...结果在看的过程遇到很多问题特别是对java的一些理解 ...