【CodeChef-SPCLN】Cleaning the Space
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的更多相关文章
- 【BZOJ4619/3709】[Wf2016]Swap Space/[PA2014]Bohater 贪心
[BZOJ4619][Wf2016]Swap Space Description 你有许多电脑,它们的硬盘用不同的文件系统储存数据.你想要通过格式化来统一文件系统.格式化硬盘可能使它的容量发生变化.为 ...
- 【POJ - 2376】Cleaning Shifts(贪心)
Cleaning Shifts Descriptions: 原文是English,我这就直接上Chinese了,想看原文的点一下链接哦 大表哥分配 N (1 <= N <= 25,000) ...
- 【Codechef FRBSUM】【FJOI2016】【BZOJ4299】【BZOJ 4408】 可持久化线段树
4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 475 Solved: 287[Submit][Status ...
- 【CodeChef PREFIXOR】Prefix XOR
https://odzkskevi.qnssl.com/f0fbdb108ec813b1294f8f714805963b?v=1502083692 网上搜到的题解: http://blog.csdn. ...
- 【Luogu P4644】Cleaning Shifts
题目 给定 \(n\) 个区间 \([a_i, b_i]\), 花费为 \(c_i\), 求覆盖 \([L, R]\) 区间的所有整数的最小花费. \(0\le n \le 10^4, 0\le L, ...
- 【CodeChef EDGEST】Edges in Spanning Trees(树链剖分+树上启发式合并)
点此看题面 大致题意: 给你两棵\(n\)个点的树,对于第一棵树中的每条边\(e_1\),求存在多少条第二棵树中的边\(e_2\),使得第一棵树删掉\(e_1\)加上\(e_2\).第二棵树删掉\(e ...
- 【AGC010 C】Cleaning
题意 有一棵 \(n\) 个点的树,第 \(i\) 个节点有 \(a_i\) 个石子. 每次都可以选择一对不同的叶子节点,这对叶子节点路径上的所有点都必须要有石子.然后去掉这两个叶子节点路径上的每个节 ...
- 【RS】Local Latent Space Models for Top- N Recommendation-利用局部隐含空间模型进行Top-N推荐
[论文标题]Local Latent Space Models for Top- N Recommendation (KDD-2018 ) [论文作者]—Evangelia Christakopou ...
- 【SIGGRAPH】【最终幻想XV】的战斗场景实时演示的要点解说
[SIGGRAPH][最终幻想XV]的战斗场景实时演示的要点解说 原文:西川善司 http://www.4gamer.net/games/999/G999902/20160730004/ ...
随机推荐
- iOS 的音频播放
一.Audio Toolbox 1.使用代码 #import <AudioToolbox/AudioToolbox.h> AudioServicesPlaySystemSound(1106 ...
- 创建Springmvc项目时,特殊拦截器失效情况的原因及解决办法
最近开发一个新项目时,搭建springmvc框架时,遇到一个拦截器失效的情况困扰了两天.现在解决,特此记录一下. 拦截器不生效的情况描述: 设置登录拦截的时候,首先登录接口肯定是不用拦截的.所以需要在 ...
- 四、Django设置相关
1.全局设置 setttings文件 import os import sys # Build paths inside the project like this: os.path.join(BAS ...
- 了解ASP.NET Core 依赖注入,看这篇就够了
DI在.NET Core里面被提到了一个非常重要的位置, 这篇文章主要再给大家普及一下关于依赖注入的概念,身边有工作六七年的同事还个东西搞不清楚.另外再介绍一下.NET Core的DI实现以及对实例 ...
- javaweb(二十四)——jsp传统标签开发
一.标签技术的API 1.1.标签技术的API类继承关系 二.标签API简单介绍 2.1.JspTag接口 JspTag接口是所有自定义标签的父接口,它是JSP2.0中新定义的一个标记接口,没有任何属 ...
- css各种鼠标手型集合
比较齐全的鼠标手型css在国内的网站上是没搜到这么全的比如说哪个禁止的手型:鼠标往下移动即可看到效果: html代码如下: <h1>Cursors</h1> <div c ...
- 33.[LeetCode] Search in Rotated Sorted Array
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- 剑指 Offer——数字在排序数组中出现的次数
1. 题目 2. 解答 时间复杂度为 \(O(n)\) 的算法,顺序遍历数组,当该数字第一次出现时开始记录次数. class Solution { public: int GetNumberOfK(v ...
- Oracle 11g用exp无法导出空表的处理方法
Oracle 11G在用EXPORT导出时,空表不能导出. 11G中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法: 1.insert一行,再rollback就产生segment ...
- Python3基础-表达式和运算符
表达式和运算符 什么是表达式? 1+2*3就是一个表达式,这里的加号和乘号叫做运算符,1.2.3叫做操作数. 1+2*3经过计算后得到的结果是7,我们可以将计算结果存放在一个变量里,result=1+ ...