EVERYTHING HAPPENS FOR THE |

wnsyou

园龄:2年4个月粉丝:19关注:16

2023-06-02 15:25阅读: 26评论: 0推荐: 0

abc275_f Erase Subarrays 题解

Erase Subarrays

题意

有一个长度为 n 的整数序列 a,你可以执行以下操作若干次(可以不执行):

  • 选择序列的一个子段,将子段中的每个数变为 0

对于 1im,请求出是否存在一种操作方法使得 (1jnaj)=i,若存在,输出最小操作次数;否则输出 -1

数据范围

  • 1n,m3000
  • 1ai3000

思路

一眼 dp,我用的是子序列 dp。

说是将序列子段的数变为 0,其实可以看作保留一些数。

  • 状态:dpi,j 表示最后选取数了第 i 个数且数字和为 j
    • 数字和最大有 9×106,总空间 2.7×109,MLE?
    • NO~,由于 m 最大只有 3000,所以第二维也只要开到 3000 即可。
  • 转移:两种情况分类讨论。
    • 选择上一个数,即 dpi1,jai
    • 不选上一个数,即 min1k<i1(dpk,jai+1),因为上一个数不选,所以中间需要一次操作,需 +1
    • 取两种情况最小值即可。
    • 一个小问题,第二中情况需要 O(n) 查找,TLE,所以要用前缀最小值优化。
  • 初始状态:dp0,0=0,而对于 1imdp0,i 需赋值极大值(推荐使用 n)。
  • 目标状态(回答询问):min(min1in(dpi,k+1),dpn,k)
    • 假设当前回答的是第 k 组询问。
    • 解释:如果没有选择最后一个数,那么序列的后缀必然需要一次操作,所以分开考虑。

复杂度

  • 时间:O(n×m)
  • 空间:O(n×m)

Code

点击查看代码
#include <bits/stdc++.h>
using namespace std;
const int N = 3e3 + 10;
int n, x, m, dp[N][N], sum[N][N], ans; // sum 维护前缀最小值
int main () {
ios::sync_with_stdio(0), cin.tie(0);
cin >> n >> m;
for (int i = 1; i <= m; i++) { // 赋值极大值
sum[0][i] = dp[0][i] = n;
}
for (int i = 1; i <= n; i++) {
cin >> x;
for (int j = 0; j < x; j++) {
dp[i][j] = n; // 数字和小于 x 的没有意义,赋值极大值
}
for (int j = x; j <= m; j++) { // 转移
dp[i][j] = dp[i - 1][j - x];
if (i >= 2) {
dp[i][j] = min(dp[i][j], sum[i - 2][j - x] + 1);
}
}
for (int j = 0; j <= m; j++) {
sum[i][j] = min(sum[i - 1][j], dp[i][j]); // 随时维护前缀最小值
}
}
for (int i = 1; i <= m; i++) { // 处理询问
ans = n;
for (int j = n; j; j--) {
ans = min(ans, dp[j][i] + (j < n));
}
cout << (ans < n ? ans : -1) << '\n';
}
return 0;
}

本文作者:wnsyou の blog

本文链接:https://www.cnblogs.com/wnsyou-blog/p/17447141.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wnsyou  阅读(26)  评论(0编辑  收藏  举报
  1. 1 勝利への道 安藤浩和
  2. 2 Minecraft’s End Eric Fullerton
  3. 3 月光曲完整版 贝多芬 云熙音乐
  4. 4 平凡之路 (Live版) 朴树
  5. 5 Minecraft C418
  6. 6 Paradise NiziU
  7. 7 叫我,灰原哀 龙大人不喷火
  8. 8 心机之蛙,一直摸你肚子 ——《名侦探柯南》原创同人曲 炊饭,叶辞樱,温海,寒砧,南柯柯,小茜玛姬,盛姝,阿崔Ac,贝壳初,千湛,兮茶子DaYu,乔慕,黎鹿北,起千温卿,遮阳伞,曲悠
  9. 9 战 歌 此去经年
心机之蛙,一直摸你肚子 ——《名侦探柯南》原创同人曲 - 炊饭,叶辞樱,温海,寒砧,南柯柯,小茜玛姬,盛姝,阿崔Ac,贝壳初,千湛,兮茶子DaYu,乔慕,黎鹿北,起千温卿,遮阳伞,曲悠
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 一殇/白祺/苏少安/苏栗无/公子无央/白刃昏鸦/非欢/清茗/未及昭声/汀帆/赵艹地

作曲 : 沐若

心机之蛙,一直摸你肚子

——《名侦探柯南》原创同人曲

策划:炊饭

作曲:沐若

作词:一殇、白祺、苏少安、苏栗无、公子无央、白刃昏鸦、非欢、清茗、未及昭声、汀帆、赵艹地

编曲:斓音音乐实验室

演唱:叶辞樱、温海、寒砧、南柯、小茜玛姬、墨催、阿崔Ac、贝壳初、千湛、兮茶子、乔慕、黎鹿北、起千温卿、遮阳伞、曲悠

后期:幽谷

题字/美工:徒夫

监制:楠烛

【角色-词作-歌手】

【铃木园子-一殇-叶辞樱】

没有绝对杀机

爱恨调转 对错是唯一

【赤井秀一-白祺-温海】

枪膛里银色子弹

最后的致命一击

-

【毛利小五郎-苏少安-寒砧】

沉睡倒看真相 别小瞧绅士

叼烟来探 糊涂作势

【妃英理-白祺-南柯】

剥离出实情

透过谎言再续 不败传奇

-

【苏栗无-樱/砧/海/柯】

迷茫中看见吗 向谁的真谛

让谁的眼泪 都变成迷离

罪的答案是你 路的尽头是你

-

【怪盗基德-公子无央-小茜玛姬】

Kaitou 这雪白的谜语 将帽檐压低

以滑翔翼敬礼 向手铐和你

【服部平次-白刃昏鸦-墨催】

爱与真相是唯一

十字路口 迷宫的暗语

-

【灰原哀-非欢-乔慕】

回到少年时期 退化至逃离

像天才的过去 深海的鲨鱼

【毛利兰-非欢-起千温卿】

害怕妖怪和雷雨

正义和你 是我的勇气

-

【清茗-姬/催/慕/卿/悠】

天才与罪犯在探试 我已锁定案件起始

黑暗中蛰伏无休止 被贪欲吞噬

黄昏时 布谷钟请柬送至

跋涉深渊之池 侦探们的镇魂诗

-

【目暮十三-一殇-阿崔Ac】

樱花之名起誓

追寻真相 对罪恶通缉

【阿笠博士-苏少安-贝壳初】

古怪是科学正义

热衷将永不歇止

-

【安室透-白刃昏鸦-千湛】

被隐去的名姓 真伪皆归零

谜面重启 逆向独行

【琴酒-未及昭声-兮茶子】

用死亡美学 虔诚将你献祭

无声狙击

-

【汀帆-崔/初/湛/茶】

拨开重重迷题 信仰即期许

平扫僵阵地 守一方境域

且看如何踏破 早已残废终局

-

【江户川柯南-未及昭声-黎鹿北】

真相 折射在那镜片 透视在眼底

借时间逆行 拆穿真凶伏笔

【工藤新一-公子无央-遮阳伞】

骄傲是天才之理

逐一剖析 黑色的缝隙

-

【赵艹地-鹿/伞】

转动命运齿轮 去超越世纪

继续探查疑案 来解开谜题

【贝尔摩德-赵艹地-曲悠】

最喜爱伪装神秘

卷入迷雾 从容扣动扳机

-终-

加载中…

{{tag.name}}

{{tran.text}}{{tran.sub}}
无对应文字
有可能是
{{input}}
尚未录入,我来提交对应文字
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示