随笔分类 - dp
摘要:题意: 有八种买票的规则 问你最省钱的买票方式 思路: 首先就是正常的状态转移 包天的票转移到一天前 包周的转移到一周前 包月的到一个月之前 不好想的是 如果我已经买了单独bus的票 我可能购买小规格的两个都用的票 可能买单独一天或者单独一周的
阅读全文
摘要:1001 直接模拟 1003 原题:NYOJ980(比赛之后才知道 直接递推 打表查询 1005 数位dp模板题
阅读全文
摘要:题意: 有一个猎人和n匹狼 每个狼有一个自己的攻击力a[i] 每一个狼还有一个buff 可以给旁边的狼加b[i]攻击力 如果这匹狼被消灭了 那么这个buff也就不存在了 猎人每消灭一个狼会受到等同于攻击力的伤害 问猎人消灭所有的狼能受到的最少伤害 思路: 经典区间dp 如果我们要消灭第[l,r]区间
阅读全文
摘要:题意: (一开始题意没读懂 样例都看不懂 给你n个数 让你选出一些区间 让这些区间的表示的值和最大 每个区间表示的值就是区间内每个不重复的数的异或和 我们选出的区间可以不覆盖整个数组 就像第二组样例 (接下来是重点 区间内出现过的数不能在其他区间出现 意思就是如果一个数在区间中出现过 那所有数就都要
阅读全文
摘要:B题是一个简单的模拟 求一下两个点中间每过deta的整数点 然后更新一下每个点的最后一次经过就好了 D是一个最短路 而且用到了虚点的操作 每个城市群都是一个虚点 也就是对每个城市群需要加两个点 u'和u'' 在每个群内的城市连自己的城市群是 u'->v v->u'' 然后每个城市群之间 u'->v'
阅读全文
摘要:好久没上博客了 顺便把爱奇艺初赛的代码也贴了吧…… A题是个01背包 做了一个不大不小的优化 就是把v的含义变成了剩余的体积 因为每个物品的体积也太大了 直接用差比较好用 (这个输入方式真的神奇……) B题应该是找个合适长度 直接二分 记得数据范围很大 所以开的vector 顺手练一下auto的用法
阅读全文
摘要:题意: 中文题意不解释…… 思路: 先把x,T存到矩阵里 然后像数塔一样从最底层走一边就行了 dp[i][j]代表在时间为j时 第i个位置最多能吃到多少个馅饼 最后输出第0时刻的5位置的馅饼数量就好了
阅读全文
摘要:题意: 有一块n*m的土地 0代表不肥沃不可以放牛 1代表肥沃可以放牛 且相邻的草地不能同时放牛 问最多有多少种放牛的方法并对1e8取模 思路: 典型的状压dp 能状态压缩 能状态转移 能状态压缩的题的特点就是只有两种状态 所以用0 1表示两种状态 用位运算判断是否符合条件 然后将前一行的合理状态转
阅读全文
摘要:超时还有可能是数组开小了……
阅读全文
摘要:最近两天在迎新 看来只能接着水题了…… 新生培训的任务分配 作为一个有担当的学长 自觉去选了动态规划…… 然后我觉得我可以开始水动态规划了…… 今天水一发最长上升子序列…… kuangbin有nlogn的模板…… 自己写一发原来学的吧……
阅读全文
摘要:题意呢 就是有两种售票方式 一种是icpc 一种是其他方式 icpc抢票成功的概率是其他方式的2倍…… 这时 一个人出现了 他通过内幕知道了两种抢票方式各有多少人 他想知道自己如果用icpc抢票成功的概率是多少 用acm抢票成功的概率是多少…… 做过不多的概率dp 还在摸索…… dp[i][j]代表
阅读全文
摘要:网上都说是数位dp 但是虽然在队伍里负责动态规划 但是数位dp还不会…… 百度了一下 发现和最大子序列思路差不多…… 最大子序列的dp[i][j]是表示两个序列前i项和前j项的最大子序列…… dp[i][j]表示前i位 尾数是j的魔法数的个数…… 也不是特别不好理解…… 但是还要好好理解一下……
阅读全文
摘要:首先,说明一下子序列的定义…… 一个序列A={a1,a2,a3,...,an},从中删除任意若干项,剩余的序列叫A的一个子序列。 很明显(并不明显……),子序列……并不需要元素是连续的……(一开始的时候思维总是以为元素是连续的,好傻啊……) 然后是公共子序列…… 如果C是A的子序列,也是B的子序列,
阅读全文
摘要:给定两个字符串S和T,对于T我们可以进行三种操作 (1)在任意位置增加字符 (2)删除字符 (3)替换字符 问最少多少次能把T变成S? 设f(i,j)是S的前i位和T的前j位对齐的最小花费 接下来分析每一位 (1)如果S[i]==T[j],就不用任何修改,那么最小花费是f(i-1,j-1) (2)如
阅读全文