BZOJ 3112: [Zjoi2013]防守战线 [单纯形法]
题目描述
战线可以看作一个长度为n 的序列,现在需要在这个序列上建塔来防守敌兵,在序列第i 号位置上建一座塔有Ci 的花费,且一个位置可以建任意多的塔,费用累加计算。有m 个区间[L1, R1], [L2, R2], …, [Lm, Rm],在第i 个区间的范围内要建至少Di 座塔。求最少花费。
输入输出格式
输入格式:
第一行为两个数n, m。
接下来一行,有n 个数,描述C 数组。
接下来m 行,每行三个数Li,Ri,Di,描述一个区间。
输出格式:
仅包含一行,一个数,为最少花费。
输入输出样例
5 3
1 5 6 3 4
2 3 1
1 5 4
3 5 2
11
说明
【样例说明】
位置1 建2 个塔,位置3 建一个塔,位置4 建一个塔。花费1*2+6+3=11。
【数据规模】
对于20%的数据,n≤20,m≤20。
对于50%的数据(包括上部分的数据),Di 全部为1。
对于70%的数据(包括上部分的数据),n≤100,m≤1000。
对于100%的数据,n≤1000,m≤10000,1≤Li≤Ri≤n,其余数据均≤10000。
[2016-12-7]
和08志愿者招募很像
设X为每个位置建塔数量的向量
最小化 CX
满足约束 第i个约束为x[l[i]]+x[l[i]+1]+...+x[r[i]]>=d[i]
即AX>=D
A[i][j]为1表示第i个约束中j在[l[i],r[i]]里,可以贡献到和中
对偶之后,就成了
最大化 DX
满足约束 AT X<=C
注意这时候这时候是n个约束,m个变量
[2017-03-11]
重写一遍
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=,M=1e4+;
const double INF=1e15,eps=1e-;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} int n,m;
double a[N][M];
int q[M];
void Pivot(int l,int e){
double t=a[l][e];a[l][e]=;
for(int j=;j<=n;j++) a[l][j]/=t;
int p=;
for(int j=;j<=n;j++) if(abs(a[l][j])>eps) q[++p]=j;
for(int i=;i<=m;i++) if(i!=l && abs(a[i][e])>eps){
double t=a[i][e];a[i][e]=;
for(int j=;j<=p;j++) a[i][q[j]]-=t*a[l][q[j]];
}
}
void simplex(){
while(true){
int l=,e=; double mn=INF;
for(int j=;j<=n;j++) if(a[][j]>eps) {e=j;break;}
if(!e) return;
for(int i=;i<=m;i++)
if(a[i][e]>eps && a[i][]/a[i][e]<mn) {mn=a[i][]/a[i][e];l=i;}
if(!l) return;//unbounded
Pivot(l,e);
}
}
int main(){
freopen("in","r",stdin);
n=read();m=read();
swap(n,m);
for(int i=;i<=m;i++) a[i][]=read();
for(int j=;j<=n;j++){
int l=read(),r=read();
for(int i=l;i<=r;i++) a[i][j]=;
a[][j]=read();
}
simplex();
printf("%d",int(-a[][]+0.5));
}
BZOJ 3112: [Zjoi2013]防守战线 [单纯形法]的更多相关文章
- BZOJ 3112 [Zjoi2013]防守战线
题解:单纯形:转化为对偶问题: 对于最大化 cx,满足约束 Ax<=b ,x>0 对偶问题为 最小化 bx,满足约束 ATx>=c ,x>0 (AT为A的转置) 这一题的内存真 ...
- BZOJ 3112 Zjoi2013 防守战线 单纯形
题目大意: 单纯形*2.. . #include <cmath> #include <cstdio> #include <cstring> #include < ...
- BZOJ 3112 [Zjoi2013]防守战线 线性规划
题意: 简单叙述: 一个长度为n的序列,在每一个点建塔的费用为Ci.有m个区间.每一个区间内至少有Dj个塔.求最小花费. 方法:线性规划 解析: 与上一题相似.相同使用对偶原理解题.解法不再赘述. 代 ...
- 【BZOJ3112】[Zjoi2013]防守战线 单纯形法
[BZOJ3112][Zjoi2013]防守战线 题解:依旧是转化成对偶问题,然后敲板子就行了~ 建完表后发现跟志愿者招募的表正好是相反的,感觉很神奇~ #include <cstdio> ...
- ZJOI2013 防守战线
题目 战线可以看作一个长度为\(n\)的序列,现在需要在这个序列上建塔来防守敌兵,在序列第\(i\)号位置上建一座塔有\(C_i\)的花费,且一个位置可以建任意多的塔,费用累加计算.有\(m\)个区间 ...
- BZOJ3112 [Zjoi2013]防守战线 【单纯形】
题目链接 BZOJ3112 题解 同志愿者招募 费用流神题 单纯形裸题 \(BZOJ\)可过 洛谷被卡.. #include<algorithm> #include<iostream ...
- bzoj3550: [ONTAK2010]Vacation&&bzoj3112: [Zjoi2013]防守战线
学了下单纯形法解线性规划 看起来好像并不是特别难,第二个code有注释.我还有...*=-....这个不是特别懂 第一个是正常的,第二个是解对偶问题的 #include<cstdio> # ...
- 数学(线性规划): ZJOI2013 防守战线
偷懒用的线性规划. #include <iostream> #include <cstring> #include <cstdio> using namespace ...
- bzoj3112 [Zjoi2013]防守战线
正解:线性规划. 直接套单纯形的板子,因为所约束条件都是>=号,且目标函数为最小值,所以考虑对偶转换,转置一下原矩阵就好了. //It is made by wfj_2048~ #include ...
随机推荐
- 基于CkEditor实现.net在线开发之路(6)vs开发工具配合一起开发
上一章讲解了利用CKEditor实现了一个简单的列表功能的查询,CKEditor编辑器是由js实现的,js是一门非常强大的语法,但是要用它实现Vs开发工具那样强大编辑器的功能,估计不可能,这就使得CK ...
- eclipse报错:Failed to load the JNI shared library
Eclipse运行时提示“Failed to load the JNI shared library /Java/jre6/bin/client/jvm.dll”的一个解决方案 因为 Eclipse ...
- 【Java每日一题】20161219
package Dec2016; import java.util.Arrays; public class Ques1219 { public static void main(String[] a ...
- 【工匠大道】markdown使用技巧
本文地址 提纲: 1. 概述 2. 常见技巧 3. 参考文档 1. 概述 常见的markdown的技巧,这里不再谈了,主要是自己感觉比较少见但有用的技巧. 2. 常见技巧 1)[空格]生成空格的效 ...
- Maven命令行使用:mvn clean package(打包)
先把命令行切换到Maven项目的根目录,比如:/d/xxxwork/java/maven-test,然后执行命令: mvn clean package 执行结果如下: [INFO] Scanning ...
- GJM :Unity3D 5.x性能分析工具与应用方法
原帖地址 http://gad.qq.com/content/coursedetail/7180616 Unity Profiler Unity => Window=>Profiler P ...
- View and Data API tips: 缓存Access Token
对于云API服务,常见的方式就是按照API调用次数收费,某些API调用也就有某些限制,比如在特定时间内只允许调用指定的次数以免造成滥用.虽然Autodesk的view and Data API目前还没 ...
- iOS 10 都有什么改变?
iOS 10 都有什么改变? 看这一个贴就够了 最全面的试用 苹果在 WWDC 2016 发布会上正式发布了 iOS 10 操作系统,iOS 与 macOS.tvOS 和 watchOS 构建了苹果四 ...
- 学习Maven之Properties Maven Plugin
1.properties-maven-plugin是个什么鬼? 介绍前我们先看一个问题,比如我们有一个maven项目结构如下: 一般我们都把一些配置文件放到像src/main/resources/jd ...
- 学习Maven之Maven Enforcer Plugin
1.Maven Enforcer plugin是什么鬼? 在说这个插件是什么前我们先思考这么一个问题:当我们开发人员进入项目组进行开发前,要准备开发环境,而领导总是会强调工具的统一,编译环境的统一.比 ...