hihoCoder Demo Day dp】的更多相关文章

题意:有一个机器人被困在一个的迷宫中,机器人的初始位置是,目的地是,并且它的移动方式很奇怪:只能一直向右,直到不能再向右才能把方向变成向下:只能一直向下,直到不能再向下才能把方向变成向右.迷宫中的每个格子都是或者,代表这个格子可以正常通过,代表这个格子是障碍物.你可以让一些格子的情况发生变化–让变成,让变成.问,至少需要改变多少格子才能让机器人可以到达?机器人初始方向是向右. 思路:表示到达坐标时方向是需要的最小改变数量.要想改变当前方向,必须遇到障碍物或者遇到迷宫边界,利用这个去转移即可.注意…
Pangu and Stones HihoCoder - 1636 题意 给你\(n\)堆石子,每次只能合成\(x\)堆石子\((x\in[L, R])\),问把所有石子合成一堆的最小花费. 思路 和合石子的那题很像,多加了的一个限制,所有我们可以想到要多开一维数组来计算. \(dp[i][j][x]:\)表示区间\([i, j]\)的范围内有\(x\)堆石子. 然后我们要分成两类讨论(\(sum[i]\)表示前\(i\)堆石子的和) \(1\).\(dp[i][j][1] = min(dp[i…
/* 题意: 不要低头,不要放弃,不要气馁,不要慌张. PS:人生第一道自己独立做出来的树形dp... 给一棵树,标号1到n,每条边有两个权值,步行时间和驾车时间.车在1号点. 给m个必须访问的关键点,求从1号点出发,访问所有关键点一遍的最小时间. 注意车可以停在任意地方,但是只有1号点有一辆车,人最后也可以停留在任意点. 思路: 1.子树方向(注意dp1 dp2 dp4都是保证人一定要返回该点的最优解) dp1代表该点起始有车,并且从该点出发访问完该点子树上所有的关键点车和人都返回的该点的最优…
vj链接:https://vjudge.net/contest/367007#problem/G 题意: 给你一棵树,树上有n个节点,每一个节点有一个权值,树根节点是1,你需要找到以1为起点连通的m个点的最大的权值(连通的意思也就是:这m个点在从1点遍历树的时候,有这样的一个序列) 题解: dp[x][i]表示:以x为起点,连通量为i的最大权值 dp转移方程: for(int i=m;i>1;--i) //因为每一个节点只能用一次,所以要像01背包一样循环 { for(int j=0;j<i;…
图论学习笔记 TYQ图论真是个渣渣呢 所以TYQ决定猛补图论 好的从0x60开始 表示博客园不用Latex真的烦呢QAQ,公式难打的要命QAQ 0x60~0x62 最短路讲解跳过 最小生成树: Kruskal: 挺容易的,贪心的选最大值就好了 时间复杂度emmmO(mlogm),适用于稀疏图 Prim 首先只在最小生成树中加入root节点 设两个集合S(剩余点),T(生成树) 每次找到两个点,使得他们的连线最短 时间复杂度O(n2),多用于稠密图 例题 0x63~0x64 众所周知树是一种特殊的…
http://hihocoder.com/problemset/problem/1043 动态转移方程 :for v=cost..V f[v]=max(f[v],f[v-c[i]]+w[i]); #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int n,m; ]={}; v…
题目链接: http://hihocoder.com/problemset/problem/1300 题解: 先用栈预处理出每个‘)’匹配的‘(’的位子,放在pos数组中. dp[i]表示以i结尾的合法子串个数,则易知转移方程: dp[i]=dp[pos[i]-1]+1: 代码: #include<iostream> #include<cstdio> #include<stack> using namespace std; typedef long long LL; ;…
题目链接: http://hihocoder.com/problemset/problem/1301?sid=804672 题解: 二分答案,每次判断用数位dp做. #include<iostream> #include<cstring> #include<cstdio> using namespace std; typedef long long LL; const LL INFLL = 0x3f3f3f3f3f3f3f3fLL; //dp[x][0]表示高位还没有出…
#1033 : 交错和 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 给定一个数 x,设它十进制展从高位到低位上的数位依次是 a0, a1, ..., an - 1,定义交错和函数: f(x) = a0 - a1 + a2 - ... + ( - 1)n - 1an - 1 比如: f(3214567) = 3 - 2 + 1 - 4 + 5 - 6 + 7 = 4 给定 输入 输入数据仅一行包括三个整数.l, r, k(0 ≤ l ≤ r ≤ 1018, |…
http://hihocoder.com/contest/hiho42/problem/1 给定一个n,问我们3*n的矩阵有多少种覆盖的方法 第41周做的骨牌覆盖是2*n的,状态转移方程是dp[i] = dp[i-1] + dp[i-2],递推数列可以用矩阵快速幂来加速计算 我们可以用状态dp来做这一题,如果某个格子上被铺了骨牌,就标记为1,否则为0 那么每一列一共有8个状态. 两种状态的表示法 第一种: dp[i][s] 表示填满第i行后,第i+1行的状态为s, 那么s的转移情况如下, 0->…