ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【ybtoj】【RMQ问题】与众不同

2021-09-11 16:31:07  阅读:121  来源: 互联网

标签:RMQ 与众不同 val ybtoj ll long && 序列


题意

题解

虽然在\(RMQ\)的章节里,但是这题的重点不在\(RMQ\),只是一个优化
考虑如何找到一段完美序列
记录\(lst[val]\)表示val值上次出现的位置,\(pre[i]\)表示以\(i\)为结尾的完美序列的起点
那么转移式很显然

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int INF = 0x3f3f3f3f,N = 2e5+10;
inline ll read()
{
	ll ret=0;char ch=' ',c=getchar();
	while(!(c>='0'&&c<='9')) ch=c,c=getchar();
	while(c>='0'&&c<='9') ret=(ret<<1)+(ret<<3)+c-'0',c=getchar();
	return ch=='-'?-ret:ret;
}
int n,w[N],ecnt=-1,head[N],minw=INF,du[N];
ll ans;
struct edge
{
	int nxt,to;
}a[N<<1];
inline void add(int x,int y)
{
	a[++ecnt]=(edge){head[x],y};
	head[x]=ecnt;
}
void dfs(int u,int fa)
{
	if(!w[u]) return;
	minw=min(minw,w[u]);
	for(int i=head[u];~i;i=a[i].nxt)
	{
		int v=a[i].to;
		if(v==fa||!w[v]) continue;
		dfs(v,u);
		break;
	}
	w[u]-=minw;
	if(w[u]==0) 
		for(int i=head[u];~i;i=a[i].nxt)
		{
			int v=a[i].to;
			du[v]--;
		}
}
int main()
{
	freopen("snow.in","r",stdin);
	freopen("snow.out","w",stdout);
	memset(head,-1,sizeof(head));
	n=read();
	for(int i=1;i<=n;i++) w[i]=read();
	for(int i=1;i<n;i++)
	{
		int u=read(),v=read();
		add(u,v),add(v,u);
		du[u]++,du[v]++;
	}
	while(1)
	{
		//printf("1");
		minw=INF;
		bool flag=0;
		for(int i=1;i<=n;i++)
		{	
			if(w[i]&&du[i]<=1) 
			{
				flag=1,dfs(i,0),ans+=minw;
			//	printf("i=%d\n",i);
			
			//for(int i=1;i<=n;i++)
			//	printf("w[%d]=%d\n",i,w[i]);
			}
		}
	
		if(!flag) break;
	}
	printf("%lld",ans);
	return 0;
}
/*
5
5 4 5 3 2
1 2
2 3
3 4
3 5
*/

标签:RMQ,与众不同,val,ybtoj,ll,long,&&,序列
来源: https://www.cnblogs.com/conprour/p/15255571.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有