b2324/luogu4542 [ZJOI2011]营救皮卡丘

bzoj 1018 堵塞的交通traffic (线段树) 题意: 思路: 参考博客:https://www.cnblogs.com/MashiroSky/p/5973686.html         非常非常难写的线段树,不仅难想还难写。         首先,这个线段树维护的是什么,是该区域四个顶点的连通性  ... 阅读详情

题意:

       中文题

思路:

首先,如果要探寻新的点,假设i->j,一定是走的路径上比他们小的点过去的,并且在这个条件下,一定是走的最短路。这个过程可以使用floyd完成。对于i<j,假如能够到达,那么就建立一条长度为跑完floyd的dist[i][j]。
那么现在问题就变成了最多使用k条路径覆盖整个dag,并且要求花费最小
很容易联想到路径覆盖问题,在那个问题中,我们将一个点拆成两个点,一个表示入度,一个表示出度,答案就是n-maxflow,因为匹配数每增大1,就意味着有两个路径合二为一(假设开始每个点是单个点的路径)。
在现在这个问题中,出现了一些变化,首先我们要求每个路径从0出发,同时要求结果最小。我们使用费用流,用和最小路径覆盖一样的建图,即一个点拆成两个,一个表示入度,一个表示出度,S与左端点连线,流量为1,花费为0,右端的点用类似的方法与T连边。对于i,j(i<j),假设i,j存在一条路径,那么就让左端的i与右端的j连一条流量为1,花费为dist[i][j]。这样跑出的结果就是答案。

为什么呢?首先我们从是否是全部覆盖与是否合法上开想,首先我们能够保证答案在全覆盖的情况下是合法的,因为我们跑floyd的时候,保证只能从小的点转移。那么怎么保证全覆盖?题目保证了一定有解,而mcmf保证了最大流,故流量一定是n,即每个点一定在某个路径中,所以一定是全覆盖。

错误及反思:

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#include<iostream>
#include<stack>
#include<set>
#include<string>
#include<map>
#include<cmath>
#include<bitset>
using namespace std;
#define pb push_back
#define pf push_front
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define mst(x,a) memset(x,a,sizeof(x))
#define all(x) (x).begin(),(x).end()
#define CLOSE ios::sync_with_stdio(false)
typedef pair<int,int> pii;
typedef long long ll;
typedef unsigned long long ull;
typedef vector<int> vi;
#define fi first
#define se second
#define sz(x) ((int)x.size())
#define cl(x) x.clear()
const int N = 100100;
const int M = 200010;
const int inf=0x3f3f3f3f;
const int mod=1000000007;
ll qpow(ll a,ll b){ll ans=1;while(b){if(b&1)ans=ans*a%mod;a=a*a%mod;b/=2;}return ans;}
ll qpow(ll a,ll b,ll c){ll ans=1;while(b){if(b&1)ans=ans*a%c;a=a*a%c;b/=2;}return ans;}

int dist[155][155];

int head[N];
int d[N], incf[N], pre[N], v[N];
int n, m, tot, s, t, maxflow, ans, k;

struct EDGE{
    int to,nex,c,v;
}e[M*2];


void add(int x, int y, int z, int c) {
    e[tot].to=y; e[tot].c=z; e[tot].v=c; e[tot].nex=head[x]; head[x]=tot++;
    e[tot].to=x; e[tot].c=0; e[tot].v=-c; e[tot].nex=head[y]; head[y]=tot++;
}

bool spfa() {
	queue<int> q;
	memset(d, 0x3f, sizeof(d));
	memset(v, 0, sizeof(v));
	q.push(s); d[s] = 0; v[s] = 1;
	incf[s] = 1 << 30;
	while (q.size()) {
		int x = q.front(); v[x] = 0; q.pop();
		for (int i = head[x]; i!=-1; i = e[i].nex) {
			if (!e[i].c) continue;
			int y = e[i].to;
			if (d[y]>d[x] + e[i].v) {
				d[y] = d[x] + e[i].v;
				incf[y] = min(incf[x], e[i].c);
				pre[y] = i;
				if (!v[y]) v[y] = 1, q.push(y);
			}
		}
	}
	if (d[t] == 0x3f3f3f3f) return false;
	return true;
}

void update() {
	int x = t;
	while (x != s) {
		int i = pre[x];
		e[i].c -= incf[t];
		e[i^1].c += incf[t];
		x=e[i^1].to;
	}
	maxflow += incf[t];
	ans += d[t]*incf[t];
}

void init(){
    for(int i=1;i<=3*n;i++) head[i]=-1;
    tot=0; ans=0;
}

int main(){
    mst(dist,0x3f);
    scanf("%d%d%d",&n,&m,&k);
    for(int i=0;i<=n;i++) dist[i][i]=0;
    for(int i=1;i<=m;i++){
        int a,b,c; scanf("%d%d%d",&a,&b,&c);
        dist[a][b]=min(dist[a][b],c); dist[b][a]=min(c,dist[b][a]);;
    }
    for(int k=0;k<=n;k++)
        for(int i=0;i<=n;i++)
            for(int j=0;j<=n;j++){
                if(k<=max(i,j)) dist[i][j]=min(dist[i][j],dist[i][k]+dist[k][j]);
            }
    s=2*(n+1)+1; t=s+1;
    init();

    add(s,1,k,0);

    for(int i=1;i<=n;i++) add(s,i+1,1,0),add(n+1+i+1,t,1,0);

    for(int i=0;i<=n;i++){
        for(int j=i+1;j<=n;j++){
            if(dist[i][j]!=0x3f3f3f3f)
                add(i+1,j+1+n+1,1,dist[i][j]);
        }
    }
    while (spfa()) update();
    printf(" %d %d\n",maxflow,ans);
}


ENU坐标系实战:5分钟搞定无人机导航中的站心坐标转换 本文针对无人机导航中GPS坐标与视觉感知不匹配的定位漂移问题,提供了基于ENU坐标系的实战解决方案。通过Python代码演示了如何快速、精准地实现地心地固坐标与站心坐标之间的转换,并详细解释了转换原理、精度对比及工程优化技巧,帮助开发者从根本上解决局部相对定位不准的难题。 阅读详情

相关推荐

手把手教你设计低噪声前置放大电路:从光电二极管到X射线探测器的实战配置

本文实战指南详细解析了低噪声前置放大电路的设计,重点针对光电二极管和X射线探测器等微弱信号源。文章深入对比了跨阻放大器与电荷灵敏放大器的核心架构、噪声优化策略及PCB布局技巧,手把手指导从电路选型、仿真验证到调试测试的全流程,助力工程师构建精准可靠的信号链。

tech5的博客 512

LOJ#3342.【NOI2020】制作菜品(dish)

Description LOJ3342 n≤500,m≥n−2,k≤5000n\le500,m\ge n-2,k\le5000n≤500,m≥n−2,k≤5000 Solution 一道性质题。 考场上想了一会儿的网络流,但是并不可做,之后尝试猜结论,打了一个暴力。 之后看到了m=n−1m=n-1m=n−1的部分分,虽然想到了树,以及每一次的叶子都是剩余值最小的那个,但是并不知道到它和哪一个合并在一起,然后就没有想法了。 实际上,对于这一类的题目,应该大胆顺着自己的结论往下走,多玩一玩样例,就可以发

Deep_Thinking的博客 351

Foxmail 7.2.25以下版本XSS漏洞实战复现:手把手教你如何构造恶意邮件(含防御方案)

本文深入解析Foxmail 7.2.25以下版本的XSS漏洞(CNVD-2025-06036),详细展示如何构造恶意邮件进行跨站脚本攻击,并提供从客户端升级到企业级防护的多层次防御方案,帮助用户有效防范安全风险。

view3的博客 163

[ZJOI2011]营救皮卡丘

题目描述 皮卡丘被火箭队用邪恶的计谋抢走了!这三个坏家伙还给小智留下了赤果果的挑衅!为了皮卡丘,也为了正义,小智和他的朋友们义不容辞的踏上了营救皮卡丘的道路。 火箭队一共有N个据点,据点之间存在M条双向道路。据点分别从1到N标号。小智一行K人从真新镇出发,营救被困在N号据点的皮卡丘。为了方便起见,我们将真新镇视为0号据点,一开始K个人都在0号点。 由于火箭队的重重布防,要想摧毁K号据点,必须按照顺序先摧毁1到K-1号据点,并且,如果K-1号据点没有被摧毁,由于防御的连锁性,小智一行任何一个人进入据点K,

a12qqhao的博客 399

Orale EBS R12 AP应付模块 发票导入接口(Interface)

ap_interface_groups_s.nextval; ap_invoices_interface_s.nextval; ap_invoice_lines_interface_s.nextval; SELECT * FROM ap_invoices_interface ih; SELECT * FROM ap_invoice_lines_interface il; SELECT * FROM...

qq_41206741的博客 3316

三角洲自动购买工具 —— 基于 OCR 的价格识别与自动点击

通过的方式,我们可以轻松实现自动化的“价格监控 + 自动点击”工具。它的优势在于通用性—— 只要能截屏识别价格,就能用于任何程序,不依赖特定 API。未来可以扩展的功能:自动保存配置到文件。支持多价格区域检测。增加快捷键启停功能。

qq_62975494的博客 2418

2324: [ZJOI2011]营救皮卡丘

2324: [ZJOI2011]营救皮卡丘 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 2406  Solved: 985 [Submit][Status][Discuss] Description 皮卡丘被火箭队用邪恶的计谋抢走了!这三个坏家伙还给小智留下了赤果果的挑衅!为了皮卡丘,也为了正义,小智和他的朋友们义不容辞的踏上

CRZbulabula的博客 497

深入解析 ReDoc:从零构建高性能 API 文档的终极指南

ReDoc 是一个强大的开源工具,用于将 OpenAPI 规范转换为高质量、响应式的 API 文档。本文详细介绍了如何使用 ReDoc 构建和自定义 API 文档,包括如何编写支持 OpenAPI 的 API 注解、配置 HTML 页面以加载文档,以及如何利用 ReDoc 的高级功能进行定制。通过实例代码,您将学会如何灵活地展示 API 文档,提升用户体验。无论是初学者还是经验丰富的开发者,都能从本文中获得实用的技巧与方案,帮助快速搭建符合需求的 API 文档界面。

楠搏万的博客 4624

ZJOI2011 营救皮卡丘

题目 题目链接 思路 首先,看数据范围比较小,想到网络流。 对于最短路的那部分,在走到\(j\)的时候,不能经过\(>j\)的点,所以在\(Floyd\)的时候我们加一层限制\(K<=j\)处理出最短路。 然后考虑网络流建边。会发现有这么几个限制: 从小的点走向大的点 每个点都必须走到 不得超过\(K\)条路径 因为每一条路径一定都是从较小的点走向较大的点的,所以其实这是...

weixin_30906671的博客 165

SAP_SD模块路径及运输功能后台配置简介

后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义传输模式根据实际运输过程运输地理的类型:海运、公路运输、空运后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义发运类型根据实际运输过程运输方式:汽车、卡车、火车、轮船、飞机后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义运输连接点指在运输过程中需要中转的地区可以维护中转地区的停留的时间后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义路径和阶段。

我小时候很黑的博客 1397

Python爬虫实战:爬取ETF基金持仓变化

在python复制编辑本文详细介绍了如何使用Python的Scrapy框架爬取ETF基金的持仓变化信息,包括项目的搭建、数据的提取与存储、以及数据的可视化分析。通过本项目,读者可以掌握基本的网页爬虫技术,并应用于实际的财经数据采集与分析中。

2201_76125261的博客 629

洛谷P4097 bzoj3615 [HEOI2013]Segment(李超树)

题意: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; 两种操作,插入一个线段,或询问x=x0x=x0x=x_0时最大y对应的线段编号 思路: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;刚刚学了李超树就来A一下板子题,比起之前的题多了很多细节, 错误

Roll_Keyboard的博客 518

硅基半导体量子点:单电子自旋量子比特技术手册

现在我们已经了解了从硅片到容错计算的全部环节,让我们用一张总览图把碎片拼成完整拼图。fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;important;important;important;color:#000!important;important;important;important;important;color:#000!

VectorShift的博客 371

bzoj 1103 大都市meg (dfs序+线段树)

题意: &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;一颗树,每条边权是1,两种操作,一种查询x到根的距离,一种把某边改为0 思路: &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 对于一个边变了,那么影响的就是子树,所以dfs序+线段树就行了,这题对于时间要求很低,vector存边,每次暴力找答案也能A 错误及反思: 代码: ...

Roll_Keyboard的博客 457

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

bzoj 3052/洛谷 P4074/uoj 58 [WC2013]糖果公园(树上带修莫队)

题意: UOJ地址 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 洛谷地址 BZOJ因为版权挂了。。。 思路: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 比较裸的一道树上带修莫队,我们只要维护一下某个糖出现了几次,然后更新答案即可 错误及反思: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;n

Roll_Keyboard的博客 450

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

BZOJ 3289 Mato的文件管理(莫队+线段树/树状数组)

题意: 思路: 莫队+逆序数,思路还是很好想的,但是复杂度要纠结下。 对于[L,R]来说,向右边扩展,即变成了[L,R+1],就相当于只是在数组末端多了一个数,其他的操作也是同理,只要遵循,改变区间的时候,加上/减去比自己大的值即可 复杂度是莫队的o(nn‾√n\sqrt{n})乘以树状数组或者线段数查询的一个o(log(nn‾√)log(n\sqrt{n})) 错误及反思: 题目

Roll_Keyboard的博客 447

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

bzoj 2120 数颜色(可持久化莫队)

题意:思路:第一次写带修莫队,感觉还是比较简单的,相对于普通莫队,带修莫队主要是加了一个时间标志。大致思路就是,因为区间内的东西要修改,那就干脆继续暴力的修改,把[L,R]的转移,看成[L,R,T]的转移,依旧是利用排序进行优化,可以说带修莫队依旧是个暴力的优化。 不过,这题有一个疑点,就是在查看许多的博客里面,对于带修莫队,都说block为n23n^{\frac{2}{3}}时带修莫队速度达到最

Roll_Keyboard的博客 434

bzoj 1503 郁闷的出纳员 (权值线段树或splay)

题意: 思路: &nbsp;&nbsp;&nbsp;&nbsp; 因为工资修改值最多只有1e5,初始工资1e5+修改的2e5,那么其实我们只要开3e5的权值线段树就能维护了。对于加减钱,我们只要修改标准即可,对于加入人,只要让他的初始工资补上之前修改过得标准即可,而查询第k大,就是正常操作了。 &nbsp;&nbsp;&nbsp;&nbsp;为了方便操作,我们让初始工资钱成为1e5+1,...

Roll_Keyboard的博客 428

spoj Qtree6/bzoj 3637 Query on a tree VI(树链剖分+线段树/LCT)

题意: 思路: 首先,我们要开两颗线段树,一颗表示,当前节点为白时,和子树所组成的最大联通块大小是多少,另一颗表示,当前节点为黑时,和子树所组成的最大联通块大小是多少。 那么我们查询点u的答案的时候,就向上找到最远的相同颜色的点v,点v所保存的答案就是u的答案(我们v为最远同色祖先)。 更新某个点u的颜色的时候,就是把u的父亲和最远同色祖先的父亲,这一条路径上的都更新(注意,黑白各更新...

Roll_Keyboard的博客 413

BZOJ 1878 [SDOI2009]HH的项链 (莫队算法)

题意:给你n个数字,然后查询某个区间有多少种数字思路:莫队裸题,用一个cnt维护区间数字的数量就能实现o(1)转移了错误及反思:代码:#include<bits/stdc++.h> using namespace std; const int maxn= 50000+10; const int maxm= 1000000+10; int pos[maxn]; int cnt[maxm]; int a

Roll_Keyboard的博客 402

BZOJ 1036 树的统计Count(树链剖分)

题意:给你一棵树,n个节点,每个节点都有一个val,现在进行q次操作,操作有三种,第一种查询u到v的最大值,第二种,查询u到v的val和,第三种,将某个点修改val思路:树链剖分基本题,相比起前面几道树链剖分,这个题维护的是点,虽然我们从理论上来说,树链剖分是根据边来剖分的,但是其实我们维护的时候维护点更简单,所以这个题虽然写起来麻烦一点,但是逻辑上反而更顺 用两颗线段树分别维护最大值和最小值,和

Roll_Keyboard的博客 375

bzoj2599/洛谷4149 [IOI2011] Race(树分治)

题意:洛谷的地址 给一棵树,每条边有权。求一条简单路径,权值和等于 K ,且边的数量最小。思路:这题bzoj下线了,就去洛谷上A的 其实是一个比较简单的点分治 但是这题和之前的点分治不太一样(这题),这里的要求和之前不一样,我们不能算完重心的情况再去算子树的情况了 我们换一个思路,我们先遍历一颗以重心的儿子为根的子树,然后和一个之前的num(num[i]表示,到重心距离为i时最少经过几个边)

Roll_Keyboard的博客 365

BZOJ 4034 树上操作(树链剖分)

题意:思路:这题让我对树剖的体会更加深入了 因为我们在组链(也就是划分轻重边)的时候,是使用dfs序来进行划分的,所以我们子树的节点也依旧是在一起的,也就是说,树剖的时候顺便标记下dfs完自己子树时候的标号,就可以顺便完成dfs序时的标号要求了错误及反思:这题没什么难的。。主要是对树剖的体会更深了代码:#include<bits/stdc++.h> using namespace std; con

Roll_Keyboard的博客 353

bzoj 1086 王室联邦 (dfs,构造)

题意: 思路: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 首先我们dfs,如果一个节点v的儿子u所在的子树大于等于B,那么就把这个子树当作一个省份,对于这种情况,省会是u,v其实都可以。如果一个儿子u所在的子树小于B,可以先暂存起来,继续遍历其他儿子,当暂存的数量大于等于B的时候,将暂存的都归为一个省,省会为v,因为会暂存的子树大小为B-1,所以这样产生的子树大小最大为2B-2,在...

Roll_Keyboard的博客 347

bzoj 3626 LCA (树链剖分)

题意:思路:比较有意思的树链剖分 首先对于两个点lca的深度,我们发现就是两点和根的连线的重叠部分,那么我们就可以先把一个点到根的所有点都染下色,再用另一个点去查看到根有几个点被染色了 然后想怎么处理那么多区间,根据之前说的,我们可以把[l,r]中所有的点都看作第一个点,z看作第二个点,这样我们离线了提问,然后一边把点放进去一边查询即可错误及反思:l是可以为0的,bzoj有时候数据不会给的很细致

Roll_Keyboard的博客 320
上一篇: 有趣题目和认知合集(持续更新)
下一篇: 从零开始的几何学习
Roll_Keyboard
博客等级 码龄9年 10粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值