- 博客(4)
- 收藏
- 关注
原创 NOIP2009/道路游戏/洛谷P1070 题解
由于走一步时刻和位置都会增加1,机器人一段行程在时间-位置的二维坐标里是几条45度倾斜的\形斜线(因为有环),根据对角线,斜过来计算。于是我们考虑优化,要删掉枚举步数的那一维,但首先我们需要改变更新的方式,改为由前面推后面的模式。,可以把它丢到n个单调队列里,每条独立的对角线开一个,就可以通过了。时刻所获的最大金币数,不难想到,可以采用刷表法,尝试在每一个。都表示唯一的状态,调用时运用back就可以一步到位了。时买一个新的,枚举它的起始位置和步数来更新后面的。表示此时购买的机器人的终点,
2024-06-20 17:29:05
333
原创 IOI2005/Mountains/洛谷P5848 题解
我们可以用线段树做到这一点,每个节点储存 区间和 以及 区间最大前缀 两个值。维护它十分容易,因为区间最大前缀必定是左子区间的最大前缀或者左子区间的和和右子区间的最大前缀的和。查询时,我们从根节点往下走,如果当前数不小于左子区间的最大前缀,则说明答案在右子区间,反之在左子区间。进行离散化,然后再用一个数组储存原值,这样可以方便地在树上带入原值算。这里每个点减一的点也要离散化的原因是,在线段树维护序列的过程中,我们需要知道每一段值相同的点的两端才能准确地更新及计算。号点也要离散化,放到树里面去了。
2024-02-10 21:13:27
643
1
原创 Elaxia的路线/洛谷P2149 题解
我们发现,两个人都只会走最短路径,于是我们可以把参与点对最短路径的边标记出来(其他的边都没有影响)。这是因为,假设有两个分离的公共联通块,两条最短路径对它们的连接方式是一样的(两端相同,中间都走最短路),肯定可以走在一起,把两块连起来。我们挑出一对点重构后的图,在上面可以判断公共边,然后拓扑+dp就可以了。就是最后的结果了,但是要注意,两人相向而行的边也算公共边,这点不太好存,需要把另一张图方向反一反再来一遍。值 来确定此边是否可以在最短路径上,由于点数不多,可以使用两层邻接矩阵存两个点对重构的边。
2024-01-17 18:55:31
661
原创 Cows in a Skyscraper G/洛谷P3052 题解
面对这组数据,贪心会分成 2 3|4 4|5|6 ,答案却应是 2 6|3 5|4 4,因为贪心只能从前往后找,而dp中每一种状态时每一只新加入的牛都会来尝试更新它,从 {2,6} 开始的转移便为我们提供了正确的方向。两个数组,每个状态分别表示 到达该状态需要的最少组数 以及 该状态最优分组中和最小一组的和。我们据此放入新的牛,此时显然更易放入和最小的组,也更容易减少分组数量。注意到牛数小于18,我们用一个二进制串表示状态,一位为1表示这只牛选过了,0表示没选过。
2024-01-16 18:45:28
420
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人