T1.词编码(word)

    给出一些原长为n的01串经过变化后的串求原串。原串的特点是:各个1的位置号和%(n+1)==0

       变法(只取其一):

  1. 改一个0为1
  2. 删一个
  3. 加一个
  4. 不变。

其中2优先考虑位置靠左的,然后优先考虑0

分类讨论加模拟,但是需要优化。现求出sum[i]为i以后的1的个数,ans[i]为i以后的位置和,这样一个后缀和(姑且这么叫)的优化就可以过了。

T2.笨笨粉刷匠(draw)

    给出n块m个单位长的木板和t次粉刷,有0,1两种颜色。给出每个单位的正确颜色,且每个单位只能被刷一次。求最多刷对几块。

       明显的dp。考虑到每个单位只能刷一次,而且数据范围限制,不能考虑一般的区间dp。先对每块木板处理,f[i][j]表示前i个单位分为j块的最优解,best[i][j]表示i到j之间0的个数和1的个数的较大值。

       f[i][j]=max(f[i-1][j],f[k][j-1]+best[k+1][i])

然后就可以处理n块木板了。g[i][j]表示前i块木板刷j次的最大值。

       g[i][j]=max(g[i-1][k]+f[i][m][i-k])

输出g[n][t].

T3.笨笨的电话网络(phone)

    N个点,p条边,求最短路(而且代价为最大边的权值)(但是其中k条权值可视为0)。

       首先肯定有一个最短路模型,但是就最短路肯定处理不了。。。

       然后可以二分答案mid,把所有权值<=mid的边全都取来,然后spfa,然后做1到N的最短路(把已经选的边权值看做0,其他看做1),如果<=k表示可行。

       然后输出就好了。

posted on 2016-10-05 11:36  啊?  阅读(109)  评论(0编辑  收藏  举报