当前位置: 首页 > news >正文

每日小小的打卡

IOI 1998] Polygon - 洛谷

这是一道区间dp问题,读完题目,很容易想到要断环成链,设$f[i][j]$为i 到 j的值最高分,不难发现如下状态方程:

$f[i][j] = max(f[i][k] + f[k][j])$

$f[i][j] = max(f[i][k] × f[k][j])$

仔细考虑,加法这样做是没有问题的,但是减法的话,由于负数,会出现一下错误

我们可以再用一共$g[i][j]$来维护最小值

加法还是一样的:

$g[i][j] = min(g[i][k] + g[k + 1][j])$

然而对于乘法,很明显有四个组合:

1.lmax*rmax

2.lmax*rmin

3.lmin*rmin

4.lmin*rmin

max = max(1,2,3,4),min = min(1,2,3,4)

代码如下:

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 110;
const int INF = 0x3f3f3f3f;int a[N];
char c[N];
int n;
int f[N][N], g[N][N];int main() {cin >> n;for (int i = 1; i <= n; i++) {cin >> c[i] >> a[i];c[n + i] = c[i];a[n + i] = a[i];}memset(f, -0x3f, sizeof f);memset(g, 0x3f, sizeof g);for (int i = 1; i <= (n << 1); i++) {f[i][i] = g[i][i] = a[i];}for (int len = 2; len <= n; len++) {for (int i = 1; i + len - 1 <= (n << 1); i++) {int j = i + len - 1;for (int k = i; k < j; k++) {if (c[k + 1] == 't') {f[i][j] = max(f[i][j], f[i][k] + f[k + 1][j]);g[i][j] = min(g[i][j], g[i][k] + g[k + 1][j]);} else {int vals[4] = {f[i][k] * f[k + 1][j],f[i][k] * g[k + 1][j],g[i][k] * f[k + 1][j],g[i][k] * g[k + 1][j]};for (int t = 0; t < 4; t++) {f[i][j] = max(f[i][j], vals[t]);g[i][j] = min(g[i][j], vals[t]);}}}}}int ans = -INF;int first_edges[N], cnt = 0;for (int i = 1; i <= n; i++) {int result = f[i][i + n - 1];if (result > ans) {ans = result;cnt = 0;first_edges[cnt++] = i;} else if (result == ans) {first_edges[cnt++] = i;}}cout << ans << endl;for (int i = 0; i < cnt; i++) {if (i > 0) cout << " ";cout << first_edges[i];}cout << endl;return 0;
}
http://www.jsqmd.com/news/1202841/

相关文章:

  • 基于DeepSeek+Dify构建智能知识库的实践指南
  • Android应用完整性验证:Play Integrity API Checker原理与实战指南
  • Redocusaurus与Redocly集成:提升OpenAPI规范质量的完整指南
  • C++ 并发无锁队列实现:从原理到高性能设计
  • Ascend C UnitFlag特性说明
  • 用ChatGPT做读书笔记,效率提升300%?实测17种场景下的精准提示词+错误避坑清单(含认知科学验证数据)
  • 资深电源工程师的十大核心特征与实战经验
  • BLDC电机核心技术解析与控制系统设计
  • 大模型GEO内容更新频率:3个节奏规律提收录权重,零成本提30%引用率附更新计划表 - 曌选科技官方账号
  • 2026 武汉奢侈品回收实测|楚河汉街 500 平连锁实体店全流程体验,闲置名包变现不踩坑完整攻略 - 微城市网络
  • 解锁手机App的隐藏入口:常用URL Scheme深度解析与应用
  • RabbitMQ VirtualHost 的权限隔离与多租户实战
  • 2026年7月苹果云手机个人用户排行榜:一个人用,怎么选不踩坑? - 米諾
  • 企业级项目管理软件选型指南:本地部署与信创合规实战
  • 2026年7月最新亨得利官方服务项目及价格查询|全部地址及热线电话权威信息公示 - 亨得利官方博客
  • 2026年7月广州戴尔笔记本维修服务指南|故障初检、方案确认与交付|地址电话核对|7月16日资料更新 - 数码品牌推荐
  • C/C++指针编程全解析:从基础到高级应用与内存管理
  • ngx_http_range_body_filter
  • OpenWireless证书管理指南:自签名SSL证书配置与安全
  • CANN/asc-devkit asc_copy寄存器复制函数
  • 2026 SCI论文辅导机构横评:6家医理工合规平台深度实测! - 小艾学姐
  • 2026年 镇江船用控制变压器厂家:稳定可靠的船舶电气核心供应商 - 品牌发掘
  • C++未来十年三大演进支柱:高效、安全、并发
  • 出轨修复咨询哪家靠谱:谋仕心理资质齐全 - 晴光转树
  • Operator 配额管理详解
  • Kubernetes Dashboard 不想裸奔?Headlamp 本地管理集群,用 cpolar 临时给同事看只读面板
  • 2026 年当下,泉州比较好的衬胶钢管源头厂家哪家靠谱,揭秘!这个工业材料如何悄悄改变你的成本结构 - 领域鉴赏官
  • 服装店线上退换货方便吗?四个平台售后规则对比指南 - Chencen
  • 2026年7月广州机械革命笔记本到店维修指南|高性能机型登记和门店资料卡|地址电话核对|7月16日资料更新 - 品牌售后
  • 靠谱的软件开发团队 - 米諾