首页 > 其他分享 >GYM 105264 C

GYM 105264 C

时间:2024-09-08 21:26:53浏览次数:1  
标签:le int GYM 个数 MAXN dp sum 105264

题目描述

给定一个长度为 \(N\) 的数组 \(A\),每次你可以令 \(A_i \leftarrow A_i+1\) 或 \(A_i-1\)。求进行至多 \(k\) 次操作后 \(A\) 中最少不同元素数量。

思路

首先对 \(A\) 进行排序。

令 \(dp_{i,j}\) 表示考虑前 \(i\) 个数,有 \(j\) 个不同的值时最多还能剩余几次操作。

很明显有 \(dp_{i,j}=\max \limits_{1\le l\le x\le i} \{dp_{l-1,j-1}+sum_i - sum_{x}-(i-x)\cdot A_x + (x - l)\cdot A_x - sum_{x-1}+sum_l\}\)。

这个式子中似乎只能优化 \(x\),所以我们考虑怎么优化。

这里的 \(x\) 实际上就是在枚举变成哪个值,假设一开始我们不用下标而用值来表示。每次令 \(x\leftarrow x+1\),这样做会使答案 \(+\le x的个数-> x的个数\),一开始这个增量是负的,逐渐变大。而当增量 \(=0\) 时也就是最小值。

而哪个地方 \(=0\) 呢?此时 \(\le x的个数=> x的个数\),也就是在 \(\lceil \frac{l+i}{2} \rceil\) 处。

空间复杂度 \(O(N^2)\),时间复杂度 \(O(N^3)\)。

代码

#include<bits/stdc++.h>
using namespace std;
using ll = long long;

const int MAXN = 301;

int T, n, a[MAXN], ans;
ll k, sum[MAXN], dp[MAXN][MAXN];

void Solve() {
  cin >> n >> k;
  for(int i = 1; i <= n; ++i) {
    cin >> a[i];
  }
  sort(a + 1, a + n + 1);
  for(int i = 1; i <= n; ++i) {
    sum[i] = sum[i - 1] + a[i];
  }
  for(int i = 0; i <= n; ++i) {
    for(int j = 0; j <= n; ++j) {
      dp[i][j] = -1;
    }
  }
  dp[0][0] = k;
  for(int i = 1; i <= n; ++i) {
    for(int j = 1; j <= n; ++j) {
      for(int l = 1; l <= i; ++l) {
        dp[i][j] = max(dp[i][j], dp[l - 1][j - 1] + sum[(l + i + 1) / 2] + 1ll * a[(l + i + 1) / 2] * (i - (l + i + 1) / 2) - 1ll * a[(l + i + 1) / 2] * ((l + i + 1) / 2 - l) + sum[(l + i + 1) / 2 - 1] - sum[l - 1] - sum[i]);
      }
    }
  }
  for(int i = 1; i <= n; ++i) {
    if(dp[n][i] >= 0) {
      cout << i << "\n";
      return;
    }
  }
}

int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  for(cin >> T; T--; Solve()) {
  }
  return 0;
}

标签:le,int,GYM,个数,MAXN,dp,sum,105264
From: https://www.cnblogs.com/yaosicheng124/p/18403504

相关文章

  • OpenAI Gym custom environment: Discrete observation space with real values
    题意:OpenAIGym自定义环境:具有实数值的离散观测空间问题背景:Iwouldliketocreatecustomopenaigymenvironmentthathasdiscretestatespace,butwithfloatvalues.Tobemoreprecise,itshouldbearangeofvalueswith0.25step:10.0,10.25,10.5,10......
  • Start OpenAI gym on arbitrary initial state
    题意:“在任意初始状态下启动OpenAIGym”问题背景:AnybodyknowsanyOpenAIGymenvironmentswherewecansettheinitialstateofthegame?Forexample,IfoundtheMountainCarContinuous-v0candosuchthingsothatwecanselectatwhichpointthecarst......
  • gym创建环境、自定义gym环境
    环境:half_cheetah.pyfromosimportpathimportnumpyasnpfromgymnasiumimportutilsfromgymnasium.envs.mujocoimportMujocoEnvfromgymnasium.spacesimportBoxDEFAULT_CAMERA_CONFIG={"distance":4.0,}classMOHalfCheetahEnv(Mujoc......
  • gym序列化、EzPickle类
    EzPickle是一个用于强化学习环境的类,它重写了__getstate__和__setstate__方法,以便通过构造函数参数(*args,**kwargs)进行序列化和反序列化。这个设计允许那些无法直接用pickle库处理的对象,如数据库连接和网络套接字,也能在保存和恢复时保持其状态。"""Classforpicklingandun......
  • mujoco gymnasium 环境
    本文简要介绍gynasium中基于mujoco的环境搭建。参照gynasium.envs.mujoco。1.gynasium.Env简介在gynasium中,环境基类为gynasium.Env,其中定义了step,reset,render,close等方法以及action_space,observation_space,reward_range,spec,metadata,np_random......
  • Why unwrap an openAI gym?
    题意:为什么要“解开”OpenAIGym?问题背景:I'mtryingtogetsomeinsightsintoreinforcementlearningwhileusingopenAIgymasalearningenvironment.Idothisbyreadingthebook Hands-onreinforcementlearningwithPython.Inthisbook,somecodeisp......
  • Gym102788,B - Rectangles题解
    水水水~题目链接戳我分析首先根据题目条件可得式子=>\((x-2)(y-2)=n(2x+2y-4)\)化简式子可得\[\begin{align}(x-2)(y-2)=&n(2x+2y-4)\\xy-2x-2y+4=&2nx+2ny-4n\\x(y-2n-2)=&2ny-4n-4+2y\\x=&\frac{2ny-4n-4......
  • Isaacgym使用操作指南
    Isaacgym使用操作指南背景知识1.**高性能GPU加速**2.**多环境并行仿真**3.**深度学习框架集成**4.**物理引擎**5.**强化学习支持**6.**PythonAPI**7.**应用场景**8.**生态系统**总结常用apiisaacgym库主要常用的api设置仿真参数创建底面平面加载资产创建环境......
  • gym105167E Erdős-Ginzburg-Ziv 题解
    题意:给\(p\)和\(p-1\)个边权,要用这些边权构造树,每个点编号\(0\simp-1\),使得每个点\(u\)到\(0\)的距离\(\bmod\p=u\),无解输出-1,保证\(p\)是质数、\(p\le10^6\)、边权\(\in[1..p-1]\).Solution考虑加边的过程,树最开始只有根节点0,然后通过加边不断地引入新的点......
  • 使用“stable_baselines3”时如何重置“gymnasium”环境?
    我想为我的体育馆环境播种。从官方文档来看,我的做法是-importgymnasiumasgymenv=gym.make("LunarLander-v2",render_mode="human")observation,info=env.reset(seed=42)但是,stable_baselines3似乎不需要从用户端重置,如下面的程序所示-importgymnasi......