- 博客(5)
- 收藏
- 关注
原创 洛谷 P1081 开车旅行 双向链表+倍增
第一步预处理出来每个城市最近的城市和第二近的城市,这一步怎么做呢?先按高度排序O(nlogn)O(nlogn)O(nlogn),再以排序后的元素建一个双向链表。这样按照原来读入的顺序枚举每个元素,找枚举元素的左一位,左两位,右一位,右两位这四个元素,如果出现没有某个元素的情况特判一下即可。枚举完一个元素就删除一个元素,这样保证双向链表中的元素在读入顺序中都是在枚举的元素的右边(或者是它本身)。这样...
2020-01-09 22:07:45
146
原创 洛谷 P1484 种树 贪心+堆+双向链表
本题其实是在nnn个数中选出至多kkk个数,且两两不相邻,并使所选数的和最大。很容易想到动规思路:f[i][j]表示种到第i棵树且种了j棵的最大获利,则f[i][j]=max(f[i−1][j],f[i−2][j−1]+a[i])f[i][j]=max(f[i-1][j],f[i-2][j-1]+a[i])f[i][j]=max(f[i−1][j],f[i−2][j−1]+a[i]),注意边界、...
2019-12-20 19:23:51
133
原创 洛谷 P2149 [SDOI2009]Elaxia的路线
题意:一张无向图求出两个点对最短路上的最长链边权和。题解:四次dij,源点分别为s1,t1,s2,t2s_1,t_1,s_2,t_2s1,t1,s2,t2,然后可以用以下两个式子的逻辑与来判断eee这条边在不在两个点对的最短路同向的最长链。(u=e.from,v=e.to,w=e.dist)(u=e.from,v=e.to,w=e.dist)(u=e.from,v=e.to,w=e.di...
2019-12-18 10:18:31
128
转载 luogu P1415 拆分数列
第一步先求出最后的那个数最小为多少。(为了叙述方便,记T(i,j)表示从原数列下标i取到j的数字组成的数。)只需正向dp一次,dp1[i]表示前i个数字分成任意多个递增数且最后的数最小时,最后的数为T(dp1[i],i)。则dp1[i]=max(j),(T(dp1[j−1],j−1)<T(j,i))dp1[i]=max(j),(T(dp1[j-1],j-1)<T(j,i))dp1[i]...
2019-12-03 20:08:58
116
转载 luogu P2467 [SDOI2010]地精部落
题意,求波动数列首先我们必须要搞清楚3个性质First: 在一个波动数列中,若两个 i 与 i+1 不相邻,那么我们直接交换这两个数字就可以组成一个新的波动数列; 举个栗子: 5 2 3 1 44 2 3 1 5Second: 把波动数列中的每个数字Ai 变成 (N+1)-Ai 会得到另一个波动数列,且新数列的山峰与山谷情况相反;举个栗子: 1 4 2 5 3 (用 6 - 每个数) 1...
2019-12-03 20:06:06
101
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人