【动态规划 树】JZOJ_3738 理想城市

ThingsKit物联网平台产品管理之物模型 物模型是ThingsKit物联网平台为产品定义的数据模型,用于描述产品的功能。本文介绍物模型相关概念和使用限制。 阅读详情

题意

在一个方格图上有若干个小格,其中满足小格互相连通,且不是空格也互相连通。

求小格两两之间的最短路的总和。

思路

暴力303030分很好打,但是后面枚举小格一定是O(n2)O(n^2)O(n2)的,所以我们考虑别的做法。

根据图的性质,我们可以把横着连通小格缩成一个点,将相邻的小格的点连边。可以发现,一条连接(u,v)(u,v)(u,v)的边对答案的贡献为size[v]∗(n−size[v])size[v]*(n-size[v])size[v]∗(n−size[v]),其中size[v]size[v]size[v]为以vvv为根的所有点中小格数量的总和。

对于点中的小格的距离,只用再把竖着的小格缩点做一遍就可以了。

代码

#include<map>
#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define file(x) freopen(#x".in", "r", stdin), freopen(#x".out", "w", stdout)

const int p = 1000000000;

struct node {
	int x, y;
}a[100001];
std::map<int, int> h;
int n, sx, sy, tot, ans;
int head[100001], next[200001], ver[200001], be[100001], size[100001];

bool operator <(const node &a, const node &b) {
	return a.x < b.x || a.x == b.x && a.y < b.y;
}

int id(int x, int y) {
	return x * n + y;
}

void add(int u, int v) {
	if (ver[head[u]] == v) return;
	ver[++tot] = v;
	next[tot] = head[u];
	head[u] = tot;
}

void init() {
	std::sort(a + 1, a + n + 1);
	for (int i = 1; i <= n; i++) 
		h[id(a[i].x, a[i].y)] = i;
	for (int i = n; i >= 1; i--) {
		int x = a[i].x, y = a[i].y;
		if (!be[i]) {
			be[i] = i;
			size[i] = 1;
			for (int j = i - 1; j >= 1; j--)
				if (a[j].y == a[j + 1].y - 1) be[j] = i, size[i]++;
				else break;
		}
		int k = h[id(x + 1, y)];
		if (k) add(be[i], be[k]), add(be[k], be[i]);
	}
}

void dp(int u, int fa) {
	for (int i = head[u]; i; i = next[i]) {
		if (ver[i] == fa) continue;
		dp(ver[i], u);
		size[u] += size[ver[i]];
	}
	for (int i = head[u]; i; i = next[i])
		if (ver[i] != fa) ans = (ans + (long long)(n - size[ver[i]]) * size[ver[i]]) % p;
}

int main() {
	//file(city);
	scanf("%d", &n);
	sx = sy = 2147483646;
	for (int i = 1; i <= n; i++)
		scanf("%d %d", &a[i].x, &a[i].y), sx = std::min(sx, a[i].x), sy = std::min(sy, a[i].y);
	for (int i = 1; i <= n; i++)
		a[i].x -= sx - 1, a[i].y -= sy - 1;
	init();
	dp(be[1], 0);
	tot = 0;
	memset(head, 0, sizeof(head));
	memset(be, 0, sizeof(be));
	memset(size, 0, sizeof(size));
	for (int i = 1; i <= n; i++)
		std::swap(a[i].x, a[i].y);
	h.clear();
	init();
	dp(be[1], 0);
	printf("%d", ans);
}
LeRobot 入门教程(十一)π0(Pi0)π0.5(Pi0.5)训练、推理、部署 本文介绍了Physical Intelligence公司开发的π₀和π₀.₅系列通用机器人控制视觉-语言-动作模型。π₀作为首款基础模型,融合流匹配、跨实体训练等技术,支持50Hz高频控制。π₀.₅是其升级版,通过异构数据协同训练解决开放世界泛化问题,在Libero基准测试中表现优异。文章详细说明了两个模型的安装要求、使用方法、训练策略及关键参数配置,包括混合精度训练、梯度检查点等优化技术,为机器人在多样化场景中的语义理解和动作控制提供了完整解决方案。 阅读详情

相关推荐

IBTrACS v04r01 数据提取实战:Pandas 筛选 JTWC/CMA/JMA 3机构最佳路径数据

本文详细介绍了如何使用 Pandas 高效提取和处理 IBTrACS v04r01 数据集中的最佳路径数据,特别针对 JTWC、CMA 和 JMA 三家权威机构的数据进行对比分析。通过构建可复用的数据提取函数,解决多机构数据质量差异问题,并提供高级分析与可视化应用示例,助力热带气旋研究。

clijovtbq401783153的博客 517

【动态规划】JZOJ_4245 er

题意 有nnn个东西(n&amp;lt;=2)(n&amp;lt;=2)(n&lt;=2),我们有kkk种符文可以改变某个东西的价值。 有三种符文形式如下: 1、赋值强化符文,直接把一个东西赋值为一个常数。 2、加法强化符文,把一个东西加上一个常数。 3、乘法强化符文,把一个东西乘上一个常数。 最多能用kkk个符文,求出按某种顺序用某些符文后这nnn个东西的乘积的自然对数最大。 思路 首先有log...

GOODPLACE 297

大数据之父_BIM先驱Charles (Chuck) M. Eastman逝世——致敬“BIM之父”

原标题:BIM先驱Charles (Chuck) M. Eastman逝世——致敬“BIM之父”BIM研究的先驱、佐治亚理工教授Charles (Chuck) M. Eastman于本周一(11月9日)在其Atlanta家中逝世。特转韩国Yonsei大学Ghang Lee教授的讣文以作纪念。过世原因未说明。BIM的出现是与当今时代科技的发展分不开的。在信息时代建筑发展面临的挑战巨大:建筑物越建越高...

weixin_39941262的博客 3302

Jzoj 动态规划算法部分题目(共16题)

Jzoj 动态规划算法部分题目(共16题)

ypeijasd的专栏 539

中文实体关系抽取数据集大盘点:从百度Duie2.0到医疗CBLUE,哪个更适合你的NLP项目?

本文全面分析了中文实体关系抽取领域的主流数据集,包括百度DuIE 2.0、医疗CBLUE等,帮助开发者根据项目需求选择最适合的数据集。文章详细对比了各数据集的特点、适用场景及优化策略,为自然语言处理项目提供实用指南。

weixin_29284657的博客 121

保姆级教程:手把手配置MAX9295/9296 GMSL2-CSI2链路,搞定4LAN/1LAN模式与常见调试

本文提供MAX9295/9296 GMSL2-CSI2链路的详细配置教程,涵盖4LAN和1LAN模式的硬件连接、寄存器配置及调试技巧。通过实战案例和代码示例,帮助开发者快速实现高带宽视频传输,解决常见问题如信号同步和功耗优化,适用于车载摄像头和机器人视觉系统开发。

weixin_42561143的博客 434

#单调队列,动态规划#洛谷 2627 jzoj 2202 2321(高中)codevs 4654 修剪草坪

题目 在n头奶牛里选择若干头,使连续的奶牛不超过k头并让总价值最大。 分析 这道题正向选择比较难选,所以就想到了n头奶牛都选并去掉奶牛后使总价值最大。 用单调队列维护,时间复杂度O(n) 代码 #include &amp;amp;amp;amp;amp;lt;cstdio&amp;amp;amp;amp;amp;gt; #include &amp;amp;amp;amp;amp;lt;cctype&amp;amp;a

lemondinosaur的博客 277

【用unity实现100个游戏之18】从零开始制作一个类CSGO/CS2、CF第一人称FPS射击游戏——基础篇1(附项目源码)

生存和射击游戏一直是我的最爱,说起3D最普遍的应该就是射击系统了,你可以在任何情况下加入射击功能,所以我写下了这篇FPS开发记录。希望对你有帮助。在这个项目中,你将学习如何设计和实现射击系统、武器系统、玩家控制、场景设计等方面的内容。通过这个项目,你将深入了解游戏开发中的许多核心概念和技术,并且在实践中不断提升自己。本项目将带你从零开始逐步实现一个完整的第一人称射击游戏,并且会逐步引入一些高级功能,如特效、声音等。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 5500

【jzoj3773】【NOI2015模拟8.15】【小 P 的烦恼】【动态规划】

题目大意小 P 最近遇上了大麻烦,他的高等代数挂科了。于是他只好找高代老师求情。善良的高代老师答应不挂他,但是要求小 P 帮助他一起解决一个难题。问题是这样的,高代老师近期要组织班上同学一起去漂流,漂流可以看做是在一张 n 个点 m 条边的有向无环图上进行的,点编号从 0 到 n-1 ,表示景点; 边是连接各景点的一定长度的河道。同时,定义编号为 s 是起点而 t 是终点。我们不妨把从 s 点到 t

inklutcuah’s blog 597

Allegro如何进行四层板板层设计

板层的设计

weixin_42499230的博客 3193

FPGA实现AXI-Stream通信

本文介绍了在FPGA中实现AXI-Stream接口的工业级方案,重点解析了核心协议信号(TVALID/TREADY/TDATA/TLAST)与可选扩展信号,并提供了Verilog最小化实现示例。文章详细阐述了握手协议规则、时序约束方法,以及吞吐量优化技巧(如寄存器切片和双缓冲策略),同时给出了跨时钟域处理的异步FIFO解决方案。此外,还包含验证调试方法(Testbench结构和ILA触发设置)和典型应用场景(视频处理/网络传输),最后提供了资源消耗参考数据。该实现方案严格遵循Xilinx/Intel官方规范

whm128的博客 1464

BZOJ3398 牡牛和牝牛 - 动态规划

传送门 题解:沙茶题。前缀和维护一下。 这题显然可以再O(k+lgn)的时间内出解。 代码: #include #include #include #define mod 5000011 #define N 100010 using namespace std; int dp[N],s[N]; int main() { int n,k;scanf("%d%d",&n,&k);

Mys_C_K的博客 823

在Simulink中实现基于深度强化学习的控制算法仿真建模

通过上述步骤,你可以在Simulink中实现基于深度强化学习的控制算法仿真建模。这种方法适用于许多复杂的控制问题,尤其是当传统控制方法难以找到有效解决方案时。随着经验的积累,你可以进一步探索不同的深度强化学习算法及其变种,以适应更广泛的应用场景。此外,还可以结合其他先进技术(如迁移学习、多智能体协作等),提升模型的表现能力。

amy_mhd的博客 415

JZOJ 3738.理想城市【思维】

为什么A组的题都这么难

qq_35786326的博客 278

精雕软件(JDpaint) 5.5 绿色版

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

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

[树形dp] Jzoj P3738 理想城市

Description 题解 我们将横纵的贡献分开来考虑,想办法让图变成一棵树,这样就会好做很多 先考虑横向的贡献,那么我们可以把纵向一段连续的区块给缩成一个点 向左右相邻的连一条边权为1的树边,然后构出一棵树后 考虑如果求出每一条边的贡献,显然一条边的贡献就是将这棵树分成两棵树,两棵树上两两点对应 所以贡献就是size[x]*(n-size[x...

weixin_30314631的博客 148

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【JZOJ 3738】理想城市

Description Solution看到是网格上求距离,考虑一下把横竖分开来求, 注意:题目保证两两点的最短路都是唯一的。先统计竖着总共走了多少步,把每一段连续的横着划分,使得图由很多个宽度为1的矩形组成, 把两两相连的矩形连边,发现是一棵树,树上的每个点中都包含了原图中的一些点, 那么,原图中点x,yx,y竖着走的距离就是划分后x,yx,y所在的矩形x′,y′x',y'这两个点在树上的

479

计算机控制技术及应用

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

2019.08.10【NOIP提高组】模拟 A 组

解题报告JZOJ 3736 数学题题目分析代码JZOJ 3737 挖宝藏题目分析代码JZOJ 3738 理想城市 IOI 2012 Ideal City题目分析代码 JZOJ 3736 数学题 题目 分析 代码 #include <cstdio> #include <cctype> #define rr register #define swap(a,b) (a^...

lemondinosaur的博客 417

2019.08.10【NOIP提高组】模拟 A 组 总结

题目

Nowed 205

【jzoj3850】【Fibonacci进制】【动态规划】

题目大意解题思路统计三个值,f表示斐波纳契数列,g表示最高位小于等于i的长度和,s表示最高位小于等于i的串共有多少个1。首先求出最后一个完整的数是什么,剩余的特殊处理一下。我们考虑把最高位小于当前最高位i的一的个数s[i-1],再加上剩余数在当前最高位的贡献,即数的个数。那么我们就可以把当前最高位的影响消除,递归处理剩下的数即可。code#include<cmath> #include<cstdio

inklutcuah’s blog 653

Jzoj P3895 数字对___动态规划

题目大意: 有一个长度为nnn的序列aaa。 要求找出一段区间[L,R][L,R][L,R]满足存在一个k∈[L,R]k∈[L,R]k∈[L,R]对于任意的i∈[L,R]i∈[L,R]i∈[L,R],都有aka_kak​ 整除aia_iai​,这样一个区间的价值为R−LR - LR−L。 问序列中所有特殊区间的最大价值是多少,而有多少个这样的区间呢?又分别是哪些呢? 1&amp;lt;=L&amp...

生如夏花之绚烂 337

Jzoj2183 树

 图论中的树为一个无环的无向图。给定一棵树,每个节点有一盏指示灯和一个按钮。如果节点的按扭被按了,那么该节点的灯会从熄灭变为点亮(当按之前是熄灭的),或者从点亮到熄灭(当按之前是点亮的)。并且该节点的直接邻居也发生同样的变化。  开始的时候,所有的指示灯都是熄灭的。请编程计算最少要按多少次按钮,才能让所有节点的指示灯变为点亮状态。 高斯消元裸题 好吧如果出到100W就不能这么做了(虽...

dianning8393的博客 287

JZOJ1322. 硬币游戏

Description  FJ的奶牛喜欢玩硬币游戏,所以FJ发明了一个新的硬币游戏。一开始有N(5<=N<=2,000)个硬币堆成一叠,从上往下数第i个硬币有一个整数值C_i(1<=C_i<=100,000)。   两个玩家轮流从上倒下取硬币,玩家1先取,可以从上面取1个或2个硬币,下一轮的玩家可以取的硬币数量最少为1个,最多为上一个玩家取的数量的2倍,硬币全部取完比赛结束。   已知玩家2绝顶

lijf2001的博客 512

JZOJ3418. 【NOIP动态规划专题】选课(2017.8DP&贪心专题)

Description大学里实行学分。每门课程都有一定的学分,学生只要选修了这门课,并通过考核就能获得相应的学分。学生最后的学分是他各门课学分的总和。每个学生都要选择规定数量的课程。其中有些课程可以直接选修,有些课程需要一定的基础知识,必须在选了其他的一些课程的基础上才能选修。例如,《剥皮术》就必须在选修了《屠龙术》后才能选修。我们称《屠龙术》是《剥皮术》的先修课。每门课的直接先修课最多之有一门。两

puppywolf的博客 1172

JZOJ 4762 千帆渡(动态规划)

题目大意给出长度各为n和m的序列a和b,求它们的最长公共上升子序列并输出任一方案。n,m<=5000 时间限制 1s 空间限制 256M解题思路f[i][j]表示a中1~i中的某一位和b中第j位结尾得出的序列长度。 1、a[i]==b[j]:f[i][j]=max(f[i-1][k]),k#include<cstdio> #include<cstring> #include<algorithm

baidu_34015648的博客 568

【jzoj3630】【汕头市选2014】【分叉】【树形动态规划】

题目大意给出一棵N 个点的树,点的编号是1, 2,。。。,N。对于3 个点{a,b,c},如果不存在一条简单路径同时经过a,b,c,那么{a,b,c}是一个分叉。统计不同分叉的数量。树 无环,连通的无向图简单路径 不重复经过同一个点的路径解题思路考虑正难则反,求出所有匹配情况减去三点共链的情况。当前做到x,如果点集包含x,另外两个点可以在不同的两棵子树,记录(sum size)^2,和sum(siz

inklutcuah’s blog 456

dp练习题6 股票买卖

题目: 最近越来越多的人都投身股市,阿福也有点心动了。谨记着“股市有风险,入市需谨慎”,阿福决定先来研究一下简化版的股票买卖问题。 假设阿福已经准确预测出了某只股票在未来N天的价格,他希望买卖两次,使得获得的利润最高。为了计算简单起见,利润的计算方式为卖出的价格减去买入的价格。 同一天可以进行多次买卖。但是在第一次买入之后,必须要先卖出,然后才可以第二次买入。 现在,阿福想知道他最多可

GOODPLACE 1692
上一篇: 【数学 lucas定理】luogu_3807 卢卡斯定理
下一篇: 【数学 组合计数】BZOJ_4403 序列统计
nymph181
博客等级 码龄9年 40粉丝 458原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值