上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 99 下一页

2012年8月5日

HDU 3811 Permutation 记忆化搜索 状态压缩 DP

摘要: 题意:求1-N的排列数但是有限定条件,AI,BI,该排列要满足第AI位为Bi。算法:1.裸的DFS果断TLE。。时间复杂度为N!View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#include<set>#include<algorithm>us 阅读全文

posted @ 2012-08-05 11:25 more think, more gains 阅读(169) 评论(0) 推荐(0) 编辑

HDU 3006 The Number of set状态压缩

摘要: 题意:给你N个集合,k个元素,元素值小于等于14,问由这些集合可以构造出多少新的不同集合。。。算法:由元素值特别小,可以这样处理。。1,2就是set[i]第1,2位为1然后把所有集合的合并,枚举。。最后枚举1..1<<m之间哪些数存在可以组成。。View Code #include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>#include<queue>using namespace std;int N, M, set[110];int d 阅读全文

posted @ 2012-08-05 10:06 more think, more gains 阅读(173) 评论(0) 推荐(0) 编辑

HDU 1074 Doing Homework 状态压缩 + 搜索

摘要: 题意:就是有0-15个工作,每个工作有完成日期限制,还有完成这个工作所需要时间,求完成所有工作花时最少,并且输出这些顺序。。。因为工作很小,最多也就1<<15种方案,BFS枚举所有方案即可。View Code /*鐘舵€佸帇缂?+ 鎼滅储*/#include<stdio.h>#include<string.h>#include<stdlib.h>#include<queue>#include<algorithm>using namespace std;struct node{ char name[110]; int end 阅读全文

posted @ 2012-08-05 09:42 more think, more gains 阅读(136) 评论(0) 推荐(0) 编辑

HDU 1565 状态压缩

摘要: 题意:你一个n*n的格子的棋盘,每个格子里面有一个非负数。从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和最大。(n <= 20)算法:因为n比较少20,可以用状态压缩,1表示方格该数取,0表示不取。每一行的状态有1<<N种,先预处理所有合法状态,即相邻两位不能为1,判断条件是i && (i<<1),下一行的状态要满足条件的是跟上一行没有相邻的 num[i] & num[j] == 0int num[21000]; //状态 int sum[21][21000]; //该状态的和 阅读全文

posted @ 2012-08-05 09:13 more think, more gains 阅读(191) 评论(0) 推荐(0) 编辑

2012年8月3日

HDU 4339 Query

摘要: 算法:比赛时没有想到好的算法,暴力是O( Q * N )肯定超时。赛后,线段树,树状数组,HASH都能AC,想了下,的确用树状数组时间复杂度就可以优化到O(Q * lgN * lgN)2000msAC.。。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<string>#include<math.h>#include<map>#includ 阅读全文

posted @ 2012-08-03 22:16 more think, more gains 阅读(207) 评论(0) 推荐(0) 编辑

上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 99 下一页

导航