Help Jimmy POJ - 1661 数字三角DP】的更多相关文章

题意:中文 https://vjudge.net/problem/POJ-1661 题解:设两个dp数组,dpl[i]存 从第i块板左边到地上所花的最短时间,dpr[i]存右边的. 将所有板按高度排序 ,从地面到人分别编号为0,1~n, n+1 坑:dp方程写错了个字母. 一开始只用了一个dp数组(还改半天) 没考虑同一高度 人与地板算入dp数组时的赋值 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<vector&…
E - Help Jimmy POJ - 1661 这个题目本身不是很难,但是可以更加优化这个写法. 开始是n*n #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #include <algorithm> #include <cstdlib> #include <vector> #include <stack&…
#include<iostream> #include<stdio.h> #include<algorithm> #include<cstring> using namespace std; ; ; const int INF=0x3f3f3f; struct Time { int x1,x2,h; }a[N]; ][]; // 0:表示第i的木板左边到底部的最短时间 // 1: 表示第i的木板右边到底部的最短时间 int n,x,y,max_h; int…
思路: 1. 每个板子有左右两端, dp[i][0], dp[i][1] 分别记录左右端到地面的时间 2. 从下到上递推计算, 上一层的板子必然会落到下面的某一层板子上, 或者地面上 总结: 1. 计算每个板子的 dp[i][0/1] 仅需考虑该板子的直接前驱即可 2. 动规的思想并不很明显 3. 代码中, 两个板子相对位置的判断特别精髓 4. 将地面和初始状态都抽象成一块板子 代码: #include <iostream> #include <algorithm> using n…
没刷过 POJ,这题是论坛有人问的,我才看看. 我发现 POJ 注册很奇怪,账号总是登不上去,弄的我还注册两个.Emmm 首次体验很差,还好我不在 POJ 刷题. 题目链接:POJ 1661 Help Jimmy 解题思路 我最初想的是用递归从上往下不断选择方向,结果发现我有点傻了,这样极有可能 TLE. 其实应该是用动态规划解题.从下往上,将每块平台的左端点和右端点到地面的最短时间计算出来.最后得到人的最短时间. 思路详解: 很明显,平台有三个数据,左端点,右端点,高度.因此直接定义结构体如下…
DP问题练习1:数字三角最短路径问题 问题描述 给定一个数字三角形,找到从顶部到底部的最小路径和.每一步可以移动到下面一行的相邻数字上. 样例: 比如,给出下列数字三角形: 2 3 4 6 5 7 4 1 8 3 从顶到底部的最小路径和为11 ( 2 + 3 + 5 + 1 = 11). 思路 我们给每一个位置标上坐标 2 (0,0) 3 4 (1,0) (1,1) 6 5 7 ... 4 1 8 3 ... 我们用f(i,j)表示从(i,j)位置一直到三角形底部的最小路径和. 那么f(0,0)…
POJ.3624 Charm Bracelet(DP 01背包) 题意分析 裸01背包 代码总览 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define nmax 13000 #define nnmax 3500 using namespace std; int dp[nmax]; int w[nnmax],d[nnmax]; int main…
取数字(dp优化) 给定n个整数\(a_i\),你需要从中选取若干个数,使得它们的和是m的倍数.问有多少种方案.有多个询问,每次询问一个的m对应的答案. \(1\le n\le 200000,1\le m\le 100,1\le q\le 30,-10^9\le a_i\le 10^9\). 首先有一个暴力dp:\(f[i][j]\)表示选到第i个数,和mod m是j的方案数.但是显然,这个dp是\(O(nm)\)的,然后就tle了. 换一个思路dp?由于我们只需要一个数模m的值,可以先把所有数…
繁繁的数字 背包DP 问一个数\(n\)有多少种二进制分解方案数 \(n\le 10^5\) 如7有7=4+2+1=4+1+1+1=2+2+2+1=2+2+1+1+1=2+1+1+1+1+1=1+1+1+1+1+1+1,共6种方案 一眼完全背包,将\(2^0,2^1\cdots\)等看成\(log_n\)个物品,每个物品无限件,背包体积为\(n\).然后求方案数套个计数DP即可. 其他机房大佬都是找规律找出来的-- #include <cstdio> #define MAXN 1000010…
POJ 2995 Brackets 区间DP 题意 大意:给你一个字符串,询问这个字符串满足要求的有多少,()和[]都是一个匹配.需要注意的是这里的匹配规则. 解题思路 区间DP,开始自己没想到是区间DP,以为就是用栈进行模拟呢,可是发现就是不大对,后来想到是不是使用DP,但是开始的时候自己没有推出递推关系,后来实在想不出来看的题解,才知道是区间DP,仔细一想确实是啊. 下面就是状态转移方程: \[ \begin{cases}dp[i][j] &=& dp[i+1][j-1]+if(str…