【BZOJ 3681】Arietta

PX4笔记系列(二)vtol_att_control中的tiltrotor解析 update_vtol_state() 注释:采用两段切换的简单逻辑来进行过渡 当切换过渡开关后,飞机将会开始倾转动力,逐渐加速,当飞机获得足够速度后动力将会完全打到向前的位置。对于过渡返回阶段动力则是简单地倾转回来。 如果(不在向前过渡指令下): 当前vtol飞行模式: 1、旋翼模式 无操作 2、固定翼模式 令vtol飞行模式切换到过渡返回模式 3、P1过渡模式 进入过渡失败安全返回至旋翼模式 4、P2过渡模式 进入过渡失败安全返回至旋翼模式 5、过渡返回模式 记录过渡返回时间=当前时间-过渡开始 阅读详情

传送门

题目描述

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;
}

Altera Cyclone4 EP4CE15F17C8核心板硬件设计避坑指南(附AD09工程文件) 本文深入解析Altera Cyclone4 EP4CE15F17C8核心板硬件设计中的关键问题与解决方案,涵盖电源架构优化、信号完整性处理、热设计及生产调试要点。特别提供经过验证的AD09工程文件,帮助开发者规避常见设计陷阱,提升FPGA项目的成功率与可靠性。 阅读详情

相关推荐

保姆级教程:在Ubuntu 22.04上用VLLM+OpenWebUI部署DeepSeek-R1-14B(含Q8量化模型下载)

本文提供在Ubuntu 22.04上使用VLLM和OpenWebUI部署DeepSeek-R1-14B大语言模型的完整教程,包括环境配置、模型下载、VLLM参数调优及OpenWebUI集成。特别针对Q8量化模型优化部署流程,解决CUDA版本冲突等常见问题,适合开发者快速搭建本地AI对话系统。

weixin_26712075的博客 430

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

.

xiaoyimi的博客 1275

Robocup3d

一、 比赛介绍 RoboCup 仿真比赛是一个能为多智能体系统和模拟智能进行研究、教育的工具。比赛是在一个标准的计算机环境中进行的,提供了一个完全分布式控制、实时异步多智能体环境。通过这个平台,可以测试各种理论、算法和Agent体系结构。在实时异步、有噪声的对抗环境中,研究多智能体的合作对抗问题。当然,仿真组的比赛使用的机器人并非是真的机器人。一个机器人是一个Agent, 它拥有自己的大脑,

zhanghe2775115的专栏 7265

数据结构优化连边

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

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

Syzkaller实战教程2:运行环境配置+实例运行

本文详细介绍了在linux系统上搭建Syzkaller内核模糊测试环境的完整流程。 1.环境配置:通过VMware创建Ubuntu20.04虚拟机A,配置QEMU/KVM虚拟化环境,安装Go语言工具链和Syzkaller; 2.内核编译:下载Linux内核源码并配置KCOV等调试选项,编译生成带覆盖率支持的bzImage内核镜像; 3.测试环境构建:使用debootstrap创建Debian虚拟机镜像,通过QEMU启动嵌套虚拟机B; 实例测试: 4.演示两种测试场景 - 提供完整上手教程

cuguanren的博客 1377

Win10下Altera USB-Blaster驱动安装详解:禁用数字签名与排查指南

在嵌入式开发和FPGA调试过程中,驱动安装是工程师绕不开的环节,尤其是当操作系统对驱动签名有严格限制时,硬件往往无法被正常识别。数字签名是系统验证驱动程序来源和完整性的重要机制,Win10出于安全考虑,默认拒绝加载未经签名的驱动,这正是Altera USB-Blaster下载器在设备管理器中显示未知设备或黄色感叹号的根本原因。通过理解设备管理器的排查逻辑,掌握临时禁用驱动强制签名或开启测试模式的方法,配合正确的驱动文件路径选择与手动安装操作,即可解决Quartus无法检测到下载器的问题。这一流程同样适用于许

weixin_29164497的博客 245

【bzoj3681】Arietta

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

hychxb的博客 401

STM32铅酸蓄电池内阻测试仪的交流阻抗测量与数据采集优化

本文深入探讨了基于STM32的铅酸蓄电池内阻测试仪设计,重点解析了交流阻抗测量原理与数据采集优化方案。通过采用1kHz交流小信号注入和数字相敏检波技术,实现对电池欧姆内阻的无损精准测量,并详细介绍了硬件前端调理、ADC过采样及系统标定等关键优化手段,有效提升了测量精度与稳定性。

weixin_29168393的博客 487

bzoj 3681: Arietta

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

fyc的博客 355

别再手动调参了!用Optuna+PyTorch搞定Transformer时序预测超参数(附完整代码)

本文详细介绍了如何利用Optuna和PyTorch实现Transformer时序预测模型的自动化超参数调优。通过贝叶斯优化技术,显著提升单变量时序预测的效率和准确性,并附有完整代码实现。文章涵盖模型架构设计、数据预处理、Optuna调参实战及生产环境部署建议,为开发者提供一站式解决方案。

weixin_33704234的博客 576

基于STM32的汽车主门电动窗开关系统设计方案

以下是基于 STM32CubeMX 和 HAL 库的示例代码,可实现基本的功能。

weixin_42300449的博客 995

【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

2025机械考研复试面试问题汇总篇(含13门科目),考研机械复试专业面试常见重点问题总结!考研机械复试专业面试准备看这一篇就够了!

(完整版内容:)1.汇集了本科各科的重点知识及多个机械名校800多个常见问题,共8.7万字185页,涵盖机械所以专业课的重点知识和常见问答。 2.涉及机械大类重点科目,包括:材料力学、控制工程、数控技术、机械制造技术基础、理论力学、液压传动、机械设计、机械原理、工程材料、互换性与技术测量、测试技术、汽车理论、程序设计与C语言等13门必修课。

weixin_56510835的博客 1862

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

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

aodanchui1057的博客 126

VB摄像头监控

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

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

bzoj3681 Arietta

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

aklm45097的博客 232

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

bzoj 3681 Arietta

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

aobai7842的博客 121

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

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、付费专栏及课程。

余额充值