首页 > 其他分享 >[CF2025D]Attribute Checks 解题思路

[CF2025D]Attribute Checks 解题思路

时间:2024-10-22 21:01:13浏览次数:6  
标签:5010 le int Attribute 决策 pot1 Checks CF2025D dp

题目大意(翻译来自luogu)

给定两个正整数 \(n\) 和 \(m\),以及一个长度为 \(n\) 的数组 \(r\)。保证 \(-m \le r_i \le m\),并且恰好有 \(m\) 个 \(r_i\) 为 \(0\)。

你有两个初始值均为 \(0\) 的变量 \(I\) 和 \(S\),接下来在第 \(i\) 秒中(\(1 \le i \le n\))将发生如下事件:

  • 如果 \(r_i > 0\) 并且此时 \(I \ge |r_i|\) ,则你获得一分。

  • 如果 \(r_i < 0\) 并且此时 \(S \ge |r_i|\),则你获得一分。

  • 如果 \(r_i = 0\),则你需要从以下两种决策中选择一种:将 \(I\) 的值增加 \(1\),或者将 \(S\) 的值增加 \(1\)。

求你最终能获得分数的最大值

数据范围

\(0\leq m \leq 5000\)
\(m < n \leq 2\cdot 10^6\)

时空限制
  • 2.5 seconds
  • 512 megabytes

思路

注意到这里 \(m\) 的范围和时间限制,明显可以考虑 \(O(m^2)\) 时间复杂度的算法。
我们发现,只有当 \(r_i = 0\) 的时候才能使 \(S,I\) 的值改变,换言之,每次在 \(r_i\) 处进行决策。
考虑dp,我们可以建立数组 \(dp[i][j]\) 表示 \(I=i ,S=j\) 时候的获得分数的最大值,显然,这时候是第 \(i+j\) 次决策。
每一次决策我们可以从 \(dp[i-1][j]\) 和 \(dp[i][j-1]\) 转移而来。
我们将 \(0\) 定义为“决策数”
每一次决策过后,会增加一些分数,如果 \(I\) 增加为 \(I+1\),那么增加的分数将会是在这个“决策数”之后的 \(r_i=I+1\) 的数量,因为当上一次对 \(I\) 进行增加时,已经将 \(r_i=I\) 所获的分数加过了。
对于获得每一次决策后,这个“决策数”后面每一个数字的数量 \(m^2\) 打桶即可。

	#include<bits/stdc++.h>
using namespace std;
#define ll long long
int pot1[5010][5010],pot0[5010][5010];int n,m,cnt;
//pot1[i][j]代表第m-i次决策的r后面大于0的数字j 的个数
//pot1[i][j]代表第m-i次决策的r后面小于0的数字,绝对值j 的个数
ll dp[5010][5010];
int main(){
    //freopen("read.in","r",stdin);
    stack<ll>st;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;++i){
        ll l;
        scanf("%lld",&l);
        st.push(l);
    }
    while(!st.empty()){
        int l=st.top();
        st.pop();

        if(l==0){
            cnt++;
            for(int i=0;i<=m;++i)pot1[cnt][i]=pot1[cnt-1][i],pot0[cnt][i]=pot0[cnt-1][i];
        }
        if(l<0)pot0[cnt][-l]++;
        if(l>0)pot1[cnt][l]++;
    }
    for(int i=1;i<=m;++i){
        for(int j=0;j<=m;++j){
            if(j-1>=0)dp[j][i-j]=max(dp[j][i-j],dp[j-1][i-j]+pot0[m-i][j]);
            if(i-j-1>=0)dp[j][i-j]=max(dp[j][i-j],dp[j][i-j-1]+pot1[m-i][i-j]);
        }
    }
    ll mxn=0;
    for(int i=0;i<=m;++i)mxn=max(mxn,dp[i][m-i]);
    printf("%lld",mxn);
}

标签:5010,le,int,Attribute,决策,pot1,Checks,CF2025D,dp
From: https://www.cnblogs.com/MisakaE/p/18493677

相关文章

  • 论文阅读-ArtVLM: Attribute Recognition Through Vision-Based Prefix Language Mode
    摘要识别并从对象中分离视觉属性是许多计算机视觉应用的基础。虽然像CLIP这样的大型视觉-语言表示在很大程度上解决了零样本对象识别的任务,但零样本视觉属性识别仍然是一个挑战,因为CLIP通过对比学习得到的视觉-语言表示无法有效捕捉对象-属性依赖关系。在本文中,我们针对这一弱点......
  • Educational Codeforces Round 170 (Rated for Div. 2) D.Attribute Checks (没有完全
    算法显然为dp状态设计\(dp_{i,j}\)表示在第\(i\)个获得能力点的地方,之前智慧能力值为\(j\),时的最大分数状态转移显然需要从\(dp_{i-1,j}\)转移而来枚举\(j\in[0,i)\)则有(注意取\(\max\)操作要与自己相比较)设第\(i-1\)个能力点到第\(i\)个能......
  • D. Attribute Checks
    链接:https://codeforces.com/contest/2025/problem/D题目:思路:动态规划。dp[i]记录当前0分配了i个给智力所能达到的最大分数。利用strength[N],intel[N]表示小于等于i的个数,所以加上前缀和赋值给dp[i],然后清空两个数组,方便这个零到下个零的这段。代码:#include<iostream>usi......
  • 【Spring】获取Cookie和Session(@CookieValue()和@SessionAttribute())
    获取Cookie传统获取Cookie这是没有Spring的时候,用Servlet来获取(获取所有的Cookie)SpringMVC是基于ServletAPI构建的原始Web框架,也是在Servlet的基础上实现的@RequestMapping("/getcookie")publicStringgetCookie(HttpServletRequestrequest, ......
  • HarmonyOS开发——编译报错“The reason and usedScene attributes are mandatory for
    问题现象:DevEcoStudio编译失败,提示“ThereasonandusedSceneattributesaremandatoryforuser_grantpermissions”。问题原因:从DevEcoStudioNEXTDeveloperPreview2版本开始新增规则:APP包中,所有entry和featurehap的module下的requestPermissions权限清单必须指定(......
  • AttributeError: ‘ImageDraw‘ object has no attribute ‘textsize‘
    在进行画框的时候发现代码报错了,查询原因后发现我的pillow版本删除了该方法有两种处理办法:1、就是降低版本2、就是根据新版本修改代码,我这里主要来介绍一下新版本如何修改代码,把textsize改为textbbox首先先了解一下原先这个textsize方法的作用查看官方文档给的示例 from......
  • module collections has no attribute Hashable PyDocx 库报错
    项目背景在测试PyDocx代码时```pythonfrompydocximportPyDocXhtml=PyDocX.to_html("test.docx")withopen("test.html",'w',encoding="utf-8")asf:f.write(html)```发生错误:Traceback(mostrecentcalllast):File"D:......
  • 万象更新 Html5 - css: selector 选择器: 属性选择器(attribute selector)
    源码https://github.com/webabcd/Html5作者webabcd万象更新Html5-css:selector选择器:属性选择器(attributeselector)示例如下:css\src\selector\demo2.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8">......
  • ERROR StatusLogger NoSql contains an invalid element or attribute "MongoDb"
    报错:ERRORStatusLoggerNoSqlcontainsaninvalidelementorattribute"MongoDb"ERRORStatusLoggerNoSQLprovidernotspecifiedforappender[databaseAppender].ERRORStatusLoggerNullobjectreturnedforNoSqlinAppenders.ERRORStatusLoggerUnab......
  • Deep-Live-Cam部署过程中出现AttributeError: ‘NoneType‘ object has no attribute
    安装Deep-Live-Cam过程中,我下载好了全部的requirements.txt里面的需要用到的第三方库,之后运行后成功出现以下界面,但是报错AttributeError:'NoneType'objecthasnoattribute'shape'报错如下翻阅了原项目的issues发现了相同的问题,找到解决方法:选择图片时图片的路径中不能......