洛谷P3313 旅行

大数据分析案例-基于决策树算法构建信用卡违约预测模型 本项目旨在使用机器学习等算法构建信用卡违约预测模型,主要应用在金融相关领域,根据用户以往的行为数据来预测是否会违约,有利于商业银行防范和化解信用卡风险,完善信用卡违约风险管理工作。本次实验通过探索性分析以及使用决策树构建信用卡违约模型,得出以下结论:1.可透支金额主要集中在0~200000之间。2.性别对于可透支金额的影响较小。3.受教育程度和婚姻状况对可透支金额的影响较大。4.决策树模型的准确率为0.88,模型效果还有待提高。 阅读详情

题目描述

S国有N个城市,编号从1到N。城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市。每个城市信仰不同的宗教,如飞天面条神教、隐形独角兽教、绝地教都是常见的信仰。

为了方便,我们用不同的正整数代表各种宗教, S国的居民常常旅行。旅行时他们总会走最短路,并且为了避免麻烦,只在信仰和他们相同的城市留宿。当然旅程的终点也是信仰与他相同的城市。S国政府为每个城市标定了不同的旅行评级,旅行者们常会记下途中(包括起点和终点)留宿过的城市的评级总和或最大值。

在S国的历史上常会发生以下几种事件:

“CC x c“:城市x的居民全体改信了c教;

“CW x w“:城市x的评级调整为w;

“QS x y“:一位旅行者从城市x出发,到城市y,并记下了途中留宿过的城市的评级总和;

“QM x y“:一位旅行者从城市x出发,到城市y,并记下了途中留宿过的城市的评级最大值。

由于年代久远,旅行者记下的数字已经遗失了,但记录开始之前每座城市的信仰与评级,还有事件记录本身是完好的。请根据这些信息,还原旅行者记下的数字。 为了方便,我们认为事件之间的间隔足够长,以致在任意一次旅行中,所有城市的评级和信仰保持不变。

解析:

1.有多少个宗教,就建多少颗线段树

2.线段树要用动态开点,建树的方式很像主席树,合并的方式像线段树。

3.修改操作1就是先删掉x是宗教线段树中的x城市,把x城市的宗教改为c,再向c宗教线段树中插入x城市。

4.修改操作2直接把x城市的评级修改为w就好了。这个insert函数非常神奇,在建树的时候会加点,而在修改的时候不会加点,这样就可以少写一个函数了。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
struct tree
{
	int max;
	int sum;
	int l,r;
}tr[4000010];
struct point
{
	int next;
	int to;
}e[200001];
int n,m,q,num,cnt,x,y;
int fa[100010],head[100010],top[100010],size[100010],T[100010];
int deep[100010],id[100010],c[100010],w[100010],son[100010];
void add(int from,int to)
{
	e[++num].next=head[from];
	e[num].to=to;
	head[from]=num;
}
void dfs1(int x)
{
	size[x]=1;
	for(int i=head[x];i!=0;i=e[i].next)
	{
		int to=e[i].to;
		if(to!=fa[x])
		{
			fa[to]=x;
			deep[to]=deep[x]+1;
			dfs1(to);
			size[x]+=size[to];
			if(size[to]>size[son[x]])
				son[x]=to;
		}
	}
}
void dfs2(int x,int tp)
{
	top[x]=tp;
	id[x]=++cnt;
	if(son[x])
		dfs2(son[x],tp);
	for(int i=head[x];i!=0;i=e[i].next)
	{
		int to=e[i].to;
		if(to==fa[x]||to==son[x])
			continue;
		dfs2(to,to);
	}
}
void updata(int node)
{
	tr[node].max=max(tr[tr[node].l].max,tr[tr[node].r].max);
	tr[node].sum=tr[tr[node].l].sum+tr[tr[node].r].sum;
	return;
}
void pushdown(int node)
{
	tr[node].l=tr[node].r=tr[node].max=tr[node].sum=0;
}
void insert(int &node,int l,int r,int x,int v)
{
	if(!node)
		node=++cnt;
	if(l==r)
	{
		tr[node].max=tr[node].sum=v;
		return;
	}
	int mid=(l+r)/2;
	if(x<=mid)
		insert(tr[node].l,l,mid,x,v);
	else
		insert(tr[node].r,mid+1,r,x,v);
	updata(node);
}
void delt(int &node,int l,int r,int x)
{
	if(l==r)
	{
		pushdown(node);
		node=0;
		return;
	}
	int mid=(l+r)/2;
	if(x<=mid)
		delt(tr[node].l,l,mid,x);
	else
		delt(tr[node].r,mid+1,r,x);
	updata(node);
	if(!tr[node].l&&!tr[node].r)
	{
		pushdown(node);
		node=0;
	}
}
int query1(int node,int l,int r,int l1,int r1)
{
	if(!node)
		return 0;
	if(l1<=l&&r1>=r)
		return tr[node].sum;
	if(l1>r||r1<l)
		return 0;
	int mid=(l+r)/2;
	return query1(tr[node].l,l,mid,l1,r1)+query1(tr[node].r,mid+1,r,l1,r1);
}
int query2(int node,int l,int r,int l1,int r1)
{
	if(!node)
		return 0;
	if(l1<=l&&r1>=r)
		return tr[node].max;
	if(l1>r||r1<l)
		return 0;
	int mid=(l+r)/2;
	return max(query2(tr[node].l,l,mid,l1,r1),query2(tr[node].r,mid+1,r,l1,r1));
}
int getsum(int x,int y)
{
	int ans=0,root=c[x];
	while(top[x]!=top[y])
	{
		if(deep[top[x]]<deep[top[y]])
			swap(x,y);
		ans+=query1(T[root],1,n,id[top[x]],id[x]);
		x=fa[top[x]];
	}
	if(deep[x]>deep[y])
		swap(x,y);
	ans+=query1(T[root],1,n,id[x],id[y]);
	return ans;
}
int getmax(int x,int y)
{
	int ans=0,root=c[x];
	while(top[x]!=top[y])
	{
		if(deep[top[x]]<deep[top[y]])
			swap(x,y);
		ans=max(ans,query2(T[root],1,n,id[top[x]],id[x]));
		x=fa[top[x]];
	}
	if(deep[x]>deep[y])
		swap(x,y);
	ans=max(ans,query2(T[root],1,n,id[x],id[y]));
	return ans;
}
int main()
{
	scanf("%d%d",&n,&q);
	for(int i=1;i<=n;i++)
		scanf("%d%d",&w[i],&c[i]);
	for(int i=1;i<=n-1;i++)
	{
		scanf("%d%d",&x,&y);
		add(x,y);
		add(y,x);
	}
	deep[1]=1;
	dfs1(1);
	dfs2(1,1);
	for(int i=1;i<=n;i++)
		insert(T[c[i]],1,n,id[i],w[i]);
	for(int i=1;i<=q;i++)
	{
		char s[3];
		cin>>s;
		if(s[0]=='C'&&s[1]=='C')
		{
			scanf("%d%d",&x,&y);
			delt(T[c[x]],1,n,id[x]);
			c[x]=y;
			insert(T[c[x]],1,n,id[x],w[x]);
		}
		if(s[0]=='C'&&s[1]=='W')
		{
			scanf("%d%d",&x,&y);
			w[x]=y;
			insert(T[c[x]],1,n,id[x],w[x]);
		}
		if(s[0]=='Q'&&s[1]=='S')
		{
			scanf("%d%d",&x,&y);
			printf("%d\n",getsum(x,y));
		}
		if(s[0]=='Q'&&s[1]=='M')
		{
			scanf("%d%d",&x,&y);
			printf("%d\n",getmax(x,y));
		}
	}
	return 0;
}

基于MATLAB的PDT DMR物理层仿真 PDT DMR物理层仿真的目标是评估系统的误码率(Bit Error Rate,BER),以及验证和优化各种调制方案、编码方案和信道模型。下面将介绍如何进行PDT DMR物理层的仿真,并提供相应的MATLAB源代码。通过上述步骤,我们可以进行基于MATLAB的PDT DMR物理层仿真,并评估系统的性能。根据实际需求,我们可以修改仿真参数和添加更复杂的信道模型,以更全面地评估系统性能。最后,我们可以将仿真结果进行可视化和分析。首先,我们需要设置仿真的参数,包括调制方案、编码方案、信道模型和信噪比等。 阅读详情

相关推荐

你不必懂AI,但必须会用AI:写给所有焦虑中的职场人

AI时代不必焦虑学技术,关键在于用AI解决实际问题。文章指出,99%的人只需成为AI使用者而非建造者,核心竞争力在于结合业务痛点运用AI工具提升效率。与其盲目学习工具,不如梳理工作流程,识别可优化环节,让AI赋能重复性、标准化任务。行业经验与AI工具的结合才是真正的职场护城河。建议从具体工作场景出发,寻找匹配的AI解决方案,迈出应用第一步。

hundred98的博客 716

multiset/洛谷2234

可以实现: 有序插入(复杂度nlogn) lower_bound upper_bound 迭代器访问 相当于一个可以二分的链表,好妙啊QAQ #include <set> multiset<int> qaq; struct point{ int num,data; bool operator < (point tmp)const { return data<tmp.data; } } multiset<point>

zhutier 282

1.47寸ST7789V3彩色TFT LCD嵌入式驱动详解

TFT LCD是嵌入式人机交互(HMI)的核心显示技术,其工作原理依赖于行列驱动、RGB像素寻址与伽马校正等模拟/数字协同机制。ST7789V3作为主流低功耗TFT控制器,支持SPI接口与16位RGB565数据格式,具备高兼容性与轻量级驱动优势。在资源受限的MCU平台(如ARM Cortex-M系列)上,结合RT-Thread设备驱动模型与QSPI硬件加速,可实现高效显存管理、Bresenham图形算法及GB2312中文字模渲染。典型应用场景涵盖便携设备状态屏、工业HMI面板与教育开发套件——本文以1.47

weixin_42599908的博客 123

P1090 合并果子 AC于2018.9.8

原题 题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过 n−1 次合并之后, 就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。 因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节...

流年成沙的成长史 335

高通thermal-engine.conf配置详解:从虚拟传感器到CPU频率控制的完整指南

本文深入解析了高通thermal-engine.conf配置文件的架构与调优方法。从虚拟传感器的加权融合原理,到监控算法与CPU频率控制的多级策略,提供了完整的配置详解与实战调试指南。文章旨在帮助开发者与高级用户掌握底层温控逻辑,在性能与散热间实现精准平衡,并详细介绍了日志调试与场景化配置等高级技巧。

weixin_28327051的博客 494

FreeSWITCH编译安装详细文档

本文档详细介绍了在Ubuntu 22.04系统上从源码编译安装FreeSWITCH的完整流程。主要内容包括:1)系统环境准备和依赖库安装;2)关键依赖库spandsp和sofia-sip的编译安装;3)FreeSWITCH源码的特定版本(v1.6.0)编译配置,包括禁用SignalWire模块的配置方法;4)系统服务配置,包括创建专用用户、设置权限以及配置systemd服务文件。文档特别提供了版本控制说明,确保后期能切换到相同的版本环境,并附有详细的命令操作步骤和注意事项。

唯有代码让我痴狂 1369

洛谷 P5076 普通二叉树(STL容器:multiset)

您需要写一种数据结构,来维护一些数(都是绝对值 109以内的数)的集合,最开始时集合是空的。其中需要提供以下操作,操作次数 𝑞 不超过 104:保证执行 1,3,4 操作时,集合中有至少一个元素。第一行是一个整数 𝑞,表示操作次数。接下来 𝑞 行,每行两个整数 𝑜𝑝,𝑥,分别表示操作序号以及操作的参数 𝑥。输出有若干行。对于操作 1,2,3,4,输出一个整数,表示该操作的结果。这道题好像是一道平衡二叉树,我不会,但是STL中有个容器比较适合这道题multiset 模拟即可: 加油

AuRoRamth的博客 715

AI驱动全栈开发实战:基于Spec与Codex的规格驱动开发指南

1. 先搞清楚“AI重构前端全栈”到底在解决什么实际问题 最近很多人在聊“AI重构前端全栈”,听起来像是又一个营销概念。但如果你真的拆开看,它核心解决的是一个非常具体且痛苦的问题: 一个开发者,如何从零开始,系统性地、不跑偏地完成一个完整项目,并且保证代码质量和架构一致性。 传统开发流程里,产品经理出PRD,前后端开会对齐,前端画页面,后端写接口,测试再介入。这个过程沟通成本高,文档容易过时,新人上手慢。而“AI重构”的思路,是试图用一套 规范化的指令(Spec) 来驱动AI(比如Codex这类模型)生成代

weixin_30596023的博客 460

P5076 【深基16.例7】普通二叉树(简化版)

题目描述 您需要写一种数据结构,来维护一些数( 都是10^9109以内的数字)的集合,最开始时集合是空的。其中需要提供以下操作,操作次数qq不超过10^4104: 查询xx数的排名(排名定义为比当前数小的数的个数+1+1。若有多个相同的数,应输出最小的排名)。 查询排名为xx的数。 求xx的前驱(前驱定义为小于xx,且最大的数)。若未找到则输出-2147483647−2147483647。 求xx的后继(后继定义为大于xx,且最小的数)。若未找到则输出21474...

weixin_53745698的博客 315

彻底解决tplink路由器无法访问部分https网站

彻底解决tplink无法访问部分https网站

renkai721的专栏 8764

代谢组数据分析(五):代谢组的功能富集分析

本文介绍了代谢组数据分析中的功能分析,包括代谢物富集分析、GSEA和ssGSEA方法。文章详细阐述了分析原理、应用背景、数据准备、统计方法以及结果解释,强调了在代谢通路和代谢物ID对应关系建立、差异代谢物筛选、富集程度计算等方面的关键步骤。通过这些方法,可以揭示差异代谢物在生物过程中的作用,为疾病研究和药物开发提供依据。

专注生信领域 5981

洛谷P3369 【模板】普通平衡树(STL做法:vector&multiset)

problem solution1 - AC vector可以AC。lower_bound找第一个大于等于x的,upper_bound找第一个大于x的。 #include<bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); int T; cin>>T; vector<int>a; while(T--){ int

小哈里的博客 1077

数据科学技术与应用【中国大学MOOC】:数据可视化_第五次作业_答案

数据科学技术与应用 数据可视化 第五次作业 答案 题目来源:中国大学MOOC-东华大学-宋晖等-数据科学技术与应用 1 ( 30分 ) 2012—2017年我国人均可支配收入为[1.47, 1.62, 1.78, 1.94, 2.38, 2.60](单位:万元)。按照要求绘制以下图形。 1)模仿例4-1和例4-3,绘制人均可支配收入折线图。用小矩形标记数据点,黑色虚线,用注解标注最高点,图标题为“Income chart”,设置坐标轴标题,最后将图形保存为JPG文件。 2)模仿例4-2,使用多个子图分别绘制

Herbert胡不归 6140

洛谷P3313 [SDOI2014] 旅行【关于deepseek一遍A紫题这件事】

以后可以适当跟着AI学习分析思路,培养思维链。“用AI悠着点,容易把人用的懒得动脑” ——某帅气竞赛教练。

MorningLa的博客 975

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

洛谷 P3313 [SDOI2014]旅行 题解

10^5个线段树动态开点+树链剖分

CofDoria的博客 388

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

洛谷 P3313 [SDOI2014]旅行

P3313 [SDOI2014]旅行 题目描述 S国有N个城市,编号从1到N。城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市。每个城市信仰不同的宗教,如飞天面条神教、隐形独角兽教、绝地教都是常见的信仰。 为了方便,我们用不同的正整数代表各种宗教, S国的居民常常旅行。旅行时他们总会走最短路,并且为了避免麻烦,只在信仰和他们相同的...

HJ921004的博客 180

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

洛谷P3313 [SDOI2014] 旅行【关于deepseek一遍A紫题这件事】【动态开点线段树模板】题解

想做个紫题玩玩,动态开点线段树不会,遂调戏AI。对于每个结点,维护以下信息。于是采用动态开点线段树。

MorningLa的博客 257

洛谷 P3313 旅行 (树链刨分)

题目链接 题意,给你一棵树,树上每个节点代表一座城市,有两个信息分别为c和w,一个人从某点出发到达另一个点,只会在与他c值相同的地方住宿。有四种操作,分别是,更改某做城市的c,更改w,输出两座城市之间的住宿城市的和,输出两座城市之间的住宿城市的最大w。 思路:这题没什么难度,只要想清楚根据什么建树就好了。因为他只会在与他c值相同的地方住宿,那么,我们的线段树肯定要根据c值建的,由于c的取值范...

我是蒋卫升呀~ 246

洛谷 P3313 [SDOI2014]旅行 树链剖分

题目描述 S国有N个城市,编号从1到N。城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市。每个城市信仰不同的宗教,如飞天面条神教、隐形独角兽教、绝地教都是常见的信仰。 为了方便,我们用不同的正整数代表各种宗教, S国的居民常常旅行。旅行时他们总会走最短路,并且为了避免麻烦,只在信仰和他们相同的城市留宿。当然旅程的终点也是信仰与他相同的城市。S国政府为每个城市标定了不同的旅行...

liangzihao1的博客 224

树剖入门题 洛谷P3313 [SDOI2014]旅行

题目描述 S国有N个城市,编号从1到N。城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市。每个城市信仰不同的宗教,如飞天面条神教、隐形独角兽教、绝地教都是常见的信仰。 为了方便,我们用不同的正整数代表各种宗教, S国的居民常常旅行。旅行时他们总会走最短路,并且为了避免麻烦,只在信仰和他们相同的城市留宿。当然旅程的终点也是信仰与他相同的城市。S国政府为每个城市标定了不同的旅行评级,旅行者们常会记下途中(包括起点和终点)留宿过的城市的评级总和或最大值。 在S国的历史上常会发生以下几种事件:

Emma_goddess的博客 364

洛谷P3313 [SDOI2014]旅行(树链+边权转点权)

洛谷P3313 [SDOI2014]旅行(树链+边权转点权) #include <bits/stdc++.h> using namespace std; #define lson rt<<1,l,mid #define rson rt<<1|1,mid+1,r typedef long long ll; const int INF=0x3f3f3f3f; const int maxn=2e5+100; int n,m,k,tot,a[maxn],siz[maxn],fa[

weixin_45722843的博客 181

洛谷P3313 [SDOI2014]旅行

题目描述 S国有N个城市,编号从1到N。城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市。每个城市信仰不同的宗教,如飞天面条神教、隐形独角兽教、绝地教都是常见的信仰。 为了方便,我们用不同的正整数代表各种宗教, S国的居民常常旅行。旅行时他们总会走最短路,并且为了避免麻烦,只在信仰和他们相同的城市留宿。当然旅程的终点也是信仰与他相同的城市。S国政府为每个城市标定了不

蒟蒻的博客 299

洛谷 P3313 [SDOI2014]旅行 解题报告

P3313 [SDOI2014]旅行 题目描述 S国有N个城市,编号从1到N。城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市。每个城市信仰不同的宗教,如飞天面条神教、隐形独角兽教、绝地教都是常见的信仰。 为了方便,我们用不同的正整数代表各种宗教, S国的居民常常旅行。旅行时他们总会走最短路,并且为了避免麻烦,只在信仰和他们相同的城市留宿。当然旅程的终点也是信仰与他相同的城市。...

weixin_30832143的博客 262

BZOJ3531 [Sdoi2014]旅行(洛谷P3313)

树链剖分 (线段树动态开点) BZOJ题目传送门 洛谷题目传送门 学了发线段树动态开点。 其实动态开点就是先不建树,每次修改的时候再往下建。这时左右儿子是编号的而不是原来的∗2∗2*2和∗2+1∗2+1*2+1。可以发现每次新建的节点数为lognlog⁡n\log n,那么总空间复杂度就是nlognnlog⁡nn\log n的。 这道题的话对每种颜色都开一个线段树。然后树剖上去+动态开点...

forezxl的博客 286

洛谷 P3313 [SDOI2014]旅行(树链剖分+线段树)

传送门 这题是求固定路径上某固定宗教的评级最大值或和,由于我们知道树上路径是顺着链走的,我们可以用树链剖分使一条链上的编号连续,方便查询。 每个宗教建一棵线段树,动态开点,编号按树链剖分后的新编号,维护的是城市评价。 那么改变评级就相当于改变某线段树内的值,改变宗教就相当于换根(移到另一棵线段树内)。 求值时按链往上跳,统计答案。 Code: #include&lt;cst...

Dawn_LLLLLLL 346

[SDOI2014]旅行

洛谷 P3313 [SDOI2014]旅行 https://www.luogu.org/problem/show?pid=3313 题目描述 S国有N个城市,编号从1到N。城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市。每个城市信仰不同的宗教,如飞天面条神教、隐形独角兽教、绝地教都是常见的信仰。 为了方便,我们用不同的正整数代表各种宗教, S国的居民常常旅行。旅行时他...

weixin_30517001的博客 92
上一篇: 主席树
下一篇: 替罪羊树学习笔记
Slr2002
博客等级 码龄9年 3粉丝 31原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值