首页 > 其他分享 >AT_abc325_f Sensor Optimization Dilemma 题解

AT_abc325_f Sensor Optimization Dilemma 题解

时间:2023-10-31 10:23:20浏览次数:38  
标签:Dilemma 题解 abc325 Big 传感器 max Sensor

AT_abc325_f Sensor Optimization Dilemma 题解

Date 20231025:修复手滑公式 \(\min\)、\(\max\) 写反了。

动态规划。类似背包问题。

朴素算法

记 \((x,y)\) 表示使用 \(x\) 个 (1) 传感器、\(y\) 个 (2) 号传感器。

设 \(f(t,i,j)\) 表示覆盖前 \(t\) 个区间,使用 \((i,j)\) 传感器,是否可行。

枚举第 \(t\) 个区间使用 \((p,q)\) 传感器:

\[\boxed{f(t,i,j)=\max\{f(t-1,i-p,j-q)\times[pL_1+qL_2\ge D_i]\}} \]

状态数 \(NK_1K_2\),转移量 \(K_1K_2\),因此,总时间复杂度为 \(\mathcal{O}(N{K_1}^2{K_2}^2)\),大约为 \(10^{14}\),不可过。

考虑优化

每个状态只记录 \(0/1\) 是不是有点浪费呢?

于是就可以考虑一个经典的状态设计优化,将一个状态放在结果里。

我们可以将 \(f(t,i,j)\) 的 \(j\) 放在结果里。

具体的,设 \(f(t,i)\) 表示考虑前 \(t\) 个区间,使用 \(i\) 个 (1) 传感器,最少要使用的 (2) 传感器数量。

明显的,结果为 \(\min\limits_{i=1}^{K_1}\{f(n,i)\}\space(f(n,i)\le K_2)\).

其实这个式子也是有单调性的,但是由于 \(K\le10^3\),我们可以不用考虑。

考虑转移,也不复杂,与朴素算法类似,我们枚举第 \(t\) 个区间使用 \(k\) 个 \((1)\) 传感器,那么给 \((2)\) 号传感器留了 \(\max(D_i-kL_1,0)\) 的空间:

\[\boxed{f(i,j)=\min\limits_{k=0}^j\Big\{f(i-1,j-k)+\Big\lceil\dfrac{\max(D_i-kL_1,0)}{L_2}\Big\rceil\Big\}} \]

状态数 \(NK_1\),转移量 \(K_1\),因此,总时间复杂度为 \(\mathcal{O}(N{K_1}^2)\),大约为 \(10^8\),可过。

代码:https://atcoder.jp/contests/abc325/submissions/46898766

标签:Dilemma,题解,abc325,Big,传感器,max,Sensor
From: https://www.cnblogs.com/RainPPR/p/solution-at-abc325-f.html

相关文章

  • AT_abc325_g offence 题解
    AT_abc325_goffence题解一道不难但是需要想一想的区间DP。有一个比较复杂的例子:ooofofxxx,简单的分析可知,一个of后面删除多少,与其前、后都有关,于是考虑区间DP。想到这里,其实问题已经解决一半了。状态设计设\(f(l,r)\)为闭区间\([l,r]\)经过操作之后的最小长度。注......
  • [CSP-S2020] 儒略日 题解
    [CSP-S2020]儒略日今儿终于做掉困扰多年的题目了,其实想好细节也不难。容易发现儒略历和格里高利历的润年判断方式不一样,并且中间有消失的十天,计算起来相当不方便。所以我们可以首先计算出\(-4713.1.1\)~\(1582.10.4\)会经过多少天,可以通过一天一天暴力跳的方法计算出需要\(......
  • P4309 [TJOI2013] 最长上升子序列题解
    P4309[TJOI2013]最长上升子序列题解正文单调队列?单调锤子队列!!本题的操作可以省略成:单点修改区间查询好极了,此时我们有两种选择:线段树和树状数组,(平衡树,真不会,下一位因为不需要其他操作,所以我们还是选择更小巧更可爱的树状数组吧。关于vectorvector的insert操作支......
  • 题解 ABC326G【Unlock Achievement】
    题解ABC326G【UnlockAchievement】problem有\(n\)项属性,第\(j\)个属性的等级\(l_j\)初始为\(1\),每提升一级花费\(c_j\)的钱。又有\(m\)项成就,第\(i\)项成就要求对于所有\(1\leqj\leqn\),都要\(l_j\geqL_{i,j}\),如果满足所有要求,获得\(a_i\)的钱。求你最多......
  • ADASTRNG - Ada and Substring 题解
    ADASTRNG-AdaandSubstring题解题目描述给定一个小写字符串。输出\(26\)个数,代表以\(\texttt{a}\sim\texttt{z}\)开头的本质不同的子串个数。题目分析高度数组模板题。可以想到将以每个字符开头的本质不同的子串数目转化为:以每个字符开头的所有字串数目减去以每......
  • Luogu P4168 [Violet] 蒲公英 题解
    题目链接[Violet]蒲公英分析可以先将\(a[i]\)离散化然后考虑分块对于询问\(x,y\),\(x\)属于\(p\),\(y\)属于\(q\)当\(q-p<=1\)时直接暴力枚举即可,时间复杂度为\(O(\sqrt{n})\)\(else\)如图中间为分好块的地方我们发现,\(ans\)只可能为中间的众数或两边的......
  • 2023年10月第四周题解------输入与输出
     问题A:ly喜欢玩石头 解题思路题目告诉我们(1<=a,b<=1e9),那么int类型就够了。因为这两个数相加最大为20亿定义两个变量a和b输入a和b的值打印a加b的值#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<time.h>intmain......
  • 题解:「NOIP2022 提高组」种花
    题解:「NOIP2022提高组」种花题目大意:给定一个\(n\timesm\)的01矩阵,0表示可以种花,1表示土坑(无法种花),现在要在图上种出一个C型或F型(C,F横着的两条线的长度都可以不同,但一定是面向右边的),现在问你种C和F分别有多少种方案(除了这个形状外不能在任何地方种花),多组数据,\(T\leq5\)。......
  • 【梦熊联盟】10月28日 NOIP十连测 第五场 题解
    目录T1男女排队简要题意:题解:T2树上最多不相交路径简要题意:题解:T3生日T4组队比赛简要题意:题解:T1男女排队简要题意:求长度为\(n\)的01序列不包含字串101或111的个数。\((n\leqslant10^{18})\)题解:一开始往容斥的思路去想,但是在推式子的时候发现其实很难容斥掉一个子串......
  • 常见问题解决 --- 安卓12关闭phantom processes killer杀后台功能
    1.adb连接成功后,执行adbdevices2.执行adbshell3.执行device_configset_sync_disabled_for_testspersistentdevice_configputactivity_managermax_phantom_processes2147483647settingsputglobalsettings_enable_monitor_phantom_procsfalse......