周六练习
_idyllic
这个作者很懒,什么都没留下…
展开
-
数论练习1题解B
数论练习1题解B 新号,新开始。第一篇题解。 先上题目(HDU1395) 这道题目上来就没有数据范围(捂住额头真的合适嘛) 然后就是一句话 暴力能过(那你给个数据范围能怎么样嘛) 暴力的思路也就是运用同余性质用循环不断尝试2^i直到满足条件,每次乘2求余,直到余数为1 **#include<iostream> using namespace std; int main() { lo...原创 2018-12-02 12:59:56 · 323 阅读 · 0 评论 -
DP练习1题解C
DP练习1题解C 先上题目描述 需要记录的状态有时间 已经移动次数 当前在那棵树下 很容易想到需要开一个三维数组dp[i][j][k] i:当前时间 j:已经移动次数 k:当前在那颗树下 因为奶牛移动速度够快(你真的是奶牛吗) 我们可以让奶牛稍微聪明下 他在当前所在树掉果子时 不会傻乎乎跑到另一棵树下(因为吃完再走也来得及) 因此状态转移方式也就是: 在某树掉果子时 奶牛可能从隔壁树跑过来 ...原创 2018-12-08 22:23:54 · 190 阅读 · 0 评论 -
DP练习1题解E
DP练习1题解E 本题首A学长指出是最长字符子序列的问题 和最长字串子串很像 但是不相同 (比如bebbebeb 两者区别是连续不连续)( 一开始以为是要连续还以为他说错了T_T) emmm 我没想到 我想到是裸DP dp[i][j]表示从i到j需要补充的字符数 每次状态转移从d[i-1][j-1](头尾相同的话) 和d[i+1][j]+1 d[i][j-1]+1中选最小 对长度为1的预处理 然后...原创 2018-12-08 22:33:30 · 223 阅读 · 0 评论 -
DP练习1题解F
DP练习1题解F 先上题目描述 咋一看100 貌似能暴力 然而。。。10^12是炸的三次方 很容易想到简化求和的过程做前缀和预处理 用s[i][j]存储i行1-j的元素和 (如此还可以降维妙哉) 我们先用两个循环定下列的范围 如此一来变成了一个一维的DP 考虑如果要加上k行 则 必须要选K-1行 不选的状态只需要和最大值比较就行了 很容易得到如下的处理方法 max=-200; for (j=1;...原创 2018-12-08 22:40:07 · 230 阅读 · 0 评论 -
DP练习1题解D
DP练习1题解D 先上题目描述 样例输入 10 1 2 2 3 3 4 4 5 6 7 7 8 8 9 9 10 3 8 样例输出 3 8 emmm 因为POJ炸了 和上面讲的好像有一点小区别(也可能我没听懂) 我不知道能不能过 所以。。 明天看下 先写在这里 不贴代码了 首先是个图 n(n<=10000)个结点 n-1的边 合适用邻接表存储 也就是个树 是个树状DP 断掉一个点后 它之...原创 2018-12-08 22:59:21 · 951 阅读 · 0 评论 -
数论练习1题解A
数论练习1题解A 先贴题 此题有两个思路 法1:运用费马定理和同余 则结果同余与2^k,(k为对n求1e9+6的模) 此处可一位位读求 也可 高精度 备注:以上均要使用快速幂 代码如下 #include<iostream> #include<cstring> using namespace std; char ch[100002]; long long power(int...原创 2018-12-02 14:58:55 · 392 阅读 · 0 评论 -
DP练习1题解B
DP练习1题解B 先上题目描述 POJ2181 样例输入 8 7 2 1 8 4 3 5 6 样例输出 17 因为有两个方向 如果只开一个数组dp[i],难以存储前一步是上还是下 而考虑到只要奶牛不是傻子(其实是人不是傻子) 最后一步一定是上 那么容易想到是不是可以用dp[i]存储到当前最大的跳跃能量(最后一步为上) 那么需要考虑就是下的那步 从dp[j]转移到dp[i],下的一步应该是i到j的...原创 2018-12-08 22:00:26 · 232 阅读 · 0 评论