【BZOJ 3681】Arietta

2.设置Salesforce开发环境 Salesforce DX:salesforce Developer Experience (salesforce开发人员体验)LWC:Lightning Web Component(注意首字母是大写的,是一个概念,小写的话有组件本身的含义)CLI:Command Line Interface(命令行界面)version control system (VCS):版本控制系统。 阅读详情

传送门

题目描述

Arietta 的命运与她的妹妹不同,在她的妹妹已经走进学院的时候,她仍然留在山村中。
但是她从未停止过和恋人 Velding 的书信往来。一天,她准备去探访他。
对着窗外的阳光,临行前她再次弹起了琴。
她的琴的发声十分特殊。
让我们给一个形式化的定义吧。
所有的 n 个音符形成一棵由音符 C ( 1 号节点) 构成的有根树,每一个音符有一个音高 Hi 。
Arietta 有 m 个力度,第 i 个力度能弹出 Di 节点的子树中,音高在 [Li,Ri] 中的任意一个音符。
为了乐曲的和谐,Arietta 最多会弹奏第 i 个力度 Ti 次。
Arietta 想知道她最多能弹出多少个音符。

Sol

显然就是个最大权匹配问题,用网络流解决。

暴力连边边数显然爆炸,所以用个数据结构优化一下连边就可以了。

这里既然是子树那么自然就用线段树合并来维护就可以了。

每次合并的时候新建点并连边。然后叶子节点注意可能有多个点有相同的 H 所以应该新建点向原来的点各连一条边。

code:

#include<bits/stdc++.h>
using namespace std;
#define Set(a,b) memset(a,b,sizeof(a))
template<class T>inline void init(T&x){
	x=0;char ch=getchar();bool t=0;
	for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') t=1;
	for(;ch>='0'&&ch<='9';ch=getchar()) x=(x<<1)+(x<<3)+(ch-48);
	if(t) x=-x;return;
}typedef long long ll;
const int N=1e4+10;
const int MAXN=4e5;
const int MAXM=1e6;
const int INF=1e9;
int H[N],rt[N],ls[MAXN],rs[MAXN];int n,m;
vector<int> Son[N];
int cur=0,S,T;
struct edge{
	int to,next,cap;
}a[MAXM<<1];
int head[MAXN],cnt=0,d[MAXN];
inline void add(int x,int y,int z){a[cnt]=(edge){y,head[x],z};head[x]=cnt++;}
inline void add_edge(int x,int y,int z){add(x,y,z),add(y,x,0);}
inline void Insert(int&u,int l,int r,int i){
	u=++cur;if(l==r) return add_edge(T+u,i,INF);
	int mid=(l+r)>>1;
	if(mid>=H[i]) Insert(ls[u],l,mid,i),add_edge(T+u,T+ls[u],INF);
	else          Insert(rs[u],mid+1,r,i),add_edge(T+u,T+rs[u],INF);
	return;
}
void Link(int u,int l,int r,int L,int R,int p){
	if(!u) return;
	if(l>=L&&r<=R) return add_edge(p,T+u,INF);
	int mid=(l+r)>>1;
	if(mid>=L) Link(ls[u],l,mid,L,R,p);
	if(mid< R) Link(rs[u],mid+1,r,L,R,p);
	return;
}
int Merge(int u,int v,int l,int r) {
	if(!u||!v) return u|v;int p=++cur;
	if(l==r) {
		add_edge(T+p,T+u,INF),add_edge(T+p,T+v,INF);
		return p;
	}int mid=(l+r)>>1;
	ls[p]=Merge(ls[u],ls[v],l,mid);
	rs[p]=Merge(rs[u],rs[v],mid+1,r);
	if(ls[p]) add_edge(T+p,T+ls[p],INF);
	if(rs[p]) add_edge(T+p,T+rs[p],INF);
	return p;
}
void dfs(int u){
	Insert(rt[u],1,n,u);
	vector<int>::iterator iter;
	for(iter=Son[u].begin();iter!=Son[u].end();++iter) {int v=*iter;dfs(v);rt[u]=Merge(rt[u],rt[v],1,n);}
	return;
}
int TAIL,now[MAXN];
int dfs(int u,int flow){
	if(u==T) return flow;
	int res=flow;
	for(int v,&i=now[u];~i;i=a[i].next) {
		v=a[i].to;if(!a[i].cap||d[v]!=d[u]+1) continue;
		int f=dfs(v,min(res,a[i].cap));
		a[i].cap-=f,a[i^1].cap+=f,res-=f;
		if(!f) d[v]=0;
		if(!res) break;
	}return flow-res;
}
queue<int> Q;
inline bool bfs(){
	while(!Q.empty()) Q.pop();
	for(int i=0;i<=TAIL;++i) d[i]=0;
	d[S]=1;Q.push(S);
	while(!Q.empty()) {
		int u=Q.front();Q.pop();
		for(int v,i=head[u];~i;i=a[i].next) {
			v=a[i].to;if(!a[i].cap||d[v]) continue;
			d[v]=d[u]+1;if(v==T) return 1;
			Q.push(v);
		}
	}
	return d[T];
}
inline int Dinic(){int flow=0;while(bfs()) {for(int i=S;i<=TAIL;++i) now[i]=head[i];flow+=dfs(S,INF);}return flow;}
int main()
{
	freopen("data.in","r",stdin);
	freopen("my.out","w",stdout);
	init(n),init(m);int f;Set(head,-1);
	for(int i=2;i<=n;++i) init(f),Son[f].push_back(i);
	S=0,T=n+m+1;
	for(int i=1;i<=n;++i) init(H[i]),add_edge(i,T,1);
	dfs(1);
	for(int i=1;i<=m;++i) {
		int L,R,D,Ti;
		init(L),init(R),init(D),init(Ti);
		add_edge(S,i+n,Ti);Link(rt[D],1,n,L,R,i+n);
	}TAIL=T+cur;printf("%d\n",Dinic());
	return 0;
}

汽车级智能栅极驱动器深度解析 | 连载01:DRV871x-Q1系列产品架构与核心特性 集成度:单芯片集成多通道驱动器、电源管理、电流检测智能化:自适应控制算法,减少外部元件可靠性:多重保护机制,满足汽车级要求灵活性:SPI和硬件两种接口,适应不同应用需求。 阅读详情

相关推荐

【技术纵览】行为识别前沿模型演进:从CNN到多模态大模型

本文全面解析了行为识别技术从CNN到多模态大模型的演进历程,重点介绍了SlowFast、TimeSformer、VideoMAE和InternVideo等SOTA模型的核心创新与应用实践。通过对比分析各代模型在Kinetics-400等数据集上的表现,揭示了自监督学习和多模态融合如何推动行为识别准确率突破85%,并探讨了工业部署中的技术选型策略与优化方向。

weixin_29169505的博客 153

【BZOJ3681】Arietta,主席树优化网络流

.

xiaoyimi的博客 1275

AD7920实战:从咪头到ADC的音频信号采集电路设计全解析(附电路图)

本文详细解析了基于AD7920 ADC芯片的音频信号采集电路设计全流程。从驻极体咪头的驱动、AD8542运放的两级增益与偏置设计,到关键的抗混叠滤波器配置,以及ADC接口的驱动缓冲与PCB布局要点,提供了完整的实战指南与电路图,帮助开发者实现高质量音频信号采集。

red88的博客 802

数据结构优化连边

什么是线段树连边对于一类题目,它们建出来的图好大好大,这时候通常可以利用线段树(大多数时候是可持久化线段树)来进行优化连边,保证点的连通性不变,路径权值信息不变。例题1:湖南集训2014JabberwockyII前言:这道题当时是我在Noip吧问的,年代比较久远。 给出三个数列{Xi},{Ai},{Bi}。 若存在一个长度为m数列{Pi},满足P递增且P[1]=1,P[m]=n。 那么该数列P

不来也不去的一只失忆蝴蝶 1413

立创EDA + AI 生成 STM32 原理图教程1

AI辅助立创EDA设计STM32原理图教程摘要 本教程系统介绍如何利用AI工具(如Claude Code、DeepSeek等)与立创EDA专业版结合,实现STM32原理图的智能生成与优化。主要内容包括: 技术架构:采用分层设计,AI生成结构化网表数据,由立创EDA执行确定性绘图,确保可审查性 环境搭建:详细说明立创EDA专业版、Node.js等工具的安装配置 五种AI集成方案:包括官方AI Skill、MCP Server等不同实现方式 核心功能: 自动提取STM32引脚定义 智能元件选型与LCSC编号匹配

shihui2003的博客 1553

匹配博弈双边选择算法

刚学图论匹配方面的一些知识,记录下来。

ymengm的博客 2435

【bzoj3681】Arietta

题面 所有的 n 个音符形成一棵由音符 C ( 1 号节点) 构成的有根树,每一个音符有一个音高 Hi 。 Arietta 有 m 个力度,第 i 个力度能弹出 Di 节点的子树中,音高在 [Li,Ri] 中的任意一个音符。 为了乐曲的和谐,Arietta 最多会弹奏第 i 个力度 Ti 次。 Arietta 想知道她最多能弹出多少个音符。 1 ≤ n, m ≤ 10000 。 链接戳这里! 分析...

hychxb的博客 401

Qt应用软件【协议篇】自定义协议处理串口半包贴包

Qt串口数据,半包,贴包,丢包数据处理

小鱼酱的博客 1211

bzoj 3681: Arietta

题意: 所有的 n 个音符形成一棵由音符 C ( 1 号节点) 构成的有根树,每一个音符有一个音高 Hi 。 Arietta 有 m 个力度,第 i 个力度能弹出 Di 节点的子树中,音高在 [Li,Ri] 中的任意一个音符。 为了乐曲的和谐,Arietta 最多会弹奏第 i 个力度 Ti 次。 Arietta 想知道她最多能弹出多少个音符。 题解: 显然一种暴力的做法是每个力度向...

fyc的博客 355

【连接器专题】 EIA-364 系列标准的完整列表

EIA-364 系列标准在电子工业中具有重要的地位,为电子连接器和互连系统的测试和验证提供了统一的、可操作的流程和方法,有助于提高电子产品的质量和可靠性,促进了电子工业的发展

一点硬件 2659

多模态脑区细分图谱 HCP-MMP v1.0, Glasser et al. 2016 皮层和皮下区域,简写和全称对应关系

人类连接组计划多模态脑区细分图谱(HCP-MMP)提供了对人类大脑皮层区域的非常有用的细分(Glasser et al. 2016a, b)。图谱是多模态的,因为每个区域都是根据四个标准的组合定义的,包括结构(T1加权/T2加权髓鞘含量和皮层厚度图)、静息态功能连接、基于任务的激活和拓扑地形组织。HCP-MMP v1.0图谱包含每个半球180个皮层区域,基于210名参与者的分析。

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 2621

【bzoj3681】Arietta 【网络流】【主席树】【启发式合并】

题目链接 题解:这是一个网络流的模型,很容易看出来。 首先让我们考虑一个朴素的网络流建模: s−&gt;力度i:t[i]s−&gt;力度i:t[i]s->力度i:t[i] 力度i−&gt;可以弹奏的音符j(j在d[i]子树中,l[i]&lt;=h[j]&lt;=r[i]):inf力度i−&gt;可以弹奏的音符j(j在d[i]子树中,l[i]&lt;=h[j]&lt;=r[i]):inf力度...

2016gdgzoi471 725

【Qt】解决 FTH: (11284): *** Fault tolerant heap shim applied to current process. (亲测有效)

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers。容错堆垫片应用到当前的过程。这通常是由于以前的崩溃。win + r,输入regedit。

Fanjufei的博客 830

【BZOJ3681】Arietta 树链剖分+可持久化线段树优化建图+网络流

【BZOJ3681】Arietta Description Arietta 的命运与她的妹妹不同,在她的妹妹已经走进学院的时候,她仍然留在山村中。但是她从未停止过和恋人 Velding 的书信往来。一天,她准备去探访他。对着窗外的阳光,临行前她再次弹起了琴。她的琴的发声十分特殊。让我们给一个形式化的定义吧。所有的 n 个音符形成一棵由音符 C ( 1 号节点) 构成的有根树,每一...

aodanchui1057的博客 126

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

bzoj3681 Arietta

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3681 【题解】 这题和bzoj3218很像,都是有二维限制关系的网络流。 先考虑了bzoj3218是用主席树来建图然后网络流,感觉这题也能这样做(在dfs序上,主席树建图) 后来发现这样好像不兹磁区间减法啊 然后发现可以线段树合并来做,这样就很兹磁了。 加边的时候(u,...

aklm45097的博客 232

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

bzoj 3681 Arietta

一棵有根树,每个点有一个音高,有 $m$ 中弹奏方法,每种方法可以弹奏 $d$ 子树中音高在 $[l,r]$ 间的音符,每种方法最多弹 $t$ 次 求最多能弹出多少个音符 $n \leq 10000$ sol: 网络流 暴力连边是 1. $S \rightarrow 每个点$ 2. $每个方法 \rightarrow T$ 3. $每个点 \rightarrow 每个能用...

aobai7842的博客 121

BZOJ 3681: Arietta

这题跟前一题差不多同样是用主席树来优化建图 因为要保存每个点的信息 所以孩子合并到父亲的时候要新开一个节点 把这两个点并起来 总的来算 其实也就多了一倍嘛。。 一开始的打法真的蠢QAQ

cgh_Andy's Blog 660

BZOJ3681: Arietta

Description Arietta 的命运与她的妹妹不同,在她的妹妹已经走进学院的时候,她仍然留在山村中。但是她从未停止过和恋人 Velding 的书信往来。一天,她准备去探访他。对着窗外的阳光,临行前她再次弹起了琴。她的琴的发声十分特殊。让我们给一个形式化的定义吧。所有的 n 个音符形成一棵由音符 C ( 1 号节点) 构成的有根树,每一个音符有一个音高 Hi 。Arietta 有 m...

weixin_30762087的博客 134

bzoj3681: Arietta(网络流)

传送门 主席树优化建图? 然而我连代码都看不懂 贴个题解好了->这里 1 //minamoto 2 #include<iostream> 3 #include<cstdio> 4 #include<cstring> 5 #include<queue> 6 #include<vector&...

weixin_30616969的博客 106

【BZOJ-3681】Arietta 网络流 + 线段树合并

3681: Arietta Time Limit:20 SecMemory Limit:64 MBSubmit:182Solved:70[Submit][Status][Discuss] Description Arietta 的命运与她的妹妹不同,在她的妹妹已经走进学院的时候,她仍然留在山村中。但是她从未停止过和恋人 Velding 的书信往来。一天,她准备去探访他...

weixin_30472035的博客 98

[主席树优化建图][网络流] Bzoj P3681 Arietta

Description Arietta 的命运与她的妹妹不同,在她的妹妹已经走进学院的时候,她仍然留在山村中。但是她从未停止过和恋人 Velding 的书信往来。一天,她准备去探访他。对着窗外的阳光,临行前她再次弹起了琴。她的琴的发声十分特殊。让我们给一个形式化的定义吧。所有的 n 个音符形成一棵由音符 C ( 1 号节点) 构成的有根树,每一个音符有一个音高 Hi 。Arietta 有 m...

weixin_30480583的博客 249
上一篇: 【UOJ#77】A+B Problem
下一篇: 【BZOJ 3682】Phorni
NeosKnight
博客等级 码龄9年 21粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值