BZOJ3550 [ONTAK2010]Vacation 【单纯形】
题目链接
题解
单纯形裸题
题意不清,每个位置最多选一次
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<ctime>
#include<cmath>
#include<map>
#define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt)
#define REP(i,n) for (int i = 1; i <= (n); i++)
#define mp(a,b) make_pair<int,int>(a,b)
#define cls(s) memset(s,0,sizeof(s))
#define cp pair<int,int>
#define LL long long int
using namespace std;
const int maxn = 1005,maxm = 100005;
const double eps = 1e-8,INF = 1e15;
inline int read(){
	int out = 0,flag = 1; char c = getchar();
	while (c < 48 || c > 57){if (c == '-') flag = -1; c = getchar();}
	while (c >= 48 && c <= 57){out = (out << 3) + (out << 1) + c - 48; c = getchar();}
	return out * flag;
}
int n,m,N,K;
double a[maxn][maxn];
void Pivot(int l,int e){
	double t = a[l][e]; a[l][e] = 1;
	for (int j = 0; j <= n; j++) a[l][j] /= t;
	for (int i = 0; i <= m; i++) if (i != l && fabs(a[i][e]) > eps){
		t = a[i][e]; a[i][e] = 0;
		for (int j = 0; j <= n; j++) a[i][j] -= a[l][j] * t;
	}
}
void init(){
	while (true){
		int e = 0,l = 0;
		for (int i = 1; i <= m; i++) if (a[i][0] < -eps && (!l || (rand() & 1))) l = i;
		if (!l) break;
		for (int j = 1; j <= n; j++) if (a[l][j] < -eps && (!e || (rand() & 1))) e = j;
		Pivot(l,e);
	}
}
void simplex(){
	while (true){
		int l = 0,e = 0; double mn = INF;
		for (int j = 1; j <= n; j++)
			if (a[0][j] > eps){e = j; break;}
		if (!e) break;
		for (int i = 1; i <= m; i++) if (a[i][e] > eps && a[i][0] / a[i][e] < mn)
			mn = a[i][0] / a[i][e],l = i;
		Pivot(l,e);
	}
}
int main(){
	srand(time(NULL));
	N = read(); n = 3 * N; K = read();
	int tmp = (N << 1 | 1); m = tmp + n;
	for (int j = 1; j <= n; j++){
		a[0][j] = read();
		a[tmp + j][j] = 1;
		a[tmp + j][0] = 1;
	}
	for (int j = 1; j <= n; j++){
		int E = min(j,tmp);
		for (int i = max(1,j - N + 1); i <= E; i++)
			a[i][j] = 1;
	}
	for (int i = 1; i <= tmp; i++) a[i][0] = K;
	init(); simplex();
	printf("%lld\n",(LL)(-a[0][0] + 0.5));
	return 0;
}
BZOJ3550 [ONTAK2010]Vacation 【单纯形】的更多相关文章
- BZOJ3550: [ONTAK2010]Vacation
		3550: [ONTAK2010]Vacation Time Limit: 10 Sec Memory Limit: 96 MBSubmit: 91 Solved: 71[Submit][Stat ... 
- BZOJ 3550 ONTAK2010 Vacation 单纯形
		题目大意:给定一个长度为3n的区间.要求选一些数,且随意一段长度为n的区间内最多选k个数.求选择数的和的最大值 单纯形直接搞 注意一个数仅仅能被选一次 因此要加上xi<=1这个约束条件 不明确3 ... 
- bzoj3550: [ONTAK2010]Vacation(单纯形法+线性规划)
		传送门 直接暴力把线性规划矩阵给打出来然后单纯形求解就行了 简单来说就是每个数记一个\(d_i\)表示选或不选,那么就是最大化\(\sum d_ic_i\),并满足一堆限制条件 然后不要忘记限制每个数 ... 
- bzoj3550: [ONTAK2010]Vacation&&bzoj3112: [Zjoi2013]防守战线
		学了下单纯形法解线性规划 看起来好像并不是特别难,第二个code有注释.我还有...*=-....这个不是特别懂 第一个是正常的,第二个是解对偶问题的 #include<cstdio> # ... 
- BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划
		BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划 Description 给出一个长度为 的正整数序列Ci,求一个子序列,使得 ... 
- BZOJ 3550: [ONTAK2010]Vacation [单纯形法]
		有3N个数,你需要选出一些数,首先保证任意长度为N的区间中选出的数的个数<=K个,其次要保证选出的数的个数最大. 好像都是费用流... 单纯性裸题呀... 注意每个数最多选1次 #include ... 
- 【BZOJ1283/3550】序列/[ONTAK2010]Vacation 最大费用流
		[BZOJ1283]序列 Description 给出一个长度为 的正整数序列Ci,求一个子序列,使得原序列中任意长度为 的子串中被选出的元素不超过K(K,M<=100) 个,并且选出的元素之和 ... 
- 【Richard 的刷(水)题记录】
		大概想了想,还是有个记录比较好. 9/24 网络流一日游: 最大流:bzoj1711[Usaco2007 Open]Dining 拆点 BZOJ 3993 Sdoi2015 星际战争 二分 P.S.这 ... 
- 【BZOJ】【3550】【ONTAK2010】Vacation
		网络流/费用流 Orz太神犇了这题…… 我一开始想成跟Intervals那题一样了……每个数a[i]相当于覆盖了(a[i]-n,a[i]+n)这个区间……但是这样是错的!!随便就找出反例了……我居然还 ... 
随机推荐
- 通过XML文件实现人物之间的对话
			一.建立一个XML文档,放在项目中Assert/Resources/XML文件下 XML的内容如下: <?xml version="1.0" encoding="u ... 
- Laya自动图集原理
			关于Laya自动图集 Laya会把size小于512*512的图片打入自动大图集中.如果图片被打入自动图集中,图片的内存就交由Laya自动处理,开发者不能手动删除. Laya最多生成6张2048*20 ... 
- linux文件种类及其扩展名
			文件种类 普通文件(ls -al出来第一列为-) 纯文本文件(ASCII):linux系统中最多的一种文件类型,可以使用cat直接读取: 二进制文件(binary):linux下面的可执行文件: 数据 ... 
- mysql以zip安装,解决the service already exists(转载)
			喵喵亲测可用: 转自:https://www.cnblogs.com/dichters/p/5929209.html mysql以zip安装, mysqld -install 报错:The serv ... 
- 新手Python第三天(函数)
			Python 函数的创建 def func2(): print('haha') # 函数的返回值 # 函数的返回值,没有定义返回None, # 有一个返回值返回这个object(可以返回一个函数对象) ... 
- 利用saltstack一键部署多台zookeeper
			以上是saltstack上面sls文件存放zookeeper的路径和文件 以上是入口文件把文件夹做成包 重要安装配置在zoo.sls,以下是该sls的内容 zookeeper: file.manage ... 
- 搭建 Digital Ocean 服务器
			作为程序员,搭建属于自己的服务器可以部署自己的网站,可以配置代理***,了解国际前沿科技:一些高性能的服务器还可以完成一些云计算.深度学习模型的训练任务. DigitalOcean 服务启动 注册 D ... 
- CentOs6.5中安装和配置vsftp简明教程[转]
			CentOs6.5中安装和配置vsftp简明教程 林涛 发表于:2017-3-17 10:10 分类:WebServer 标签: 101次 一.vsftp安装篇 复制代码代码如下: # 安装vsftp ... 
- 感谢Thunder团队
			不知不觉中,团队开发的beta版本都已经结束.开发的路上我们一起解决了很多难题,相互帮助走到了现在. 首先我想感谢组长王航.认真负责合理分配任务,使得我们每次发布都可以顺利并且按时完成.感谢胡佑蓉,李 ... 
- Leetcode题库——24.两两交换链表中的节点
			@author: ZZQ @software: PyCharm @file: swapPairs.py @time: 2018/10/20 19:49 说明:给定一个链表,两两交换其中相邻的节点,并返 ... 
