动态规划之HDU水题
做水题的感觉真好系列
HDU 2084 数塔
1: 1
2: 1 2
3: 1 2 3
4: 1 2 3 4
5: 1 2 3 4 5
dp[i][j]第i行第j个数取得的最大值
dp[i][j] = max(dp[i-1][j-1], dp[i-1][j]) + a[i][j]。
代码:
/********************************************************* Problem : 2084 ( 数塔 ) Judge Status : Accepted RunId : 14525016 Language : G++ Author : G_lory Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta **********************************************************/ #include <iostream> #include <cstdio> #include <algorithm> using namespace std; int a[105][105]; int dp[105][105]; int N; void solve() { for (int i = 1; i <= N; ++i) { for (int j = 1; j <= i; ++j) { dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - 1]) + a[i][j]; } } int ans = dp[N][1]; for (int i = 2; i <= N; ++i) { ans = max(ans, dp[N][i]); } printf("%d\n", ans); } int main() { int t; scanf("%d", &t); while (t--) { scanf("%d", &N); for (int i = 1; i <= N; ++i) for (int j = 1; j <= i; ++j) scanf("%d",&a[i][j]); solve(); } return 0; }
HDU 2044 一只小蜜蜂...
Fibonacci数列。
代码:
/********************************************************* Problem : 2044 ( 一只小蜜蜂... ) Judge Status : Accepted RunId : 14532121 Language : G++ Author : G_lory Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta *********************************************************/ #include <iostream> #include <cstdio> using namespace std; typedef long long ll; ll dp[55]; void init() { dp[0] = dp[1] = 1; for (int i = 2; i <= 50; ++i) dp[i] = dp[i - 1] + dp[i - 2]; } int main() { init(); int t, a, b; scanf("%d", &t); while (t--) { scanf("%d%d", &a, &b); printf("%lld\n", dp[b - a]); } return 0; }
HDU 2041 超级楼梯
同上题。
代码:
/******************************************************** Problem : 2041 ( 超级楼梯 ) Judge Status : Accepted RunId : 14532404 Language : G++ Author : G_lory Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta *********************************************************/ #include <iostream> #include <cstdio> using namespace std; typedef long long ll; ll dp[45]; void init() { dp[1] = dp[2] = 1; for (int i = 3; i <= 40; ++i) dp[i] = dp[i - 1] + dp[i - 2]; } int main() { init(); int t, a; scanf("%d", &t); while (t--) { scanf("%d", &a); printf("%lld\n", dp[a]); } return 0; }
HDU 2050 折线分割平面
一开始思路就错了,想的是一条直线最大的切割方法是把所有的面的切成两半,当然那是不可能的,最优的方法是把每条已有直线分成两段,这样该直线被已有直线分成已有直线条数+1的段,每一段把所在区域分成两半。
如果是折线,就把原有区域以最优的方式分解两次,注意两次方式相同,不能先分一次,在把第一部分的结果计算进去划第二次。因为是折线,在两条直线划分的基础上要连起来一端,所以少了1个区域。
dp[i] = dp[i-1]+((i-1)*2+1)*2-1; (我竟然忘了怎么通过递推公式求通项 = =……
(i-1)*2 原有直线(一条折线看成两条直线)条数。
((i-1)*2+1) 新加一条线段,被切割成多少分,也就是新加一条线段,多几个区域。
((i-1)*2+1)*2 因为是折线,相当于多加两条线段。
((i-1)*2+1)*2-1 折线会因为合并起来那一端减少一个区域。
代码:
/********************************************************* Problem : 2050 ( 折线分割平面 ) Judge Status : Accepted RunId : 14533258 Language : G++ Author : G_lory Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta *********************************************************/ #include <iostream> #include <cstdio> using namespace std; int dp[10005]; void init() { dp[0] = 1; dp[1] = 2; for (int i = 2; i <= 10000; ++i) { //dp[i] = dp[i - 1] + ((i - 1) * 2 + 1) * 2 - 1; dp[i] = dp[i - 1] + 4 * i - 3; } } int main() { int t, n; init(); scanf("%d", &t); while (t--) { scanf("%d", &n); printf("%d\n", dp[n]); } return 0; }
动态规划之HDU水题的更多相关文章
- Let the Balloon Rise HDU水题
题意 让你统计字符串最多的那个串,并输出 分析 直接用map统计,不断更新最大值即可 代码 #include<iostream> #include<algorithm> #in ...
- hdu 2393:Higher Math(计算几何,水题)
Higher Math Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- HDU 5832 A water problem(某水题)
p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...
- HDU 2096 小明A+B --- 水题
HDU 2096 /* HDU 2096 小明A+B --- 水题 */ #include <cstdio> int main() { #ifdef _LOCAL freopen(&quo ...
- [HDU 2602]Bone Collector ( 0-1背包水题 )
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 水题啊水题 还给我WA了好多次 因为我在j<w[i]的时候状态没有下传.. #includ ...
- HDU 5578 Friendship of Frog 水题
Friendship of Frog Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.ph ...
- HDU 5590 ZYB's Biology 水题
ZYB's Biology Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid ...
- HDU 5832 A water problem (带坑水题)
A water problem 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5832 Description Two planets named H ...
- HDU 5538 L - House Building 水题
L - House Building Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.ph ...
随机推荐
- C语言小知识
1.数组初始化 a[5] = {1}; //1,0,0,0,0 a[5] = {0}; //0,0,0,0,0 a[3][3] = {1}; //1,0,0;0,0,0;0,0,0 a[3][ ...
- vim 分屏 screen
上下分割,并打开一个新的文件. :sp filename 左右分割当前打开的文件. Ctrl+W v 左右分割,并打开一个新的文件. :vsp filename 移动光标 Vi中的光标键是h, j, ...
- Struts2 web.xml文件配置
在导入了项目需要使用的核心jar包之后需要在web.xml中配置Struts. 1. Struts2的知识点普及: Struts2共有5类配置文件,分别罗列如下: 1), Web.xml; 在没有使用 ...
- FastCGI中文规范
http://fuzhong1983.blog.163.com/blog/static/1684705201051002951763/ . 介绍 FastCGI是对CGI的开放的扩展,它为所有因特网应 ...
- HDOJ多校联合第四场
B题: C题:仅由'A','G','C','T',4个字母组成,给定一个字符串S,|S|<=15,给定一个整数m,以m为长度且仅含4种字母的字符串T,求LCS(S,T)为0,1,2,3....| ...
- 使用phpexecel类库导出数据
公司要求做一个功能:将数据库里的数据导出,并生成excel文件. 于是百度了下,集大牛之所长,加上自己之所长,做出了整理,并分享. 目标:使用phpexcel类库生成xml文件,并下载. 步骤一:下载 ...
- MFC浅析(7) CWnd类虚函数的调用时机、缺省实现
CWnd类虚函数的调用时机.缺省实现 FMD(http://www.fmdstudio.net) 1. Create 2. PreCreateWindow 3. PreSubclassWindow 4 ...
- float 和 real
用于表示浮点数值数据的大致数值数据类型.浮点数据为近似值:因此,并非数据类型范围内的所有值都能精确地表示. 注意: real 的 SQL-92 同义词为 float(24). 数据类型 范围 存储 ...
- 常用linux命令合集(持续更新中)
我的博客:www.while0.com 开发调试 readelf-a 查看elf文件中的内容 hexdump -C 用16进制查看文件 objdump -d 反汇编目标文件 nm 查看目标文件或者可执 ...
- PHP FTP上传文件
第一步:建立一个新的 FTP 连接. ftp_connect(host,port,timeout); host必需,规定要连接的 FTP 服务器,可以是域名或 IP 地址,后面不应以斜线结 ...