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可以从这串数字的两端任意选数字,一次只能 ...
随机推荐
- 多文件上传ajax jquery
jquery的ajaxSubmit()和多文件上传 <%@ page language="java" import="java.util.*" pageE ...
- 微信小程序特殊字符转义方法——&转义&等等
在我编写公司小程序的过程中,有一次在网页端添加了一张图片,结果在小程序端访问失败了,究其原因,竟然是因为该图片名称中有一个“&”符号,网页端添加后,自动转义成了“&”存储到了数据库.当 ...
- CSS3之 transform和animation区别
CSS3 有3种和动画相关的属性:transform, transition, animation.其中 transform 描述了元素静态样式.而transition 和 animation 却都能 ...
- 移动端弹性滑动以及vue记录滑动位置
-webkit-overflow-scrolling介绍 -webkit-overflow-scrolling: auto | touch; auto: 普通滚动,当手指从触摸屏上移开,滚动立即停止 ...
- 利用ProgressBar实现旋转loading动画
1.res\anim.loading.xml <?xml version="1.0" encoding="utf-8"?> <LinearLa ...
- Deutsch lernen (01)
Was macht Martin? - Um 8.00 Uhr steht martin auf. aufstehen - aufstand - ist aufgestanden 起床 Um 6 Uh ...
- python2打印list中文内容防乱码
zh_ls = ['人','民'] print str(zh_ls).decode("string_escape")
- dubbo之静态服务
有时候希望人工管理服务提供者的上线和下线,此时需将注册中心标识为非动态管理模式 <dubbo:registry address="10.20.141.150:9090" dy ...
- (转) OpenLayers3基础教程——OL3 介绍control
http://blog.csdn.net/gisshixisheng/article/details/46761535 概述: 本文讲述的是Ol3中的control的介绍和应用. OL2和OL3 co ...
- 前端工具gulp
最近在写一个新的项目,用到了新框架,主要是:react+webpack.里面还用到了一个前端工具——gulp. gulp在项目里的作用是打包静态资源.编译less,压缩css等.js并不在处理之列(不 ...