
NOIP提高组
zsyzClb
这个作者很懒,什么都没留下…
展开
-
[NOIP2015]运输计划
让我来提供一个与众不同的贪心做法,不需要任何数据结构,O(nlogn) 删掉一条边的贡献就是max(不包含这条边的路径的最大值,包含这条边的路径的最大值-这条边的长度) 所以我们只需要先将路径长度从大到小排一次序,然后找到前i个路径的交际中的最大边,统计一下即可 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <cmath>原创 2020-11-28 07:36:09 · 173 阅读 · 0 评论 -
[NOIP2015]斗地主
(我成功过了洛谷的加强版) 这道题肯定是不能直接贪心的,感觉状压也不是很好,最好的还是搜索。 (NOIP居然考了搜索。。。) 这道题的搜索只需要调整一下顺序即可。 我打了6层搜索,从上往下依次是四带二,三顺子,二顺子,顺子,三带二或者三带一,大王和小王,剩下的牌。 其中四带二,三带二和三带一不在搜索的时候处理带了那一张牌,放在最后贪心处理即可。 因为大王小王不能放在一对,所以要多打一重搜索判断一下。 #include <cstdio> #include <cstring> #incl原创 2020-11-27 19:11:58 · 194 阅读 · 0 评论 -
[NOIP2017]队列
这题很简单,只是码量大。 用平衡树维护每一行的前m-1列,用树状数组维护第m列就行了。 用上树状数组的一个优美性质就能优化到nlogn #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <cmath> #define ls tr[x].son[0] #define rs tr[x].son[1] #define LL long原创 2020-11-26 19:06:10 · 191 阅读 · 0 评论 -
「NOIP2018」旅行
朴素的做法就是删掉环上的一条边然后跑一次。 如果想在优化这个代码,就要尝试找到这条删去的边,把每一个点的儿子节点的编号排一个序。 对于环上的一个点,如果它想回溯,就必须要把儿子走完(当然不算下一个环上的点),所以如果下一个换上的点是儿子中最劣的,并且回溯比往下走更优,就可以确定删这条边了。 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include原创 2020-11-23 15:03:05 · 333 阅读 · 1 评论 -
P2827 蚯蚓
看完题目以后,我马上想到了用优先队列,但是这里面m<=7*10^6,用优先队列会超时。 所以开始挖掘题目的隐藏条件。 经过观察发现,切蚯蚓都是在同一个地方切,切完以后分为了比例相同的两个小段。因为题目说每次切断最长的蚯蚓,那么我们就可以猜想先切掉的蚯蚓分成的两个小段分别比后切的蚯蚓分成的两个小段更长(当然也有可能一样长)。 证明: 设先切掉的蚯蚓分成了l1,r1,后切掉的分成了l2,r2 1.如果蚯蚓不会变长(也就是一起变长),那么证明肯定成立。(l1 >= l2,r1 >= r2) 2.原创 2020-07-28 14:45:41 · 178 阅读 · 0 评论 -
[NOIP提高组2016]天天爱跑步
这一道题是一道典型的由部分分推正解的题。 对于子链,所有si=1,所有ti=1的情况,经过思考,会发现正解只需要将所有的路径拆成两条链,两种情况分别跑一次,把结果加起来即可。 #include<cstdio> #include<cstring> #include<iostream> #include<vector> #define il i...原创 2019-12-25 13:15:05 · 283 阅读 · 1 评论 -
NOIP2013货车运输
题目描述 【题意】 有n个点,编号从 1 到 n,有 m 条双向边。每一条边都有权值。现在有 q 个询问, 在x到y的所有路径中,选出一条路径,使得这条路径上面边权的最小值尽量大。 【输入描述】 第一行有两个整数 n,m。 接下来 m 行每行 3 个整数 x、y、z,表示一条权值为z的无向边。 接下来一行有一个整数 q。 接下来 q 行,每行两个整数 x、y(x 不等于 y)。 【输出描述】 输...原创 2019-01-25 12:47:34 · 455 阅读 · 0 评论