dp洋洋散散的知识+code
/*在数轴上有0-N的位置
从0出发每次可以向右走
2
23
233步*/ // 1 总共的方案数 f[i]=f[i-]+f[i-]+f[i-]; f[]=;
for (int a=;a<=n;a++)
{
if (a>=) f[a]+=f[a-];
if (a>=) f[a]+=f[a-];
if (a>=) f[a]+=f[a-];
}
printf("%d\n",f[n]); // 2 考虑恰好t次到达时
//dp 题 可以考虑 每多一个条件 数组就多一维;所以,开二维数组
//f[i][j] 表示 用 j 步走了i种方案 f[i][j]=f[i-][j-]+f[i-][j-]+f[i-][j-]; f[][]=;
for (int a=;a<=n;a++)
for (int b=;b<=t;b++)
{
if (a>=) f[a][b]+=f[a-][b-];
if (a>=) f[a][b]+=f[a-][b-];
if (a>=) f[a][b]+=f[a-][b-];
}
printf("%d\n",f[n][t]);
int ans=;
for (int a=;a<=t;a++)
ans+=f[n][a];
printf("%d\n",ans); // 3 考虑小于t次
//将
f[n][]+f[n][]+....f[n][t]; //考虑最多走r步233
//so 要再加一维,变成三维数组
//f[i][j][k] 表示走到 i点,公用j步,走233用了k步 f[i][j][k]=f[i-][j-][k]+ f[i-][j-][k]+ f[i-][j-][k-];
/*
(N,M)的方格图
从(0,0)开始
只能朝右或上走
问走到(N,M)的方案数*/ //将每个点的左边点和下边点相加 f[n][m]=f[n-][m]+f[n][m-]; //考虑有k个点(x,y)不能走
//定义布尔数组记录每个不能坐的点
每次设f[x][y]=,并加以判断; //2.考虑每个坑只能掉一次:
if(不是坑) F[i][j][k]=f[i-][j][k]+f[i][j-][k]; else if(是坑) F[i][j][]=f[i-][j][]-f[i][j-][]; #include<iostream>
using namespace std;
int main()
{
int n,i,j,a[][];
cin>>n;
for (i=; i<=n; i++)
for (j=; j<=i; j++)
cin>>a[i][j]; //输入数字三角形的值
for (i=n-; i>=; i--)
for (j=; j<=i; j++)
{
if (a[i+][j]>=a[i+][j+])
a[i][j]+=a[i+][j]; //路径选择
else a[i][j]+=a[i+][j+];
}
cout<<a[][]<<endl;
} int fib(int a)
{
if (!a) return ;
if (a==) return ;
if (g[a]) return f[a];
g[a]=true;
f[a]=fib(a-)+fib(a-);
return f[a];
}
数字三角形问题,使得答案对p取模最大? F[i][j][k] 表示走到第i行第j列 使得答案模p是否可行 F[i][j][k]=f[i+][j][k-v[i][j]]
Or
F[i+][j+][k-v[i][j]]
**********代码: for (int a=;a<=n;a++)
f[n][a][v[n][a]%p]=true;
for (int a=n-;a>=;a--)
for (int b=;b<=a;b++)
for (int c=;c<p;c++)
f[a][b][c]=
f[a+][b][(c-v[a][b]+p)%p] ||
f[a+][b+][(c-v[a][b]+p)%p];
int ans;
for (int a=p-;a>=;a--)
if (f[][][a])
{
ans=a;
break;
} //***********区间DP******** /*合并石子 每次选择相邻两堆 代价为两堆石子和 问最小总代价 (第一层for循环一定要正着写) 因为后一层循环需要前一层循环的数据 */ F[l][r]=min(f[l][k]+f[k+][r]+sum[l][r]) /*矩阵乘法
自定义顺序
使得运算次数最少*/ //F[i][j] 表示搞定[I,j]的最小代价
F[i][j] = min(f[i][k]+f[k][j+]+cost(I,k,j))
dp洋洋散散的知识+code的更多相关文章
- (DP 雷格码)Gray code -- hdu -- 5375
http://acm.hdu.edu.cn/showproblem.php?pid=5375 Gray code Time Limit: 2000/1000 MS (Java/Others) M ...
- DP较为完整的知识
数位DP 这类题,才刚刚接触,记得去年网络赛,就有道这样的题,我完全不会, 对于这类题基本方法是,是利用数的位数来构造转移方程. 下面给出两篇论文的链接: <数位计数问题解法研究> < ...
- 【BZOJ 3925】[Zjoi2015]地震后的幻想乡 期望概率dp+状态压缩+图论知识+组合数学
神™题........ 这道题的提示......(用本苣蒻并不会的积分积出来的)并没有 没有什么卵用 ,所以你发现没有那个东西并不会 不影响你做题 ,然后你就可以推断出来你要求的是我们最晚挑到第几大的 ...
- 【DP入门到入土】
DP例题较多,可以根据自己需求食用~ update:下翻有状压DP入门讲解,也只有讲解了(逃~ DP的实质,就是状态的枚举. 一般用DP解决的问题,都是求计数或最优问题,所以这类问题,我们也可以用搜索 ...
- dp斜率优化
算法-dp斜率优化 前置知识: 凸包 斜率优化很玄学,凭空讲怎么也讲不好,所以放例题. [APIO2014]序列分割 [APIO2014]序列分割 给你一个长度为 \(n\) 的序列 \(a_1,a_ ...
- 插头dp
插头dp 感受: 我觉得重点是理解,算法并不是直接想出怎样由一种方案变成另一种方案.而是方案本来就在那里,我们只是枚举状态统计了答案. 看看cdq的讲义什么的,一开始可能觉得状态很多,但其实灰常简单 ...
- POJ 1742 Coins DP 01背包
dp[i][j]表示前i种硬币中取总价值为j时第i种硬币最多剩下多少个,-1表示无法到达该状态. a.当dp[i-1][j]>=0时,dp[i][j]=ci; b.当j-ai>=0& ...
- 插头DP题目泛做(为了对应WYD的课件)
题目1:BZOJ 1814 URAL 1519 Formula 1 题目大意:给定一个N*M的棋盘,上面有障碍格子.求一个经过所有非障碍格子形成的回路的数量. 插头DP入门题.记录连通分量. #inc ...
- HDU 1176 免费馅饼:dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176 题意: 横坐标范围为[0,10],你在第0秒站在坐标为5的地方. 在接下来的一段时间内,会有n个 ...
随机推荐
- [bzoj 2460]线性基+贪心+证明过程
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2460 网上很多题目都没说这个题目的证明,只说了贪心策略,我比较愚钝,在大神眼里的显然的策略 ...
- react 项目遇到的警告集锦
1. 2.
- oozie与sqoop的简单案例
1:拷贝模板 2:拷贝hive用的jar包 方式一: 3:编辑job.properties # # Licensed to the Apache Software Foundation (ASF) u ...
- Spring Cloud全家桶主要组件及简要介绍
一.微服务简介 微服务是最近的一两年的时间里是很火的一个概念.感觉不学习一下都快跟不上时代的步伐了,下边做一下简单的总结和介绍. 何为微服务?简而言之,微服务架构风格这种开发方法,是以开发一组小型服务 ...
- 【leetcode 简单】第四题 罗马数字转整数
罗马数字包含以下七种字符:I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列 ...
- Tinyos 第三版Make系统
1.make系统安装 cd tools ./Bootstrap ./configure make sudo make install 2.make系统结构 3.第三版Makerules文件部分解析 # ...
- inet_confirm_addr && confirm_addr_indev
确认给定参数范围的ip地址是否存在: /* * Confirm that local IP address exists using wildcards: * - net: netns to chec ...
- Mutex, semaphore, spinlock的深度解析
Mutex是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个.一般的用法是用于串行化对critical section代码的访问,保证这段代码不会被并行的运行. Semaphor ...
- shell读取文件的每一行内容并输出【转】
写法一: #!/bin/bash while read line do echo $line done < file(待读取的文件) 写法二: #!/bin/bash cat file(待读取的 ...
- alias命令别名
笔者在看<鸟哥私房菜>时,突然看到这个命令,之前未接触过,故简单记录学习下,具体的大家可参见man手册.功能说明:设置指令的别名.语 法:alias[别名]=[指令名称]参 数 :若不加任 ...