首页 > 其他分享 >「CF505C」 Mr. Kitayuta, the Treasure Hunter

「CF505C」 Mr. Kitayuta, the Treasure Hunter

时间:2024-03-22 15:38:01浏览次数:18  
标签:10 宝石 ll Treasure Hunter len times CF505C inf

题意

在数轴上有 \(n\) 块宝石,当你走到一个点时,可以获得点上所有的宝石。

若前一步走了 \(c\) 个单位长度,那么下一步可以走 \(c-1,c,c+1\) 个单位长度。

你最开始在原点,可以向右走 \(d\) 个单位长度,求最多可获得多少宝石。

分析

设 \(f_{i,j}\) 表示在第 \(i\) 个点,上一步走 \(j\) 个单位长度可获得的最大宝石数。

但是 \(n,p_i\) 的范围是 \(3\times 10^4\),二维数组会 MLE,考虑怎么优化。

因为最远的宝石在 \(3\times 10^4\),设步数变化 \(x\) 次,则最大的 \(x\) 满足 \(\frac{(2d+x)(x+1)}{2}\le 3\times 10^4\),解得 \(x\) 不会超过 \(300\)。

更改一下状态,设 \(f_{i,j}\) 表示在第 \(i\) 个点,\(d\) 变化了 \(j\) 次所能得到的最大宝石数。

总时间复杂度 \(O(300n)\)。

Code

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
inline ll read(){ll x=0,f=1;char c=getchar();while(c<48||c>57){if(c==45)f=0;c=getchar();}while(c>47&&c<58)x=(x<<3)+(x<<1)+(c^48),c=getchar();return f?x:-x;}
const ll maxn=30000,inf=400;
ll n,d,f[maxn+5][inf*2+5],cnt[maxn+5],ans;
signed main(){
    n=read(),d=read();
    for(ll i=1;i<=n;++i)++cnt[read()];
    for(ll i=0;i<=maxn;++i){
        for(ll j=-inf;j<=inf;++j){
            f[i][inf+j]=LLONG_MIN;
        }
    }
    f[d][inf]=cnt[0]+cnt[d];
    for(ll i=d;i<=maxn;++i){
        for(ll j=-inf;j<=inf;++j){
            if(f[i][inf+j]==LLONG_MIN)continue;
            for(ll k=-1;k<=1;++k){
                ll len=d+j+k;
                if(j+k<-inf||j+k>inf||len<1||i+len>maxn)continue;
                f[i+len][inf+j+k]=max(f[i+len][inf+j+k],f[i][inf+j]+cnt[i+len]);
            }
        }
    }
    for(ll i=0;i<=maxn;++i){
        for(ll j=-inf;j<=inf;++j){
            ans=max(ans,f[i][inf+j]);
        }
    }
    printf("%lld",ans);
    return 0;
}

标签:10,宝石,ll,Treasure,Hunter,len,times,CF505C,inf
From: https://www.cnblogs.com/run-away/p/18089590

相关文章

  • abc227F - Treasure Hunting
    abc227F依次钦定x为路径上的第k大的数,然后dp即可。#include<cstdio>#include<algorithm>#include<cstring>#include<map>#include<queue>#include<bitset>#include<cmath>#include<set>#include<unordered_map>#definefo(i,......
  • OnePlus2刷入kaliNetHunter最新版!最性价比设备
    WIFI、蓝牙、相机正常KALI版本:nethunter-2023.4-oneplus2cm-pie-kalifs-full.zip系统版本:lineage-16.0-20181110-UNOFFICIAL-oneplus2.zip(Android9,代号pie)刷机流程简介可能我理解的不正确,如有误可留言。首先刷入lineage系统。建议这边重刷一遍,防止后面有误。好的,那么接下......
  • 使用Rkhunter检测linux渗透
    目前可以发现大多数已知的rootkits和一些嗅探器以及后门程序。它通过执行一系列的测试脚本来确认服务器是否已经感染rootkits,比如检查rootkits使用的基本文件,可执行二进制文件的错误文件权限,检测内核模块等等。使用yum或者apt直接安装rkhunter--checkall可以使用unhide查看......
  • GPTs Hunter 是什么?
    原文:https://openaigptguide.com/openai-gpts-hunter/GPTsHunter是一个功能强大的免费导航网站,支持多语言,提供用户友好的界面。GPTsHunter:功能强大的免费导航网站GPTsHunter是一个功能强大的免费导航网站,旨在为用户提供便捷的在线导航服务。它为用户提供了一个集中管理和......
  • CF677D Vanya and Treasure
    这题纯大力搞过去的,没用到啥技巧,后面看了下别人的做法发现还是很有意思的我的做法就很粗暴,考虑令\(f_{i,j}\)表示走到\((i,j)\)的最短路,转移的话不难发现是个分层图DP但是有一个显然的问题是当相邻两层间的点数很多时,暴力做的话会退化成\(O(n^2\timesm^2)\),因此需要优化像这种......
  • pchunter64v.157 授权过期
      16进制编辑器打开pchunter64.exe搜索字节序列:488B5C2450 33C9E8B5更改488B5C2450为BB7FE685F4  即:movrbx,[rsp+50]更改为movebx,F485E67F,保存更改。 ......
  • 在安卓手机上安装完整kali linux nethunter 系统
    KALI官方给出的NETHUNTER手机建议              手机型号设备ID     操作系统  基于安卓版本   首选高端设备是一家7/7pro              OOS      安卓......
  • 手把手教你从零构建官方支持设备的Nethunter系统
    KALI官方给出的NETHUNTER手机建议              手机型号设备ID     操作系统  基于安卓版本   首选高端设备是一家7/7T              OOS      安卓10稳定版首......
  • 在一加7上kali nethunter安装好后更新到最新版本,vnc打开失败问题解决方法。
    首先说明nethunter的vnc本身就不稳定,是兼容性问题,而非非正常关闭导致的。解决方法:方法一:查看nethunre主app的开启vnc命令是不是终端不识别。现在vnc叫做kex。方法二:更新到最新版本,sudoaptupdate&aptupgrade,如果还是打不开的话,更新nethunre主app,在https://store.nethunter.co......
  • 给Nexus6p刷入lineage14.1(android 7.1)和 nethunter 2019.3
    本文依据kali教程编写https://build.nethunter.com/contributors/re4son/angler/INSTALLATION.txt写在前面的话你可能很奇怪,为什么有kali2020.3不用要刷入2019.3版本的。其实目的是使用安卓7,因为高版本安卓对某些软件的兼容性太差,刷入2019载手动升级到2020.3.Andrax在安卓7、9......