洛谷 P4342 [IOI1998]Polygon
题目传送门
解题思路:
一道环形dp,只不过有个地方要注意,因为有乘法,两个负数相乘是正数,所以最小的数是负数,乘起来可能比最大值大,所以要记录最小值(这道题是紫题的原因).
AC代码:
#include<cstdio>
#include<iostream>
#include<cstring> using namespace std; int n,a[],maxf[][],minf[][],ans = -;
char c[]; int main()
{
scanf("%d",&n);
for(int i = ;i <= n; i++) {
cin >> c[i] >> a[i];//char和string最好用cin,因为用了scanf调了好长时间
a[i+n] = a[i];
c[i+n] = c[i];
}
memset(minf,0x80,sizeof(minf));//最小值
memset(maxf,0x3f,sizeof(maxf));//最大值
for(int i = ;i <= n + n - ; i++) {
maxf[i][i] = a[i];
minf[i][i] = a[i];
}
for(int p = ;p <= n; p++)
for(int i = ;i + p - <= n + n - ; i++){
int j = i + p - ;
for(int k = i + ;k <= j; k++)
if(c[k] == 'x') {//如果是乘
minf[i][j] = max(minf[i][j],max(minf[i][k-] * minf[k][j],max(maxf[i][k-] * minf[k][j],max(minf[i][k-] * maxf[k][j],maxf[i][k-] * maxf[k][j]))));
maxf[i][j] = min(maxf[i][j],min(minf[i][k-] * minf[k][j],min(maxf[i][k-] * minf[k][j],min(minf[i][k-] * maxf[k][j],maxf[i][k-] * maxf[k][j]))));
}
else {
minf[i][j] = max(minf[i][j],minf[i][k-] + minf[k][j]);
maxf[i][j] = min(maxf[i][j],maxf[i][k-] + maxf[k][j]);
}
}
for(int i = ;i <= n; i++)
ans = max(ans,minf[i][i+n-]);
printf("%d\n",ans);
for(int i = ;i <= n; i++)
if(minf[i][i+n-] == ans)
printf("%d ",i);
return ;
}
洛谷 P4342 [IOI1998]Polygon的更多相关文章
- 【洛谷P4342】[IOI1998]Polygon
Polygon 比较裸的环形DP(也可以说是区间DP) 将环拆成链,复制到后面,做区间DP即可 #include<iostream> #include<cstdio> usin ...
- 【洛谷 P4342】[IOI1998]Polygon(DP)
题目链接 题意不再赘述. 这题和合并石子很类似,但是多了个乘法,而乘法是不满足"大大得大"的,因为两个非常小的负数乘起来也会很大,一个负数乘一个很大的整数会很小,所以我们需要添加一 ...
- P4342 [IOI1998]Polygon
题意翻译 题目可能有些许修改,但大意一致 多边形是一个玩家在一个有n个顶点的多边形上的游戏,如图所示,其中n=4.每个顶点用整数标记,每个边用符号+(加)或符号*(乘积)标记. 第一步,删除其中一条边 ...
- luogu P4342 [IOI1998]Polygon
IOI早期这么多dp? 题目要求断掉环上的一边,我们可以断环为链,开两倍数组 容易想到dp,设\(f_{i,j}\)为区间\([i,j]\)的最大值,然后就是个枚举断点的区间dp 不过可能会有负数出现 ...
- 洛谷 P1856 【Picture】
题目描述 N(N<5000) 张矩形的海报,照片和其他同样形状的图片贴在墙上.它们的边都是垂直的或水平的.每个矩形可以部分或者全部覆盖其他矩形.所有的矩形组成的集合的轮廓称为周长.写一个程序计算 ...
- 洛谷 P3187 BZOJ 1185 [HNOI2007]最小矩形覆盖 (旋转卡壳)
题目链接: 洛谷 P3187 [HNOI2007]最小矩形覆盖 BZOJ 1185: [HNOI2007]最小矩形覆盖 Description 给定一些点的坐标,要求求能够覆盖所有点的最小面积的矩形, ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
随机推荐
- Codeforces 556A:Case of the Zeros and Ones
A. Case of the Zeros and Ones time limit per test 1 second memory limit per test 256 megabytes input ...
- Oracle rownum用法、分页
转载:ORACLE 中ROWNUM用法总结! 第一部分 1.对于 Oracle 的 rownum 问题,很多资料都说不支持 >, >= , =, between...and ,只能用 ...
- 升级安装go1.13.5
运行文件时报错 verifying github.com/mattn/go-isatty@v0.0.10-0.20190818123653-bf9a1dea1961/go.mod: github.co ...
- java web 最方便的配置filter方法,filter到底怎么配置?
小白学习的艰辛历程! 我只说最新版本的eclipse自从servelt3.0以后 servelt 和filter 都不用到web.xml中配置,个人对servelt和filter理解不太深入,但是自从 ...
- spring boot 连接Mysql介绍
Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...
- Django配置日志
在settings里配置 # 日志配置 LOGGING = { # 是python的版本 'version': 1, # 是否禁用 'disable_existing_loggers': False, ...
- sprngmvc+restFul 请求报错:404
服务端代码 control类 @RequestMapping(value="getUser",method = RequestMethod.POST) @ResponseBody ...
- 使用BurpSuite和Hydra爆破相关的服务(9.25 第十一天)
使用BP和Hydra爆破相关的服务 Hydra:九头蛇,开源的功能强大的爆破工具,支持的服务有很多,使用Hydra爆破C/S架构的服务. 使用BurpSuite爆破web服务 DVWA:web应用程序 ...
- 自定义css
/** * 重写FrozenUI */ /** * 按钮 */ body { background-color: #F2F2F2; } @media screen and (-webkit-min-d ...
- 19 01 16 djano 视图以及url
视图 后台管理页面做好了,接下来就要做公共访问的页面了.当我们刚刚在浏览器中输入 http://127.0.0.1:8000/admin/ 之后,浏览器显示出了后台管理的登录页面,那有没有同学想过这个 ...