题意:一个送外卖的人,要将外卖全部送去所有地点再回到店离,求最短路。(可以重复经过边)
思路:由于可重复走某些边,所以先求各个点的最短路,再TSP
dp[i][s] 表示目前在i点还需要遍历s集合后回到0点的最短路径
边界条件就是dp[i][0]=dis[i][0]
//196 KB 0 ms C++ 1190 B
#include
#include
#include
#include
...
分类:
其他好文 时间:
2015-03-29 22:17:56
阅读次数:
245
题意:一个n*m的矩阵,每个格子是0或者1,1表示土壤肥沃可以种植草地,0则不可以。在种草地的格子可以放牛,但边相邻的两个格子不允许同时放牛,问总共有多少种放牛的方法?(不放牛也算一种情况)
思路:就是POJ
1185 炮兵阵地 的弱化版,炮兵那题相当于间隔两行,这里是间隔一行,减少一维坐标就可
//192 KB 32 ms C++ 1221 B
#include
#incl...
分类:
其他好文 时间:
2015-03-29 22:13:03
阅读次数:
117
题意:有n个点,k种交通卡,m条路。 每条路有对应的交通卡,对应的交通卡可能有多张,拥有一张就可以通行。问从0到1,所需要的交通卡最少几张,并输出是哪几张。
做法:因为数据很小,所以可以枚举交通卡,复杂度是2^k=10^6。然后dfs,每个点只走一次,所以复杂度是n。所以总的复杂度是10^7。跑得有点久用了1.7s。...
分类:
其他好文 时间:
2015-03-29 12:15:05
阅读次数:
164
题意:
输入A矩阵,求出的B矩阵是否有0,有的话NO,没有YES。
做法:
矩阵快速幂,先算出 K等于n(n-1)次的A矩阵。复杂度 是 log(n^2)*(n^3)=10^4 ,然后k循环加到 n(n+1),每次把矩阵再乘个A,然后加到B里。复杂度是 n*n^3=10^6。所以妥妥的。因为只在乎有没有0,输入只有正数,矩阵里也只有乘法和加法。所以我把非零数改成了1,然后乘法用状压位运算优化到n^2。跑得稍微快点。...
分类:
其他好文 时间:
2015-03-28 10:10:13
阅读次数:
162
题意:给你一个图,包含空格 。 和墙* , 你现在要在空格处放置1x2的格子使得空白处全部填满,问你是否是 (有解或者多个解) 还是(只有一个解).解题思路:这个题图太大了,显然不能用DLX或者状压dp,应该怎么样能,我们知道 如果一个空白边上三面都是墙或者已经填被填上了,那这个空白只有一种填法,然...
分类:
其他好文 时间:
2015-03-27 21:53:48
阅读次数:
299
题目链接:点击打开链接
题意:
给定2*n长的数字。
把这个数字拆成2个长度为n的数字,且相对位置不变。使得拆后得到的2个数字的和最大。
输出一个方案。
显然是中途相遇法,先计算左半段,再计算右半段
分别状压左半段和右半段,注意左半段状压后要在末尾补上0。
代码估计哪里有小越界==,数组开大了一点才过。。具体就不查了。
#include
#include
#incl...
分类:
其他好文 时间:
2015-03-21 17:05:49
阅读次数:
164
题目链接:点击打开链接
题意:
给定n个数,随意排列。
给定k个违禁数b[]。
问:有多少个排列使得这个排列的 n项前缀和中不出现违禁数。
(formally,if it's a legal permutation, sum[i] != b[j] (1
sum[0] = 0; sum[i] = sum[i-1]+a[permutaion[i]];
==java党表示被tle,心疼自己...
分类:
其他好文 时间:
2015-03-20 23:55:19
阅读次数:
519
题目链接:点击打开链接
dp[i] 表示已经拥有卡片的状态为i, 还需要吃多少包才能拥有所有卡片,
显然 dp[(1
而答案就是dp[0];
用样例二举例,下面dp方程内直接用二进制表示,为了方便观察,我们用最高位表示第一张卡片(P1=0.1),最低位表示第n张卡片(P2=0.4)
dp[01] = (dp[01]+ 1)* P + (dp[11]+1) *P2 //其中P表示吃不...
分类:
其他好文 时间:
2015-03-20 22:04:52
阅读次数:
128
Paint on a WallTime Limit: 10000/5000 MS (Java/Others)Memory Limit: 65768/65768 K (Java/Others)Total Submission(s): 830Accepted Submission(s): 325Prob...
分类:
其他好文 时间:
2015-03-20 17:46:40
阅读次数:
194