上一页 1 2 3 4 5 6 7 ··· 23 下一页
摘要: 长春网赛倒数第2题题意:给一颗带权树,树的边权代表通过所需的费用,树中每个节点有一个value,代表财富值,从结点1出发,求在时间T内到达结点n最多能带走的财富。分析:从1到n有一条必经之路,对这条路上的结点用树形DP求泛型背包,然后对这些点进行分组背包。View Code #include <stdio.h>#include <string.h>#include <queue>using namespace std;#define MAX(a,b) ((a)>(b)?(a):(b))#define N 101int n,T,e;int first[N 阅读全文
posted @ 2012-09-10 17:32 BeatLJ 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 亚洲区长春站网络赛第2题题意:Alice和Bob各有n张卡片,如果卡片a的宽和高都不小于卡片b,则a能覆盖b,问Alice的卡片最多能覆盖多少Bob的卡片。每张卡片只能用一次,每张最多只能覆盖一张。分析:在这里卡片之间的关系有3种,1、a能覆盖b;2、b能覆盖a;3、a不能覆盖b,b不也覆盖不了a(a和b相同的情况可以并入前面2种)。我们将双方卡片排序(先比较高,然后比较宽,小的在前)后,若Alice最小的卡片不能覆盖Bob最小的卡片,则Alice这张卡片可以直接抛弃,如果能覆盖,则一定要覆盖一个宽度最大的。我们将Bob的卡片中高度比它小的存入set(关键字为最大宽度-自身宽度),要注意相同卡 阅读全文
posted @ 2012-09-10 17:25 BeatLJ 阅读(264) 评论(0) 推荐(0) 编辑
摘要: Problem Description:A peak number is defined as continuous digits {D0, D1 … Dn-1} (D0 > 0 and n >= 3), which exist Dm (0 < m < n - 1) satisfied Di-1 < Di (0 < i <= m) and Di > Di+1 (m <= i < n - 1).A number is called bi-peak if it is a concatenation of two peak numbers. 阅读全文
posted @ 2012-09-03 23:08 BeatLJ 阅读(563) 评论(0) 推荐(1) 编辑
摘要: 题意:求区间[x , y]中beautiful number的个数,a positive integer number is beautiful if and only if it is divisible by each of its nonzero digits.分析:一个数能被它的所有非零数位整除,则能被它们的最小公倍数整除,而1到9的最小公倍数为2520,数位DP时我们只需保存前面那些位的最小公倍数就可进行状态转移,到边界时就把所有位的lcm求出了,为了判断这个数能否被它的所有数位整除,我们还需要这个数的值,显然要记录值是不可能的,其实我们只需记录它对2520的模即可,这样我们就可以设 阅读全文
posted @ 2012-09-02 22:33 BeatLJ 阅读(1983) 评论(0) 推荐(0) 编辑
摘要: 题意:给m个字符串,求长为n且至少包含k个上述字符串的字符串有多少个。数据范围:(1<=n<=25),(0<=m<=10)分析:用dp[i][cur][s]表示走i步后,到达结点cur,包含的字符串压缩为状态s(第x位为1表示包含第x个字符串)的字符串有多少个。TLE:当dp[i-1][pre][s]=0时,直接continue,不用进入下一层循环,经此优化后就AC了。View Code #include <stdio.h>#include <string.h>#include <queue>using namespace std;# 阅读全文
posted @ 2012-09-02 17:45 BeatLJ 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 题意:给n个01字符串,求区间[x , y]中有多少个数写成BCD码后不包含以上01串。分析:先用01字符串建立AC自动机(注意标记危险结点),然后DP。dp[i][s]表示扫描前i位后有多少个数会到达自动机的结点s.TLE:数位DP写搓了……(为此今天专门学习了下数位DP的dfs写法,发现确实比递推的快不少)WA:1、高精度减1写错了; 2、由于有取模,所以cal(y)可能小于cal(x-1),输出的时候没考虑到。View Code #include <stdio.h>#include <string.h>#include <queue>using nam 阅读全文
posted @ 2012-09-02 16:43 BeatLJ 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 题意:求[x , y]中有多少个平衡数。平衡数:选定一位作为支点,若左右的力矩平衡则该数是平衡数,否则不是。For example, 4139 is a balanced number with pivot fixed at 3. The torqueses are 4*2 + 1*1 = 9 and 9*1 = 9View Code #include <stdio.h>#include <string.h>#define N 19#define M 1378typedef __int64 LL;LL dp[N][N][M];int digit[N];LL dfs(in 阅读全文
posted @ 2012-09-02 16:26 BeatLJ 阅读(422) 评论(0) 推荐(0) 编辑
摘要: 题意:求1-n中有多少个数含字符串”13"且能被13整除。(1 <= n <= 1000000000).练习数位DP的dfs写法。View Code #include <stdio.h>#include <string.h>#define N 10int dp[N][13][3],digit[N];int dfs(int pos,int r,int s,int f){ if(pos==-1) return r==0&&s==2; if(!f&&dp[pos][r][s]!=-1) return dp[pos][r][ 阅读全文
posted @ 2012-09-02 16:21 BeatLJ 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 题意:求1-N中有多少个数包含字符串"49"。1 <= N <= 2^63-1重写这题就是为了学习数位DP的dfs写法,感觉dfs的写法思路更清晰,速度也更快。View Code #include <stdio.h>#include <string.h>#define N 20typedef __int64 LL;LL dp[N][3];int digit[N];LL dfs(int pos,int s,int f){ if(pos==-1) return s==2; if(!f&&dp[pos][s]!=-1) retu 阅读全文
posted @ 2012-09-02 16:18 BeatLJ 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 模型:给一个完全二部图,每条边都有一个权值,求边权和最大的匹配。数据范围:n<=250分析:直接套用KM算法即可,要加slack数组优化,优化后复杂度为O(N3)。View Code #include <stdio.h>#include <string.h>#define N 300#define INF 0x7fffffff#define MIN(a,b) ((a)<(b)?(a):(b))#define MAX(a,b) ((a)>(b)?(a):(b))int n,g[N][N];int x[N],y[N],lx[N],ly[N],match[N 阅读全文
posted @ 2012-08-09 23:05 BeatLJ 阅读(285) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 23 下一页