题目名称 1754. [HNOI 2010]城市建设
输入输出 hnoi2010_city.in/out
难度等级 ★★★☆
时间限制 5000 ms (5 s)
内存限制 162 MiB
测试数据 20
题目来源 Gravatarcstdio 于2014-10-20加入
开放分组 全部用户
提交状态
分类标签
CDQ分治
分享题解
通过:38, 提交:112, 通过率:33.93%
GravatarLadyLex 100 2.419 s 3.16 MiB C++
GravatarLethur 100 2.478 s 16.21 MiB C++
GravatarFoolMike 100 2.524 s 8.51 MiB C++
GravatarAntiLeaf 100 2.818 s 39.49 MiB C++
GravatarGintoki 100 3.128 s 18.22 MiB C++
GravatarSliverN 100 3.252 s 22.25 MiB C++
Gravatar真呆菌 100 3.314 s 17.72 MiB C++
Gravatarnew ioer 100 3.402 s 18.60 MiB C++
GravatarAntiLeaf 100 3.448 s 25.28 MiB C++
Gravatar真呆菌 100 3.463 s 17.76 MiB C++
本题关联比赛
COGS快乐周赛
关于 城市建设 的近10条评论(全部评论)
其实这做法加上归并排序就是一个log了
GravatarFoolMike
2024-06-19 00:43 9楼
回复 @Chenyao2333 :
我似乎作死写了一发LCT+线段树分治
无奈的卡常过程(卡常技巧不行……逃)
氧气下……本机2.5s
要是能给3s的实现也能有一个心理安慰哈……
Gravatarliaoy
2017-03-23 22:24 8楼
这个题真是神题,时间复杂度是O(nlog^2n)的。时间复杂度的分析着实费心!
GravatarFoolMike
2017-03-09 12:57 7楼
回复 @CreationAugust :
COGS评测机跑的比谁都快(至少比SPOJ快对吧)……
Gravatarcstdio
2015-04-02 10:06 6楼
好难过……
Gravatar真呆菌
2015-03-30 08:26 5楼
回复 @Asm.Def :
这货似乎没法用lct做?我是良心题解
GravatarChenyao2333
2014-10-21 07:15 4楼
回复 @cstdio :
给代码风格跪了....我就不说我那傻逼的的代码风格了
GravatarChenyao2333
2014-10-21 07:11 3楼
仿制万古犇@Chenyao 代码成功
非常神的算法……用CDQ分治去不断地为一段区间计算“必须选的边”和“必不选的边”,从而有效缩减可能的答案范围
无脑跪chenyao神犇Orzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Gravatarcstdio
2014-10-20 22:26 2楼
给动态mst跪烂QAQ……@Chenyao 求chenyao带我学lct>_<
GravatarAsm.Def
2014-10-20 20:21 1楼

1754. [HNOI 2010]城市建设

★★★☆   输入文件:hnoi2010_city.in   输出文件:hnoi2010_city.out   简单对比
时间限制:5 s   内存限制:162 MiB

【题目描述】

$ PS $国是一个拥有诸多城市的大国,国王 Louis 为城市的交通建设可谓绞尽脑汁。 Louis 可以在某些城市之间修建道路,在不同的城市之间修建道路需要不同的花费。 Louis 希望建造最少的道路使得国内所有的城市连通。但是由于某些因素,城市之间修建道路需要的花费会随着时间而改变, Louis 会不断得到某道路的修建代价改变的消息,他希望每得到一条消息后能立即知道使城市连通的最小花费总和, Louis 决定求助于你来完成这个任务。

【输入格式】

文件第一行包含三个整数$ N , M , Q $,分别表示城市的数目,可以修建的道路个数,及收到的消息个数。 接下来$ M $行,第$ i + 1 $行有三个用空格隔开的整数$ X_i , Y_i   , Z_i ( 1 ≤ X_i , Y_i ≤ n , 0 ≤ Z_i ≤ 5×10^7) $,表示在城市Xi与城市Yi之间修建道路的代价为$ Z_i $。接下来$ Q $行,每行包含两个数$ k , d $,表示输入的第$ k $个道路的修建代价修改为$ d $(即将$ Z_k $修改为$ d $)。

【输出格式】

输出包含$ Q $行,第$ i $行输出得知前$ i $条消息后使城市连通的最小花费总和。

【样例输入】

5 5 3
1 2 1
2 3 2
3 4 3
4 5 4
5 1 5
1 6
1 1
5 3

【样例输出】

14
10
9

【提示】

对于$ 20\% $的数据, $ n ≤ 1000, m ≤ 6000 , Q ≤ 6000 $。
有$ 20\% $的数据,$ n ≤ 1000 , m ≤ 50000 , Q ≤ 8000 $,修改后的代价不会比之前的代价低。
对于$ 100\% $的数据, $ n ≤ 20000 , m ≤ 50000 , Q≤50000 $。