首页 > 其他分享 >【DP】DMOPC '21 Contest 8 P5 - Tree Building

【DP】DMOPC '21 Contest 8 P5 - Tree Building

时间:2023-07-13 19:55:43浏览次数:52  
标签:Building le 21 P5 int res min solve vec

Problem Link

给定 \(n,m\) 和一个长为 \(m\) 的代价序列,对于一棵 \(n\) 个节点,每个节点度数不超过 \(m\) 的树,定义它的代价为 \(\sum\limits_{i=1}^n a_{deg_i}\)。求代价最小的树的代价。

\(n\le 10^9,m\le 3000,1\le a_i\le 10^9\)。


首先一眼变成选出 \(n\) 个 \(a\) 的和为 \(2n+2\)。经典的背包问题,价值值域和物品数都很大,但是体积值域很小,并且最终要求体积和是一个定值。

套路:如果 \(n\) 是偶数,那么对于任意一种方案,可以将选出的 \(n\) 个物品分成两部分,使得两部分体积之差的绝对值不超过 \(m\)。

证明:滑动窗口,从左滑到右,差的符号改变了,而每次改变量是 \(a_i-a_j\),所以一定存在一个时刻差的绝对值不超过 \(m\)。

于是当 \(n\) 是偶数时,定义 \(\mathrm{solve}(n,L,R)\) 表示解决 \(n\) 个物品,对于要求总体积在 \([L,R]\) 之间的情况求解,那么可以递归到 \(\mathrm{solve}(n/2,(L-m)/2,(R+m)/2)\) 来做,然后自己和自己合并。一共 \(\log\) 层,每层长度至多增加 \(m\),所以复杂度可以接受。

当 \(n\) 是奇数时,直接拎出最后一个数枚举,递归到 \(n-1\)。

计算时间复杂度。发现每次区间长度会 \(+m\) 然后 \(/2\),所以每一层加的 \(m\) 会在后面以 \(m,m/2,m/4,\dots\) 分布,即每层被加的 \(m\) 是从上面来的 \(m,m/2,m/4,\dots\),总和为 \(O(m)\)。所以总时间复杂度为 \(O(m^2\log n)\)。

点击查看代码
// https://dmoj.ca/problem/dmopc21c8p5
//~ #define _GLIBCXX_DEBUG
#include <bits/stdc++.h>
#define For(i,a,b) for(int i=a;i<=b;i++)
#define Rev(i,a,b) for(int i=a;i>=b;i--)
#define Fin(file) freopen(file,"r",stdin);
#define Fout(file) freopen(file,"w",stdout);
using namespace std;
const int N=3e3+5; using ll = long long;
int m,a[N];
vector<ll> solve(int n,int L,int R){
	//~ printf("solve(%d,%d,%d)\n",n,L,R);
	vector<ll> res(R-L+1,1e18);
	if(n==1) For(i,L,R) res[i-L]=1<=i&&i<=m?a[i]:1e18;
	else if(n&1){
		int l=max(L-m,1); vector<ll> vec=solve(n-1,l,R);
		For(j,l,R) For(k,max(j+1,L),min(j+m,R)) res[k-L]=min(res[k-L],vec[j-l]+a[k-j]);
	}
	else{
		int l=max((L-m)/2,1),r=(R+m)/2; vector<ll> vec=solve(n/2,l,r);
		For(j,l,r) For(k,max(l,L-j),min(r,R-j)) res[j+k-L]=min(res[j+k-L],vec[j-l]+vec[k-l]);
	}
	return res;
}
int main(){
	int n; cin>>n>>m; For(i,1,m) cin>>a[i];
	cout<<solve(n,2*n-2,2*n-2)[0]<<'\n';
	return 0;
}


标签:Building,le,21,P5,int,res,min,solve,vec
From: https://www.cnblogs.com/Charlie-Vinnie/p/17551961.html

相关文章

  • 防干扰/抗噪LCD液晶段码显示驱动芯片VK2C21A/AA SSOP28 适用于适用于单相电表,温控器LC
    概述:VK2C21是一个点阵式存储映射的LCD驱动器,可支持最大80点(20SEGx4COM)或者最大128点(16SEGx8COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,也可通过指令进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表类产品。QT951特点:•工作电压2.4-5.5V•......
  • 2021 robocom 世界机器人开发者大赛-本科组(初赛)
    7-1懂得都懂题目描述:7-1懂的都懂众所周知,在互联网上有很多话是不好直接说出来的,不过一些模糊的图片仍然能让网友看懂你在说什么。然而对这种言论依然一定要出重拳,所以请你实现一个简单的匹配算法。现在我们采集了原图的一些特征数据,由N个小于255的非负整数组成,假设对于......
  • 21UML 4+1视图
    视图是软件构建的视角4:逻辑视图(系统分析、设计人员:类和对象)、实现视图(程序员:代码)、进程视图(系统集成人员:进程、并发、线程)、部署视图(系统和网络工程师:软硬件映射)1:用例视图(最终用户、需求分析)......
  • NOI2021 题解
    [NOI2021]轻重边转化一下题意:每次给一条链染色,查一条链从\(x\)到\(y\)有几条边两端颜色相同。那这个随便树剖线段树就好了。也可以LCT,码量可能要小点。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<vector>usingnamespace......
  • ORA-65221 signalled during: alter pluggable database application APP$CDB$SYSTEM
    给一台Oracle19.12.0.0.0数据库应用补丁,升级到Oracle19.16.0.0.0时,做datapatch的时候,监控发现数据库的告警日志出现下面错误:2023-07-11T15:09:44.776403+08:00alter pluggable database application APP$CDB$SYSTEM begin install '1.0'ORA-65221 signalled during: ......
  • P1216 [USACO1.5] [IOI1994]数字三角形
    自己的思想:要用逆序,但是某个未知的位置可能存在一个非常大的数,因此不知道如何dp看题解之后:对于倒数第二行的数,可以算出它们的最优解,依次往上推,第一个数就是整体的最优解,其实本质上可以用隔离意识来看,在搞最后一排时,将前面所有排隔离掉,在处理中间的每一排时,又将其他排隔离掉接下......
  • ROS 的三种通信方式 2a82329219bf47c9a8f48a534ab31af7
    ROS的三种通信方式注意以下所有代码均基于:ubuntuROSDate18.04LTSMelodicMoreniaMay23rd,2018 May,2023写在最前,ROS1主要有三种通信方式,分别是:话题通信服务通信参数通信话题通信(Topic)话题通信主要是指通过发布和订阅服务的方式,来进行匿名的通信,一方......
  • P5550 Chino的数列
    很想模拟,但是数据太大啦(悲。然后我想着用\(map\)映射来做,想着模拟几轮发现周期,然后映射求解。但是不知道为什么写崩了。勉强贴贴,反正不是正解(#include<bits/stdc++.h>#definelllonglong#definereregisterusingnamespacestd;constintN=80+10,INF=0x3f3f3f3f;lln,......
  • NV21、NV12、YV12、RGB、YUV、RGBA、RGBX8888等图像色彩编码格式区别
    常用图像颜色编码格式NV21、NV12、YV12、RGB、YUV、RGBA、RGBX8888都是常见的图像颜色编码格式,它们之间的主要区别在于色彩空间和数据排列方式。NV21:NV21是Android系统使用的一种图像颜色编码格式,它采用的是YUV4:2:0的采样方式,意味着垂直方向上每两个像素采样一次,水平方向上每个像......
  • POJ 2109 Power of Cryptography 数学题 double和float精度和范围
    PowerofCryptographyTimeLimit:1000MSMemoryLimit:30000KTotalSubmissions:21354Accepted:10799DescriptionCurrentworkincryptographyinvolves(amongotherthings)largeprimenumbersandcomputingpowersofnumbersamongtheseprimes.Workint......