
LightOJ
TaoSama
The ACM road begins.
展开
-
LightOJ 1004 - Monkey Banana Problem (dp)
题意: 变形数塔 分析: 水题 - - 注意边界, 然后开大数组可以无视 代码://// Created by TaoSama on 2015-10-27// Copyright (c) 2015 TaoSama. All rights reserved.////#pragma comment(linker, "/STACK:1024000000,1024000000")#incl原创 2015-10-27 17:47:53 · 424 阅读 · 0 评论 -
LightOJ 1068 - Investigation (数位dp)
题意: [l,r]区间,l,r∈[1,231)中本身能被k<104整除,且数位和也能被k整除的数的数目[l, r]区间, l, r \in [1, 2^{31})中本身能被k<10^4整除, 且数位和也能被k整除的数的数目分析: 乍一看以为空间炸了不可做,dp[i][k][k],但是发现−−数位和顶多就90不到,所以算的时候特判下就好了乍一看以为空间炸了不可做, dp[i][k][k],原创 2015-11-22 02:38:03 · 355 阅读 · 0 评论 -
LightOJ 1061 1061 - N Queen Again(状压dp)
题意: 给定一个8∗8棋盘有8个皇后,问最少移动多少步可以使得皇后不互相攻击,移动的时候可以移动8个方向,但是皇后不能互相跨越给定一个8*8棋盘有8个皇后,问最少移动多少步可以使得皇后不互相攻击,移动的时候可以移动8个方向,但是皇后不能互相跨越分析: 如果暴力移动的话,然后判断终态是否合法,复杂度非常高,但是我们提前预处理出所有8皇后的解的方案,只有92种,然后跑带权匹配就可以了,这里用状原创 2015-12-11 01:21:10 · 806 阅读 · 0 评论 -
LightOJ 1021 - Painful Bases (状压dp)
题意: 给你一个base进制的数,问这个数的全排列中,有多少个能被k整除给你一个base进制的数,问这个数的全排列中,有多少个能被k整除分析: 因为位数不多,所以可以状压因为位数不多,所以可以状压 dp[s][m]:=状态为s,余数为m有多少个数,直接转移就好了dp[s][m]:= 状态为s, 余数为m 有多少个数, 直接转移就好了代码://// Created by TaoS原创 2015-11-02 17:59:55 · 485 阅读 · 0 评论 -
LightOJ 1027 - A Dangerous Maze (期望)
题意: 迷宫n<=100扇门,每个门上面有个数字,要么是正数,要么是负数,选择门的概率都相同且随机迷宫 n<=100扇门,每个门上面有个数字,要么是正数,要么是负数,选择门的概率都相同且随机 正数表示x秒后出去了,负数表示x秒后原地不变,求出去的期望正数 表示x秒后 出去了,负数 表示x秒后 原地不变,求出去的期望分析: 尝试写dp,failed! 贴个概率分析吧尝试写dp, fa原创 2015-11-02 21:50:03 · 391 阅读 · 0 评论 -
LightOJ 1030 - Discovering Gold (期望dp)
题意: 投掷一枚骰子,假设正面向上的数值为x,当前位置为i,每次走min(x,N−i)步,每到一个格子会得到相应的黄金数,求走完长度为N的格子得到黄金的期望投掷一枚骰子,假设正面向上的数值为 x,当前位置为 i , 每次走 min (x,N - i) 步,每到一个格子会得到相应的黄金数,求走完长度为 N 的格子得到黄金的期望分析: dp[i]:=到i格子得到黄金的期望,然后转移就好了dp[原创 2015-11-02 22:34:36 · 406 阅读 · 0 评论 -
LightOJ 1051 - Good or Bad (dp)
题意: 给定一个字符串,连续3个元音字母或者连续5个辅音字母为BAD,如果完全不BAD为GOOD,"?"可以是任意字母,如果都有可能是MIXED给定一个字符串, 连续3个元音字母或者连续5个辅音字母为BAD, 如果完全不BAD为GOOD, "?"可以是任意字母, 如果都有可能是MIXED分析: dp[i][j][k]:=第i个字母,连续j个元音或者连续k个辅音,的状态dp[i][j][k]原创 2015-11-20 17:00:19 · 462 阅读 · 0 评论 -
LightOJ 1036 - A Refining Company(dp)
题意: 在一个n∗m(n,m<=500)的地图里有R矿和U矿,当你在某个点(x,y),可以建造一个只能向西或者向北挖取矿石的履带车在一个n*m(n,m<=500)的地图里有R矿和U矿, 当你在某个点(x, y), 可以建造一个只能向西或者向北挖取矿石的履带车 R矿石只能被向北移动的履带车挖取,U矿石只能被向西移动的履带车挖取,并且履带车不能交叉R矿石只能被向北移动的履带车挖取, U矿石只能原创 2015-11-13 21:52:57 · 800 阅读 · 0 评论 -
LightOJ 1047 - Neighbor House (dp)
题意: n<=20个房子涂3色,每个房子涂不同颜色代价不用,相邻房子颜色不能相同,求涂完的最小代价n<=20个房子涂3色, 每个房子涂不同颜色代价不用, 相邻房子颜色不能相同, 求涂完的最小代价分析: 煞笔题,dp[i][j]:=前i个房子涂完,且第i个房子颜色为j的最小代价煞笔题, dp[i][j]:= 前i个房子涂完, 且第i个房子颜色为j的最小代价 ans=min{dp[n][原创 2015-11-13 20:23:57 · 479 阅读 · 0 评论 -
LightOJ 1013 - Love Calculator (LCS + dp)
题意: |L|<=30的两个字符串,求一个新的最短的字符串包含它俩作为子序列,输出长度和此长度下的方法数|L|<=30的两个字符串, 求一个新的最短的字符串包含它俩作为子序列, 输出长度和此长度下的方法数分析: dp[i][j]:=A串前i个字符与B串前j个字符的LCS,第一问答案显然是n+m−dp[n][m]dp[i][j]:= A串前i个字符与B串前j个字符的LCS, 第一问答案显然是原创 2015-11-13 02:22:58 · 392 阅读 · 0 评论 -
LightOJ 1060 - nth Permutation (逆康托展开的思想)
题意: 求n<=20长度串的所有排列的按照字典序的第k个序列求n<=20长度串的所有排列的按照字典序的第k个序列分析: 总排列数f=n!/(cnta!∗cntb!∗⋯∗cntz!)总排列数f = n!/(cnt_a!*cnt_b!* \cdots *cnt_z!) 恢复序列的思想类似于逆康托展开恢复序列的思想类似于逆康托展开,点击这里代码://// Created by Tao原创 2015-11-21 04:17:05 · 565 阅读 · 0 评论 -
LightOJ 1057 - Collecting Gold (状压dp)
题意: n∗m(n,m<20)的格子里有最多15个格子有金子,x是出发点,求出发并回来拿完金子的最短路程n*m(n,m<20)的格子里有最多15个格子有金子, x是出发点, 求出发并回来拿完金子的最短路程分析: 一开始dp[x][y][s]:=在(x,y)金子状态为s的最短路程,然后空间炸了一开始dp[x][y][s]:= 在(x,y)金子状态为s的最短路程, 然后空间炸了 然后就卡原创 2015-11-21 04:22:49 · 556 阅读 · 0 评论 -
LightOJ 1037 - Agent 47 (状压dp)
题意: 给出n个目标,n<=15,再给出一个n∗n的矩阵,开始他对任何一个目标的伤害是1给出n个目标, n <= 15, 再给出一个n*n的矩阵, 开始他对任何一个目标的伤害是1 等他杀死一个目标后,可以使用那个目标的武器来杀死其他目标,问杀死所有目标,最少需要射击多少次等他杀死一个目标后,可以使用那个目标的武器来杀死其他目标, 问杀死所有目标,最少需要射击多少次分析: 直接状压dp原创 2015-11-13 17:51:40 · 528 阅读 · 0 评论 -
LightOJ 1011 - Marriage Ceremonies (状压dp)
题意: n∗n(n≤16)的矩阵aij表示i和j一对的权,求最大权完美匹配的权n*n(n \leq16)的矩阵a_{ij}表示i和j一对的权, 求最大权完美匹配的权分析: 状压dp,dp[i][s]:=前i个男的,已选妹子状态为s的最大权,暴力转移就好了状压dp, dp[i][s]:= 前i个男的, 已选妹子状态为s的最大权, 暴力转移就好了 嘛,跑一个km也是可以的嘛, 跑一个k原创 2015-10-27 18:22:55 · 590 阅读 · 0 评论 -
LightOJ 1005 - Rooks (dp、组合数学)
题意: n∗n(n≤30)的棋盘放置k个互相无法攻击的车的 方法数,答案保证不爆LLn*n(n \leq 30)的棋盘放置k个互相无法攻击的车的\ 方法数, 答案保证不爆LL分析: k>n,答案是0这个是很显然的k>n, 答案是0这个是很显然的 dp[i][j]:=i∗i格子放置k个互相不攻击的车的方法数dp[i][j]:= i*i格子放置k个互相不攻击的车的方法数 看上图假原创 2015-10-27 18:02:30 · 507 阅读 · 0 评论 -
LightOJ 1017 - Brush (III) (dp)
题意: 有N≤100个污点,每个污点有相应的坐标(xi,yi),|xi|,|yi|≤109。现在有一个宽度为w≤104的刷子有N \leq 100个污点,每个污点有相应的坐标(x_i, y_i), |x_i|, |y_i| \leq 10^9。现在有一个宽度为w \leq 10^4的刷子 刷子可以使用k≤100次,刷整个x轴,问最多可以刷掉多少个污点?刷子可以使用k \leq 100次,刷原创 2015-10-28 20:33:07 · 434 阅读 · 0 评论 -
LightOJ 1018 - Brush (IV) (状压dp)
题意: 给平面上n个点(n<=16),问最少几条线能把所有点覆盖给平面上n个点(n<=16),问最少几条线能把所有点覆盖分析: dp[s]:=当前状态最少还要用几条线覆盖dp[s]:= 当前状态最少还要用几条线覆盖 预处理一下两个点line[i][j]:=能覆盖哪些点预处理一下两个点line[i][j]:= 能覆盖哪些点 转移的时候不要n2决策,顺序是随意的,从小的开始就可以原创 2015-10-29 21:20:14 · 458 阅读 · 0 评论 -
LightOJ 1032 - Fast Bit Calculations (数位dp)
题意: 求0→n所有的数中二进制表示出现“11”的总个数求0\to n所有的数中二进制表示出现“11”的总个数分析: dp[i][cnt][0/1]:=从高到低第i位出现cnt个“11”且前一位是0还是1的总个数dp[i][cnt][0/1]:= 从高到低第i位出现cnt个“11”且前一位是0还是1的总个数 直接转移就好啦直接转移就好啦代码://// Created by Ta原创 2015-11-13 02:47:03 · 326 阅读 · 0 评论 -
LightOJ 1044 - Palindrome Partitioning (区间dp)
题意: n<=1000长度的字符串,最少能划分成几个回文子串n<=1000长度的字符串, 最少能划分成几个回文子串分析: 区间dp预处理出isPalindrome[l][r]:=s[l⋯r]是不是回文串区间dp预处理出isPalindrome[l][r]:= s[l \cdots r]是不是回文串 dp[i]:=表示长度为i的串最少能划分成几个回文串dp[i]:= 表示长度为i的串最原创 2015-11-13 20:13:46 · 506 阅读 · 0 评论 -
LightOJ 1038 - Race to 1 Again (期望dp)
题意: n<=105,每次操作可以除以它的约数,求变成1的期望n<=10^5, 每次操作可以除以它的约数, 求变成1的期望分析: 期望dp,dp[i]:=i变成1的期望步数,由于可以除1,所以这个我们单独考虑,不然就转移到自己就炸了期望dp, dp[i]:= i变成1的期望步数, 由于可以除1, 所以这个我们单独考虑, 不然就转移到自己就炸了 约数还可以用筛法来打表,我突然给忘记了约原创 2015-11-13 17:59:53 · 656 阅读 · 0 评论 -
LightOJ 1031 - Easy Game (区间dp)
题意: n<=100的整数序列,A和B轮流取数,每个人只能从左端或者右端取任意数量的数n<=100的整数序列, A和B轮流取数, 每个人只能从左端或者右端取任意数量的数 A先手,所有数取完游戏结束,假设两个人都采取最优策略,求SumA−SumBA先手, 所有数取完游戏结束, 假设两个人都采取最优策略, 求Sum_A - Sum_B分析: 区间dp,dp[l][r]:=先手A从s[l.原创 2015-11-13 16:40:48 · 427 阅读 · 0 评论 -
LightOJ 1033 - Generating Palindromes (区间dp)
题意: n<=100的字符串,求最少插入多少个字符才能变成回文串n<=100的字符串, 求最少插入多少个字符才能变成回文串分析: dp[l][r]:=使s[l⋯r]变成回文最少插入的字符个数dp[l][r]:= 使s[l \cdots r]变成回文最少插入的字符个数 如果s[l]==s[r]就不用插入辣,dp[l][r]=dp[l+1][r−1]如果s[l] == s[r]就不用插入原创 2015-11-13 03:05:13 · 443 阅读 · 0 评论 -
LightOJ 1050 - Marbles (概率dp)
题意: r<=500,b<=500个球,每回合我随机抽一个球,另一个人拿一个b球r<=500, b<=500个球, 每回合我随机抽一个球, 另一个人拿一个b球 如果他不能拿为他输,如果最后一个拿走是b球我赢,求我赢的概率如果他不能拿为他输, 如果最后一个拿走是b球我赢, 求我赢的概率分析: dp[r][b]:=当前状态我赢的概率,转移就我拿r球或者b球,很简单,注意边界情况dp[r]原创 2015-11-20 16:45:49 · 409 阅读 · 0 评论 -
LightOJ 1064 - Throwing Dice (dp)
题意: 给定n<25个骰子,求总和至少为x<=150的概率,分数输出给定n<25个骰子, 求总和至少为x<=150的概率,分数输出分析: 直接算概率比较麻烦,应该是我不会−−,然后直接求方法数就好了直接算概率比较麻烦, 应该是我不会 - -, 然后直接求方法数就好了 考虑dp[i][j]:=i个骰子和为j的方法数考虑dp[i][j]:=i个骰子和为j的方法数 ans=∑i>=x原创 2015-11-26 07:16:40 · 346 阅读 · 0 评论