BZOJ 3550 ONTAK2010 Vacation 单纯形
题目大意:给定一个长度为3n的区间。要求选一些数,且随意一段长度为n的区间内最多选k个数。求选择数的和的最大值
单纯形直接搞
注意一个数仅仅能被选一次 因此要加上xi<=1这个约束条件
不明确3n还有k<=10是为何。。
。
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define EPS 1e-7
#define INF 1e10
using namespace std;
int n,m,k;
namespace Linear_Programming{
double A[1210][610],b[1210],c[610],v;
void Pivot(int l,int e)
{
int i,j; b[l]/=A[l][e];
for(i=1;i<=n;i++)
if(i!=e)
A[l][i]/=A[l][e];
A[l][e]=1/A[l][e]; for(i=1;i<=m;i++)
if(i!=l&&fabs(A[i][e])>EPS)
{
b[i]-=A[i][e]*b[l];
for(j=1;j<=n;j++)
if(j!=e)
A[i][j]-=A[i][e]*A[l][j];
A[i][e]=-A[i][e]*A[l][e];
} v+=c[e]*b[l];
for(i=1;i<=n;i++)
if(i!=e)
c[i]-=c[e]*A[l][i];
c[e]=-c[e]*A[l][e];
}
double Simplex()
{
int i,l,e;
while(1)
{
for(i=1;i<=n;i++)
if(c[i]>EPS)
break;
if((e=i)==n+1)
return v;
double temp=INF;
for(i=1;i<=m;i++)
if( A[i][e]>EPS && b[i]/A[i][e]<temp )
temp=b[i]/A[i][e],l=i;
if(temp==INF) return INF;
Pivot(l,e);
}
}
}
int main()
{
using namespace Linear_Programming;
int i,j;
cin>>n>>k;
for(i=1;i<=n*3;i++)
scanf("%lf",&c[i]);
for(i=1;i+n-1<=n*3;i++)
{
b[++m]=k;
for(j=i;j<=i+n-1;j++)
A[m][j]=1;
}
for(i=1;i<=n*3;i++)
{
b[++m]=1;
A[m][i]=1;
}
n*=3;
double ans=Simplex();
cout<<int(ans+0.5)<<endl;
return 0;
}
BZOJ 3550 ONTAK2010 Vacation 单纯形的更多相关文章
- BZOJ 3550: [ONTAK2010]Vacation [单纯形法]
有3N个数,你需要选出一些数,首先保证任意长度为N的区间中选出的数的个数<=K个,其次要保证选出的数的个数最大. 好像都是费用流... 单纯性裸题呀... 注意每个数最多选1次 #include ...
- BZOJ3550: [ONTAK2010]Vacation
3550: [ONTAK2010]Vacation Time Limit: 10 Sec Memory Limit: 96 MBSubmit: 91 Solved: 71[Submit][Stat ...
- BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划
BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划 Description 给出一个长度为 的正整数序列Ci,求一个子序列,使得 ...
- BZOJ 3550 Vacation(最小费用最大流)
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3550 题意:给出3×n个数字,从中选出一些数字,要求每连续的n个数字中选出的数字个 ...
- BZOJ 3550 Vacation
http://www.lydsy.com/JudgeOnline/problem.php?id=3550 题意:有3N个数,你需要选出一些数,首先保证任意长度为N的区间中选出的数的个数<=K个, ...
- BZOJ3550 [ONTAK2010]Vacation 【单纯形】
题目链接 BZOJ3550 题解 单纯形裸题 题意不清,每个位置最多选一次 #include<algorithm> #include<iostream> #include< ...
- 【BZOJ1283/3550】序列/[ONTAK2010]Vacation 最大费用流
[BZOJ1283]序列 Description 给出一个长度为 的正整数序列Ci,求一个子序列,使得原序列中任意长度为 的子串中被选出的元素不超过K(K,M<=100) 个,并且选出的元素之和 ...
- BZOJ 3544: [ONTAK2010]Creative Accounting( BST )
题意 : 一段序列 , 求一段子序列和取余 M 的最大值 其实是一道水题... 前缀和 , 然后就是找 ( sum( r ) - sum( l ) ) % M 的最大值 . 考虑一个 sum( r ) ...
- BZOJ 3545: [ONTAK2010]Peaks( BST + 启发式合并 + 并查集 )
这道题很好想, 离线, 按询问的x排序从小到大, 然后用并查集维护连通性, 用平衡树维护连通块的山的权值, 合并就用启发式合并.时间复杂度的话, 排序是O(mlogm + qlogq), 启发式合并是 ...
随机推荐
- InnoDB INFORMATION_SCHEMA Temporary Table Info Table
InnoDB INFORMATION_SCHEMA Temporary Table Info Table INNODB_TEMP_TABLE_INFO提供有关InnoDB实例中当前活动的用户创建的In ...
- perl学习之:@_ $_
question 1 :数组@xxx调用时,每个元素应该用$xxx[0]/$xxx[1]... 来表示所以$_[0]表示@_的一个元素,和默认缺省变量$_无关,是两个东西请查阅数组元素调用相关章节 ...
- tiny4412学习笔记-将uboot、zImage、文件系统烧到emmc中 (转)
http://blog.chinaunix.net/uid-30025978-id-4788683.html 1.首先还是要将u-boot写入SD卡中从SD卡启动. 使用读卡器将SD插入电脑中,使用u ...
- 【笔记】mysql入门语句8条
1.连接到数据库服务器 mysql -h host -uroot -pXXXX 2.查看所有库 show databases; 3.选库 use 库名 4.查看库下面的表 show tables; 5 ...
- 大数据学习——flume安装部署
1.Flume的安装非常简单,只需要解压即可,当然,前提是已有hadoop环境 上传安装包到数据源所在节点上 然后解压 tar -zxvf apache-flume-1.6.0-bin.tar.gz ...
- linux进程按启动时间排序命令
show me the code... ps aux --sort=start_time|grep Full|grep -v grep
- hihoCoder#1141 二分·归并排序之逆序对
原题地址 又是一道WA成狗的题,最后发现原来是结果溢出了.. 代码: #include <iostream> #include <cstring> using namespac ...
- vscode安装插件
十分简单,知道名字叫啥后,直接搜索,安装,就完了,还可以查看自己已经安装了哪些插件. step1 如图.png step2 image.png step 3 去网上查找想要安装的插件的名字 step ...
- Java图片缩略图裁剪水印缩放旋转压缩转格式-Thumbnailator图像处理
前言 java开发中经常遇到对图片的处理,JDK中也提供了对应的工具类,不过处理起来很麻烦,Thumbnailator是一个优秀的图片处理的开源Java类库,处理效果远比Java API的好,从API ...
- [Bzoj1015][JSOI2008]星球大战starwar(并查集)(离线处理)
1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 6849 Solved: 3204[Submit ...