首页 > 其他分享 >2024.04 别急记录

2024.04 别急记录

时间:2024-04-03 20:25:19浏览次数:26  
标签:2024.04 别急 记录 int ll ln vs forall ds

1. 餐巾计划问题

建图跑费用流即可:

  1. \((S,1,\inf,p)\);
  2. \(\forall i\in[1,N],(i,i+N,r_i,0)\);
  3. \(\forall i\in[1,N],(S,i+N,r_i,0)\);
  4. \(\forall i\in[1,N],(i,T,r_i,0)\);
  5. \(\forall i\in[1,N),(i,i+1,\inf,0)\);
  6. \(\forall i\in[1,N-n],(i+N,i+n,\inf,f)\);
  7. \(\forall i\in[1,N-m],(i+N,i+m,\inf,s)\);

解释一下 234:

考虑把餐巾作为流,费用作为费用。则我们需要保证最大流为 \(\sum r\)。所以每个点要拆成两部分,表示干净毛巾和脏毛巾,再用脏毛巾的点流向洗过后的干净毛巾点。

点击查看代码
//P1251
#include <bits/stdc++.h>
using namespace std; typedef long long ll;
void solve();int main(){ solve(); return 0; }

const int N = 4e3 + 10, M = 4e4 + 10;
const ll inf = 1e10;
int n, r[N], p, u, f, v, s;
ll mc, ln[M], cs[M], ds[N];
int hd[N], eg[M], nx[M], tot = 1, nw[N], vs[N];

void adg(int u, int v, ll w, ll c){
	eg[++tot] = v;
	ln[tot] = w;
	cs[tot] = c;
	nx[tot] = hd[u];
	hd[u] = tot;
}
void add(int u, int v, ll w, ll c){
//	printf("%d %d %lld %lld\n", u, v, w, c);
	adg(u, v, w, c);
	adg(v, u, 0, -c);
}
bool spfa(int s, int t){
	queue<int> q;
	memset(ds, 0x3f, sizeof(ds));
	memcpy(nw, hd, sizeof(hd));
	q.push(s);
	ds[s] = 0;
	vs[s] = 1;
	while(!q.empty()){
		int x = q.front();
		q.pop();
		vs[x] = 0;
		for(int i = hd[x]; i; i = nx[i]){
			int y = eg[i];
			ll z = ln[i], c = cs[i];
			if(z && ds[y] > ds[x] + c){
				ds[y] = ds[x] + c;
				if(!vs[y]){
					vs[y] = 1;
					q.push(y);
				}
			}
		}
	}
	return ds[t] != 0x3f3f3f3f3f3f3f3f;
}
ll dfs(int x, int t, ll fl){
	if(x == t){
		return fl;
	}
	ll rs = fl;
	vs[x] = 1;
	for(int i = nw[x]; i && rs; i = nx[i]){
		int y = eg[i];
		ll z = ln[i], c = cs[i];
		nw[x] = i;
		if(!vs[y] && z && ds[y] == ds[x] + c){
			ll k = dfs(y, t, min(rs, z));
			if(!k){
				ds[y] = 0;
			}
			ln[i] -= k;
			ln[i^1] += k;
			rs -= k;
			mc += k * c;
		}
	}
	vs[x] = 0;
	return fl - rs;
}

void solve(){
	scanf("%d", &n);
	for(int i = 1; i <= n; ++ i){
		scanf("%d", &r[i]);
	}
	scanf("%d%d%d%d%d", &p, &u, &f, &v, &s);
	int st = n + n + 1, ed = n + n + 2;
	for(int i = 1; i <= n; ++ i){
		add(i, i+n, r[i], 0);
		add(st, i+n, r[i], 0);
		add(i, ed, r[i], 0);
		if(i < n){
			add(i, i+1, inf, 0);
		}
		if(i + v <= n){
			add(i+n, i+v, inf, s);
		}
		if(i + u <= n){
			add(i+n, i+u, inf, f);
		}
	}
	add(st, 1, inf, p);
	while(spfa(st, ed)){
		while(dfs(st, ed, inf*2));
	}
	printf("%lld\n", mc);
}

标签:2024.04,别急,记录,int,ll,ln,vs,forall,ds
From: https://www.cnblogs.com/KiharaTouma/p/18113434

相关文章

  • 【问题记录】CCES编译报错:“[Error li1030] Can not open input file ‘libadi_sigma
    一,问题现象编译工程时,报错提示:“[Errorli1030]Cannotopeninputfile‘libadi_sigma_sharc_awc.dlb’”,“[Errorli1030]Cannotopeninputfile‘libadi_sigma_sharc_nwc.dlb’”:二,问题原因&解决方法没有安装对应的插件,安装插件:SigmaStudioForSHARC-SH-Rel2.......
  • 3D Object Detection Essay Reading 2024.04.01
    SwinTransformerpaper:https://arxiv.org/abs/2103.14030(ICCV2021)code:https://github.com/microsoft/Swin-Transformer/blob/2622619f70760b60a42b996f5fcbe7c9d2e7ca57/models/swin_transformer.py#L458学习链接:https://blog.csdn.net/qq_37541097/article/detail......
  • Apple Watch 运动记录自动停止 bug All In One
    AppleWatch运动记录自动停止bugAllInOneAppleWatchS6运动记录会自动停止bugquestionshttps://discussionschinese.apple.com/thread/253879237?sortBy=besthttps://discussionschinese.apple.com/thread/251948485?sortBy=bestdemosAppleWatchS6骑行记录,......
  • acwing算法基础课学习记录2(2024.3.29)
    对昨日的补充朴素dijkstra算法模板:1.dist[i]=+INFdist[1]=02.fori1~nn次t<-不在s中的距离最近的点(s:当前已经确定最短距离的点存储在内)n次s<-tn次用t更新其他点的距离总共m次堆优化版dij......
  • 记录一次解决跨域问题解决过程。 strict-origin-when-cross-origin,net::ERR_FAILED, No
    事情是这样的,vue项目本地启动可以正常连接后端端口访问,部署到nginx上只有就无法访问,显示跨域问题  于是查看后端日志 啥都没有,觉得肯定是nginx的问题,怎么配置都没用, location/{ roothtml; indexindex.htmlindex.htm; add_header'Access-Control-Allow-O......
  • 记录解决QT环境变量、qwt环境搭建、cannot load QT5core.dll错误、TreeWidget与TabWid
    一、配置QT环境变量:依次打开:设置->系统->关于->高级系统设置->环境变量->系统变量(s)->Path->编辑,将QT安装目录中以下文件路径复制粘贴至Path中:D:\BaiDuWangPan\SoftWare\QT_551\5.5\mingw492_32\binD:\BaiDuWangPan\SoftWare\QT_551\Tools\mingw492_32\bin相关解决方法可借鉴......
  • ARC126E 做题记录
    link只需要手玩+大力猜就能做的题。我们可以猜测:选择两个数操作,一定把他们变成两者的平均数。这个结论的可信度非常大。设\(g(a_1,a_2,...,a_n)\)表示\(a_{1...n}\)的答案。我们不妨先尝试点简单的,对于两个数\(x,y\),钦定\(x\ley\),显然有\(g(x,y)=\dfrac{y-x}2\)。......
  • wsl2折腾记录
    相关issuemirror镜像模式失效:https://github.com/microsoft/WSL/issues/10632wsl2设置桥接网络或镜像网络,解决服务互通访问的问题https://zhuanlan.zhihu.com/p/659074950新版本下如何通过外部网络访问wslhttps://zhuanlan.zhihu.com/p/672297125wsl配置https://learn.micr......
  • 2024.04.02
    在这个任务中,你需要实现前端上传Excel文件,然后将文件传输到后端,后端再将Excel文件解析并将数据插入数据库。下面是一种可能的实现方法:前端(Vue.js):使用<el-upload>组件实现文件上传功能,并绑定一个上传文件的事件。通过Axios或其他方式将上传的Excel文件发送到后端。......
  • SQL相关笔记-不常用 容易忘记的一些语法规则记录
    1.查下表中只有一条的数据SELECTuserId,count(userId)FROM表名GROUPbyuserId2. 根据userId去重selectdistinctuserIdfrom表名3.查询数据库中含有某个字段的所有表名selectDISTINCTTABLE_NAMEfrominformation_schema.`COLUMNS` whereTABLE_SCHEMA='数......