dp
诠释你的Mr贾
这个作者很懒,什么都没留下…
展开
-
算法笔记【问题 C: 合唱队形】
题目链接 #include<iostream> using namespace std; int N; const int MAXN=10010; int num[MAXN]; int decc[MAXN]; int incc[MAXN]; int main() { while(scanf("%d",&N),N) { for(int i=1;i<=N;i++) scanf("%d",&num[i]); for(int i=1;i<=N;i原创 2021-07-16 08:52:05 · 115 阅读 · 0 评论 -
算法笔记【问题 B: 拦截导弹】
问题链接 #include<iostream> using namespace std; #include<cstring> const int MAXN=130; int k; int num[MAXN]; int dp[MAXN]; int main() { while(scanf("%d",&k),k) { memset(dp,0,sizeof(dp)); for(int i=1;i<=k;i++) { scanf("%d",&num原创 2021-07-15 20:35:31 · 108 阅读 · 0 评论 -
算法笔记【问题 A: 第二题】
问题链接 1.dfs解法 #include<iostream> #include<cmath> #include<string> using namespace std; const int MAXN=1005; string str; int num[MAXN]; int sum; int minn=sum; int maxnn; int sizee; int ok=1; void dfs(int now,int ss) { if(ok) retu原创 2021-07-15 20:07:19 · 76 阅读 · 0 评论 -
压缩编码 区间dp
压缩编码 区间dp 题解 f[i][j] = min(f[i][k] + f[k+1][j] + sum[i][j]) #include<iostream> using namespace std; #include<cstring> #include<algorithm> #define ll long long int t[1005]; ll f[1005][1005]; ll sum[1005]; int n; int main() { cin>&原创 2021-02-23 13:29:44 · 108 阅读 · 0 评论 -
网络延时 DFS BFS DP
网络延时 DFS BFS DP DP 思路: dfs 作用:返回以该点为根,到叶子节点的最大长度加1 即加上该顶点上面一条边 , 由递推公式:dfs(i)=max{dfs(j)}+1 dfs(叶子节点)=1 #include<iostream> using namespace std; #include<cstring> int idx; int e[20005]; int h[20005]; int ne[20005]; int ans; int n,m; void ad原创 2021-02-21 21:19:46 · 221 阅读 · 0 评论 -
有趣的数 dp
有趣的数 dp 题解 注意开long long 某则乘以2可能溢出 #include<iostream> using namespace std; const int p=1e9+7; int f[1005][7]; int n; int main() { cin>>n; for(int i=1;i<=n;i++) { f[i][0]=1; f[i][1]=(f[i-1][0]+f[i-1][1])%p; f[i]原创 2021-02-16 21:39:14 · 53 阅读 · 0 评论 -
计算系数 动态规划 费马小定理 组合数学
计算系数 动态规划 费马小定理 组合数学 解 1 费马小定理 #include<iostream> using namespace std; long long a,b,k,m,n; const int p=10007; long long fact(long long x,long long y) { long long ans=1; long long t=x; while(y) { if(y&1) ans=ans*t%p;原创 2021-02-11 00:26:59 · 70 阅读 · 0 评论 -
乌龟棋 动态规划
乌龟棋 动态规划 思路: 用f[i][j][k][l]来表示用了i张1卡,j张2卡,k张3卡,l张4卡时的最大分数,最终的答案就是f[b[1]][b[2]][b[3]][b[4]]. 可以得出:f[i][j][k][l] = max(f[i-1][j][k][l],f[i][j-1][k][l],f[i][j][k-1][l],f[i][j][k][l-1])+a[i+2j+3k+4*l+1] #include<iostream> using namespace std; int N,M;原创 2021-02-09 21:34:13 · 102 阅读 · 0 评论