当前位置: 首页 > news >正文

BZOJ1061 NOI2008 志愿者招募

传送门

本来是费用流神建模但是被单纯形搞定了鸭2333

\\m_{1,1}x_1 +m_{1,2}x_2 +...+m_{1,m}x_m\geq A_1 \\... \\m_{n,1}x_1 +m_{n,2}x_2 +...+m_{n,m}x_m\geq A_n

\forall i \epsilon [1,m]\ x_i\geq 0

mi,j表示第i天第j种志愿者能否工作 Ai表示第i天至少要用的人数

minimize\ \sum_{i=1}^n C_ix_i

要最小化代价(目标函数) 不是标准型所以根据线性规划的对偶性就可以做了qwqqq

线性规划的对偶性:

如果

\\maximize\ c^T x \\subject\ to\ Ax \preceq b \\x\succeq0\\minimize\ b^T x \\subject\ to\ A^Tx \preceq c \\x\succeq 0

均有可行解,则他们最优解相同或同时为Unbounded

 

这个题需要满足最优解是整数(你又不可能把人劈开)

但是实际上这个矩阵的性质就保证了 最优解是整数 (证明可戳洛咕题解)

 

扔代码。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define inf 2002122500
#define ll long long
#define db double
#define mxn 1010
#define mxm 10100
#define eps 1e-8
using namespace std;

db M[mxm][mxn];int n,m;
void privot(int x,int y)
{
	db tmp=1.0/M[x][y];
	M[x][y]=1.0;
	for(int i=0;i<=m;i++)	M[x][i]*=tmp;
	for(int i=0;i<=n;i++)
	{
		if(i==x||abs(M[i][y])<eps)	continue;
		db t=M[i][y];M[i][y]=0.0;
		for(int j=0;j<=m;j++)
			M[i][j]-=t*M[x][j];
	} 
}

bool simplex()
{
	while(1)
	{
		int x=0,y=0;db mn=1e15;
		for(int i=1;i<=m;i++)	if(M[0][i]>eps){y=i;break;}
		//printf("%d %lf\n",y,M[0][y]);
		if(!y)	return true;
		for(int i=1;i<=n;i++)
		{
			if(M[i][y]>eps && M[i][0]/M[i][y] <mn)
			{
				mn=M[i][0]/M[i][y];
				x=i;
			}
		}
		//printf("%lf %d\n",mn,x);
		if(!x){printf("Unbounded\n");return false;}
		privot(x,y);
	}
	return true;
}

int main()
{
	int l,r;
	scanf("%d%d",&m,&n);
	for(int i=1;i<=m;i++)	scanf("%lf",&M[0][i]);
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d%lf",&l,&r,&M[i][0]);
		for(int j=l;j<=r;j++)	M[i][j]=1.0;
	}
	if(simplex())	printf("%.0lf\n",-M[0][0]);
	return 0;
}

 

转载于:https://www.cnblogs.com/hanyuweining/p/10321940.html

相关文章:

  • 设计模式应用举例
  • 【刘文彬】区块链 + 大数据:EOS存储
  • 【DP】【CF855C】 Helga Hufflepuff's Cup
  • 如何更高效的拼接字符串?
  • C# 多线程六之Task(任务)三之任务工厂
  • 整数规划---整数规划问题的提出
  • React+TypeScript入门
  • MySql行转列、列转行
  • @ModelAttribute注解使用
  • docker容器内的网络抓包
  • 【linux】linux重启tomcat + 实时查看tomcat启动日志
  • JavaScript基础——基本概念
  • 一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • Innodb之全局共享内存
  • ➹使用webpack配置多页面应用(MPA)
  • 2018一半小结一波
  • 3.7、@ResponseBody 和 @RestController
  • Asm.js的简单介绍
  • ES6之路之模块详解
  • Java 多线程编程之:notify 和 wait 用法
  • learning koa2.x
  • Linux Process Manage
  • Promise面试题2实现异步串行执行
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Vue UI框架库开发介绍
  • 阿里云Kubernetes容器服务上体验Knative
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 浮动相关
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 深入浏览器事件循环的本质
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 微信小程序:实现悬浮返回和分享按钮
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • NLPIR智能语义技术让大数据挖掘更简单
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #单片机(TB6600驱动42步进电机)
  • %@ page import=%的用法
  • (9)目标检测_SSD的原理
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .Net Remoting常用部署结构
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .NET性能优化(文摘)
  • /etc/fstab 只读无法修改的解决办法
  • @Documented注解的作用
  • @Repository 注解
  • [20180224]expdp query 写法问题.txt
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [CareerCup] 12.3 Test Move Method in a Chess Game 测试象棋游戏中的移动方法
  • [ChromeApp]指南!让你的谷歌浏览器好用十倍!
  • [dts]Device Tree机制
  • [GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等