0x53 区间DP
石子合并 搞笑
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std; int s[];
int f[][];
int main()
{
int n,x;
scanf("%d",&n);
s[]=;
for(int i=;i<=n;i++)
scanf("%d",&x), s[i]=s[i-]+x, f[i][i]=; for(int L=;L<=n;L++)
{
for(int l=;l+L-<=n;l++)
{
int r=l+L-; f[l][r]=;
for(int i=l;i<r;i++)
{
f[l][r]=min(f[l][r],f[l][i]+f[i+][r]+s[r]-s[l-]);
}
}
}
printf("%d\n",f[][n]);
return ;
}
石子合并
poj1179 神经。。出答案的时候n写成n-1wa了两次
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std; int a[]; char c[],sc[];
int mx[][],mn[][]; int aslen,as[];
int main()
{
int n,x;
while(scanf("%d",&n)!=EOF)
{
for(int i=;i<=n;i++)
{
scanf("%s%d",sc+,&a[i]);
c[i-]=sc[];
mx[i][i]=mn[i][i]=a[i];
if(i!=n)
{
c[i-+n]=c[i-];
a[i+n]=a[i];
mx[i+n][i+n]=mn[i+n][i+n]=a[i];
}
} for(int L=;L<=n;L++)
{
for(int l=;l+L-<=*n-;l++)
{
int r=l+L-;
mx[l][r]=-;
mn[l][r]=;
for(int i=l;i<r;i++)
{
if(c[i]=='t')
{
mx[l][r]=max(mx[l][r],mx[l][i]+mx[i+][r]);
mn[l][r]=min(mn[l][r],mn[l][i]+mn[i+][r]);
}
else
{
mx[l][r]=max(mx[l][r],max(mx[l][i]*mx[i+][r],mn[l][i]*mn[i+][r]));
mn[l][r]=min(mn[l][r],min(mx[l][i]*mx[i+][r],mn[l][i]*mn[i+][r]));
}
}
}
} int mmax=mx[][n];
aslen=, as[++aslen]=;
for(int i=;i<=n;i++)
if(mx[i][i+n-]>mmax)
{
mmax=mx[i][i+n-];
aslen=, as[++aslen]=i;
}
else if(mx[i][i+n-]==mmax) as[++aslen]=i; printf("%d\n",mmax);
for(int i=;i<=aslen;i++)printf("%d ",as[i]);
printf("\n");
}
return ;
}
poj1179
金字塔 怎么这里的题要么简单得要死要么难得要死啊 这个搜索顺序就。。和树上差分没撒区别嘛,我的想法是区间视作子树合并就乘起来
虽然想法好像很对而我还是太naive了不会写
对于一个区间[l,r]假如ss[l]==ss[r],那么我们可以把l+1~r-1视作一棵子树
对于当前询问的区间,枚举断点i,l+1~i形成一棵子树,让i+1~r去继续分割,同时,这样可以保证没有重复,因为1~i每次的大小不一样
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const int mod=1e9; char ss[];
int f[][];
int dfs(int l,int r)
{
if(l>r||ss[l]!=ss[r])return ;
if(l==r)return ;
if(f[l][r]!=-)return f[l][r]; f[l][r]=;
for(int i=l+;i<r;i++)
f[l][r]=( ((LL)f[l][r]) + ((LL)dfs(l+,i)) * ((LL)dfs(i+,r)) )%mod;
return f[l][r];
}
int main()
{
scanf("%s",ss+);
memset(f,-,sizeof(f));
printf("%d\n",dfs(,strlen(ss+)));
return ;
}
金字塔
0x53 区间DP的更多相关文章
- 【BZOJ-4380】Myjnie 区间DP
4380: [POI2015]Myjnie Time Limit: 40 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 162 Solved: ...
- 【POJ-1390】Blocks 区间DP
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5252 Accepted: 2165 Descriptio ...
- 区间DP LightOJ 1422 Halloween Costumes
http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...
- BZOJ1055: [HAOI2008]玩具取名[区间DP]
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1588 Solved: 925[Submit][Statu ...
- poj2955 Brackets (区间dp)
题目链接:http://poj.org/problem?id=2955 题意:给定字符串 求括号匹配最多时的子串长度. 区间dp,状态转移方程: dp[i][j]=max ( dp[i][j] , 2 ...
- HDU5900 QSC and Master(区间DP + 最小费用最大流)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5900 Description Every school has some legends, ...
- BZOJ 1260&UVa 4394 区间DP
题意: 给一段字符串成段染色,问染成目标串最少次数. SOL: 区间DP... DP[i][j]表示从i染到j最小代价 转移:dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k ...
- 区间dp总结篇
前言:这两天没有写什么题目,把前两周做的有些意思的背包题和最长递增.公共子序列写了个总结.反过去写总结,总能让自己有一番收获......就区间dp来说,一开始我完全不明白它是怎么应用的,甚至于看解题报 ...
- Uva 10891 经典博弈区间DP
经典博弈区间DP 题目链接:https://uva.onlinejudge.org/external/108/p10891.pdf 题意: 给定n个数字,A和B可以从这串数字的两端任意选数字,一次只能 ...
随机推荐
- poj1101 the game 广搜
题目大意: 类似于连连看,问从起点到终点最少需要几条线段. 规则: 1.允许出界. 2.空格的地方才能走. 分析: 题目做下来发现没有卡时间,所以主要还是靠思路.也就是说不用考虑离线算法.直接以每个起 ...
- 用List表示多重性
练习目标-在类中使用List作为模拟集合操作: 在本练习中,将用List实现银行与客户间的多重关系. 任务 对银行来说,可添加Bank类. Bank 对象跟踪自身与其客户间的关系.用Customer对 ...
- Python 遍历目录
代码: 1.递归使用遍历目录 import os def scanfile(path): filelist = os.listdir(path) allfile = [] for filename i ...
- OpenCV中IplImage/CvMat/Mat转化关系
原文链接:http://www.cnblogs.com/summerRQ/articles/2406109.html 如对内容和版权有何疑问,请拜访原作者或者通知本人. opencv中常见的与图像操作 ...
- token session cookie
token 登录握手与身份验证: cookie.session 记录会话状态 兼有 token的功能: cookie session 功能更强大. 所有这些都是为了便捷和密码安全考虑.
- jq 替换DOM layeui 不刷新
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 【ng-zorro-antd】加入in-memory-web-api插件后icon不显示
在ng-zorro-antd框架下,根据angular的技术文档demo,加入in-memory-web-api后icon不显示 解决方案: 在app.module.ts中的imports:[]加入 ...
- 微信小程序跳转以及跳转的坑
一.首先小程序的跳转方法有一下几种 js控制跳转 // 保留当前页面,跳转到应用内的某个页面 wx.navigateTo({ url: '../blueberry/blueberry' }); // ...
- 浅谈Json数据格式
我们先来看下w3cschool对json的定义: JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XM ...
- Scala语言学习笔记——方法、函数及异常
1.Scala 方法及函数区别 ① Scala 有方法与函数,二者在语义上的区别很小.Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量.换句话来说在类中定义的函数即是方法 ② Scal ...