12 2019 档案
摘要:就是i到j的最短路,配上刚加入图的边,i到k,k到j,来构成一个没有重复边的环。 i到j是最短路,不会重复一条边两次,i到k,k到j刚加入图,显然也不会出现在最短路里。 要注意的是,求环的时候要保持i,j,k不相等。dis数组和初始的mp数组要区分开。 1 #include <cstdio> 2 #
阅读全文
摘要:有m座城市,n张车票,p条路。然后每张车票有一个速度值。我们每次通过一条路都需要一张车票,花费时间为路径长度比上所选车票的速度值。问从起点a到终点b的最短时间花费。M不超过30,n不超过10。 我们显然不能求一条最短路,再依次对最短路上的每条边用最合适的车票。考虑一种情况,第一条边很长,其他边很短。
阅读全文
摘要:有N头牛在一个数轴上,每头牛有一个听力值,两头牛交谈时花费为,距离差值与较大的听力值值和。问所有牛两两交谈所需要的花费之和。 我们先考虑将距离差值与听力值两个变量固定一个。我们将所有牛按照听力值从小到大排序。这样子一头牛与其左侧的牛交谈时,在听力值上花费就是其本身的听力值。我们再考虑如何高效地求出这
阅读全文
摘要:dp[x][y]表示[x,y]里的最大匹配,如果s[x]和s[y]匹配,那么dp[x][y] = dp[x + 1][y - 1] + 2。然后对于每个区间都试图将其拆成两半。 1 #include <cstdio> 2 #include <cstring> 3 #include <algorith
阅读全文
摘要:的确挺神奇的一道题,跟lyc讨论了一会才想清楚正确性。 用dp[x][y]表示完成[x,y]这些舞会至少需要多少衣服。注意这里dp的定义很明确,就是只完成[x,y],之前不需要穿衣服,之后也不需要穿衣服。 那么对应的,答案应该就是dp[1][n]。 我们考虑转移,这道题中,唯一能优化的地方,无非就是
阅读全文

浙公网安备 33010602011771号