[vijos P1524] 最小监视代价
历时四天(本周三至本周六),本人的第一道网络流题目终于通过了…虽然这么慢才搞懂很大程度是因为脑子笨,但是还是要吐槽一下:
(1)选的这道题吧居然是无向图,对于初学者我表示呵呵,昨晚到现在一直在纠结怎么搞。一开始觉得在循环里加个j=0就好了,后来发现运行速度慢以为错了,后来才发现是自作聪明把书上一行代码给去掉了…QAQ
(2)这道题是多汇点,一开始还以为有x个汇点运行x次取最大呢,又脑残了;
(3)我的教材…写的是手动栈,虽然这免除了溢出,但是长度堪忧啊QAQ,而且数据才100根本不会溢出的啊…Anyway有空要把递归写法给写一下,不过手工栈的确很久没有码过了~~
至少这么一折腾,算是差不多懂了一些网络流算法,有空学一下Dinic。还有一周就要考试了,纯属酱油心态的我也要加油啦~
f表示flow也就是存储流,findpath和adjust这两个子段的名字太浅显了不解释了…s是手工栈。
program vijos_p1524;
var map,f:array[..,..] of longint;
s,mark:array[-..] of integer;
n,e,m,a,b,w,x,i,j:integer;
ans,anst,top:longint;
function findpath:boolean;
begin
fillchar(mark,sizeof(mark),);
i:=;j:=;mark[]:=;top:=;s[top]:=;
repeat
i:=abs(s[top]);
repeat
j:=j+;
if (mark[j]=) and (map[i,j]<>) then
begin
if map[i,j]>f[i,j] then
begin
inc(top);s[top]:=j;
mark[j]:=;
end
else
if f[j,i]> then
begin
inc(top);s[top]:=-j;
mark[j]:=;
end;
end;
until (j>=n+) or (i<>abs(s[top]));
if i=abs(s[top]) then
begin
j:=abs(s[top]);
mark[abs(s[top])]:=;
s[top]:=;
dec(top);
end
else j:=;
until (top=) or (s[top]=x);
findpath:=(top>);
end; procedure adjust;
var i,j,k,x,z:longint;
begin
k:=;i:=s[k];z:=maxlongint;
repeat
inc(k);j:=s[k];
if j< then x:=f[-j,i] else x:=map[i,j]-f[i,j];
if x<z then z:=x;
i:=abs(j);
until k=top;
k:=;i:=s[k];
repeat
inc(k);j:=s[k];
if j< then
begin
f[-j,i]:=f[-j,i]-z;
end
else
begin
f[i,j]:=f[i,j]+z;
end;
i:=abs(j);
until k=top;
end; procedure work;
var j:integer;
begin
fillchar(f,sizeof(f),);
anst:=;
while findpath do adjust;
for j:= to n+ do
anst:=anst+f[,j];
end; begin
readln(n,e);
for i:= to e do
begin
readln(a,b,w);
map[a,b]:=w;map[b,a]:=w;
end;
readln(m);
for i:= to m do
begin
read(x);
map[x,n+]:=maxlongint;
end;
x:=n+;{top:=1;s[top]:=1;mark[1]:=1;j:=0;}
work;
writeln(anst);
end.
最小监视代价
[vijos P1524] 最小监视代价的更多相关文章
- vijos 1524 最小监视代价
背景 看到Vijos上此类型的题目较少,特地放一道上来给大家练练. 描述 由于yxy小朋友做了一些不该做的事,他被jzp关进了一个迷宫里.由于jzp最近比较忙,疏忽大意了一些,yxy可以在迷宫中任意走 ...
- Vijos 1456 最小总代价 (状压dp)
看到这道题n只有16,就可以想到状压dp 每个人只有经过或者没经过,那就用1表示经过,0表示没经过 但是不是当前在谁那里,所以再加一维来记录 所以f[state][i]表示在物品在i,当前的状态是st ...
- lintcode: 最小调整代价
题目 最小调整代价 给一个整数数组,调整每个数的大小,使得相邻的两个数的差小于一个给定的整数target,调整每个数的代价为调整前后的差的绝对值,求调整代价之和最小是多少. 样例 对于数组,最小的调整 ...
- 【网络流24题】 No.12 软件补丁问题(最小转移代价 最短路)
[题意] T 公司发现其研制的一个软件中有 n 个错误, 随即为该软件发放了一批共 m 个补丁程序. 每一个补丁程序都有其特定的适用环境, 某个补丁只有在软件中包含某些错误而同时又不包含另一些错误时才 ...
- 最小总代价 状压DP
描述 n个人在做传递物品的游戏,编号为1-n. 游戏规则是这样的:开始时物品可以在任意一人手上,他可把物品传递给其他人中的任意一位:下一个人可以传递给未接过物品的任意一人. 即物品只能经过同一个人一次 ...
- BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡:贪心【最小匹配代价】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3399 题意: 给你一个数列a,和一个可变换顺序的序列b(数列长度≤25000). a增加一 ...
- [程序员代码面试指南]递归和动态规划-最小编辑代价(DP)
问题描述 输入 原字符串StrOrg,目标字符串StrTarget,插入.删除.替换的编辑代价ic,dc,rc.输出将原字符串编辑成目标字符串的最小代价. 解题思路 状态表示 dp[i][j]表示把s ...
- VJP1456 最小总代价(状压)
链接 这题卡了一天 刚开始没考虑第一个传的和最后一个传的 感觉挺简单 啪啪的敲完 居然还过了17组数据.. 正解:dp数组一维保存状态 一维保存当前传到了谁 再枚举是由谁传过来的 这样可以保证正确性 ...
- vijo 1456最小总代价
题意:中文题... 题解:状态比较多,可以说是状压的基础题吧,我们定义dp[i][j],j为一个二进制数,每位0表示接触过该物品,1表示没有接触过;j表示当前物品在谁手上.递推的顺序注意一下就好 ac ...
随机推荐
- JS代码执行顺序
JavaScript执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的.而且在分析执行同一段代码中,定义式的函数语句会被提取出来优先执行.函数定义执行完后,才会按顺序执行其他代码. 先看看 ...
- StructureMap使用方法(转)
终于到了题目中的MVC使用StructureMap依赖注入的配置与实现了.在ASP.Net三层架构应用中StructureMap的是最老的IOC/DI工具,也就是依赖注入,很多线上的项目都使用了Str ...
- HTTP中Get与Post的区别
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认 为:一个URL地址,它用于描述一个网络上的资源,而HTT ...
- listivew 动态刷新单个item
使用ViewHolder来刷新某项数据,而不用每次都全部刷新数据. 继承BaseAdapter,新建ViewHolder类. public class TestListAdapter extends ...
- [问题2014A07] 解答
[问题2014A07] 解答 我们分三步进行证明. \(1^\circ\) 先证 \(\alpha_1,\alpha_2\) 线性无关. 用反证法, 设 \(\alpha_1,\alpha_2\) ...
- mac os 添加用户到组 命令
mac os 添加用户到组 命令 dscl localhost 进入组目录 cd /Local/Default/Groups 使用ls 你就可以看到所有的group,? /Local/Default/ ...
- (原创)LAMP搭建之一:图解如何安装并检查LAMP
LAMP搭建之一:图解如何安装并检查LAMP 第一步:安装Linux(RedHat5) 第二步:rpm -qa httpd(查看apache是否安装) rpm -qa php(查看php是否安装) r ...
- Windows下面安装easy_install报UnicodeDecodeError: 'ascii' codec can't decode byte解决方法
在运行python ez_setup.py install后, 发现是在下载并解压setuptools-2.1,并运行setup.py时出现如下错误: 提示D:\Python27\lib\mimety ...
- treeview递归加载
实体类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...
- 浏览器何时发送一个Option请求
Http Options Method 简而言之,OPTIONS请求方法的主要用途有两个: 1.获取服务器支持的HTTP请求方法: 2.用来检查服务器的性能. CORS(跨域资源共享) CORS是一种 ...