石子合并 搞笑

#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 ;
}

金字塔

最新文章

  1. 【先定一个小目标】在Windows下的安装Elasticsearch
  2. / fluxChatDemo / 系列 ——fluxDemoChat 组件编写
  3. yii2 控制器、方法命名规范和访问路由
  4. WCF会话(Session)与实例(Instance)管理
  5. FMDB实用攻略
  6. css中table tr:nth-child(even)改变tr背景颜色: IE7,8无效
  7. Spring学习笔记之方法注入
  8. jq中阻止元素的默认行为
  9. Struts2国际化文件乱码解决
  10. 命令行下上传文件到iOS软件 专业文件管理/gplayer
  11. 「Poetize3」导弹防御塔
  12. Activiti工作流学习-----基于5.19.0版本(8)
  13. 40 个超棒的免费 Bootstrap HTML5 网站模板
  14. Putty使用公钥认证时,报错:Disconnected: No supported authentication methods available(server sent:public key) 问题的解决
  15. 获取信息的有关Windows API(最有意思是OpenProcess和GetProcessMemoryInfo)
  16. PAT乙级-1056. 组合数的和(15)
  17. Python爬虫之正则表达式(1)
  18. beta冲刺6/7
  19. Jsの练习-数组其他常用方法 -map() ,filter() ,every() ,some()
  20. 使用Git Bash从Git上下载代码到本地以及上传代码到码云Git

热门文章

  1. SQLServer2008 将“单个用户”改为“多用户”
  2. ArcGIS API For Android Errors汇总
  3. fatal error C1083: 无法打开包括文件:“stdio.h
  4. (转)基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理
  5. springboot 多数据源的实现
  6. Spring+SprinMVC配置学习总结
  7. 去掉二级页面 tabs 菜单, 修改返回按钮
  8. Nginx Rewrite(伪静态)
  9. 【ownCloud】添加信任域
  10. 08.Web服务器-2.HTTP协议介绍