首页 > 其他分享 >2023广东省赛B Base Station Construction

2023广东省赛B Base Station Construction

时间:2023-08-05 19:11:07浏览次数:41  
标签:Station rt ch int lt while Base Construction 区间

也许更好的阅读体验

\(\mathcal{Description}\)
\(n\)个点,每个点有点权,有\(m\)个区间,要选择一些点使得所有区间里都有点,求最小总点权
\(n,m\le 5×10^5\)

\(\mathcal{Solution}\)
广东省赛好水啊,感觉单挑都可以至少\(6\)题
这题属于一眼题了,不知为何过的很少
设\(f_i\)表示\([1, i]\)这个区间全部满足条件并且选择了\(i\)的最少花费
令\(n+1\)有一个点且点权为\(0\),则答案就是\(f_{n+1}\)
转移方程\(f_i=min\{f_j\}\)其中要满足\([j+1,i-1]\)之间没有要求区间,考虑\(j\)的合法区间,假设为\([k,i-1]\),当\(i\)变为\(i+1\)时,如果有一个区间以i结尾并且左端点在\([k,i]\)之间,那么对于\(i+1\)来说,\(j\)的区间会变小,这个过程中,\(j\)的区间只会越来越往右变小,因此可以用单调栈维护这个\(dp\)
\(\mathcal{Code}\)

#include <cstdio>
#include <algorithm>
#define ll long long
using namespace std;
const int maxn = 5e5 + 10;
struct IO {
	template <class T>
	IO operator>>(T &res) {
		res = 0;
		char ch;
		bool flag = false;
		while ((ch = getchar()) > '9' || ch < '0')	flag |= ch == '-';
		while (ch >= '0' && ch <= '9')	res = (res << 3) + (res << 1) + (ch ^ '0'), ch = getchar();
		if (flag)	res = ~res + 1;
		return *this;
	}
} cin;
int T, n, m, hd, ed;
int a[maxn], l[maxn], q[maxn];
ll f[maxn];
void solve ()
{
    cin >> n;
    for (int i = 1; i <= n; ++i)    cin >> a[i], l[i] = 0;
    cin >> m;
    for (int i = 1, lt, rt; i <= m; ++i) {
        cin >> lt >> rt;
        l[rt] = max(l[rt], lt);
    }
    q[hd = ed = 1] = 0;
    a[++n] = 0;
    for (int i = 1; i <= n; ++i) {
        f[i] = f[q[hd]] + a[i];
        while (hd <= ed && f[q[ed]] > f[i])   --ed;
        q[++ed] = i;
        while (q[hd] < l[i])    ++hd;
    }
    printf("%lld\n", f[n]);
}
int main ()
{
    cin >> T;
    while (T--) solve();
    return 0;
}

如有哪里讲得不是很明白或是有错误,欢迎指正
如您喜欢的话不妨点个赞收藏一下吧

标签:Station,rt,ch,int,lt,while,Base,Construction,区间
From: https://www.cnblogs.com/Morning-Glory/p/17608455.html

相关文章

  • 金奖方案 | 一专多能、傲视寰宇,南大通用GBase8c数据库牛在哪里?opengauss
    金奖方案|一专多能、傲视寰宇,南大通用GBase8c数据库牛在哪里?opengaussopenGauss2022-11-0420:59发表于四川鲲鹏应用创新大赛是面向全球开发者的顶级赛事,本次大赛由21个鲲鹏生态创新中心与华为,联合中国软件行业协会、绿色计算产业联盟、中国计算机行业协会、中国计算机学会高专......
  • git rebase
    gitrebase可以帮助项目中的提交历史干净整洁!!!一.自动合并多个commit记录命令gitrebase-i[startpoint][endpoint]其中-i的意思是--interactive,即弹出交互式的界面让用户编辑完成合并操作,[startpoint][endpoint]则指定了一个编辑区间,如果不指定[endpoint],则该区间的终点......
  • vmware workstation pro17 安装 windows server 2022
    本文实验所需环境vmwareworkstationpro17windowserver2022镜像文件:zh-cn_windows_server_2022_updated_april_2023_x64_dvd_644d5669.iso镜像文件下载:NEXT,ITELLYOU一、vmware创建windowserver2022虚拟机安装步骤,打开vmwareworkstationpro17,新建虚拟机,选......
  • cdh4 hadoop,hive,impala,hbase本地库搭建及安装
    --hadoop文件位置:log目录:1 /var/log/hadoop-hdfs2 /var/log/hadoop-mapreduce3 /var/log/hbase4 /var/log/hive5 /var/log/hive6 /var/log/impala安装目录:1 /usr/lib启动命令目录:1 /etc/init.d/配置文件目录:1 /etc/hadoop/conf2 /etc/hbase/conf3 /etc/hive/conf......
  • Ubuntu下安装VMware Workstation Pro
    https://zhuanlan.zhihu.com/p/610538496?utm_id=01.下载VMwareWorkstationProforLinux1.1官网下载最好到官网下,注册vmware账号(邮编需与所选地区对应),转至官网下载页面,选择版本,这里以VMwareWorkstationPro17.0为例,选择下载VMwareWorkstationPro17.0forLinux。......
  • 架设传奇技术教程同目录下无法找到DLL文件"KERNELBASE"处理办法
    同目录下无法找到DLL文件:"KERNELBASE"】.请与作者联系.的弹窗办法和解决架设传奇版本启动引擎或者启动没多久的时候经常遇到弹窗提示【同目录下无法找到DLL文件:"KERNELBASE"】.请与作者联系.的弹窗,如上图所示,下面我来给大家介绍下如何解决这个问题。一般出现这个问题都是windows200......
  • CentOS7 安装部署 OceanBase 数据库
    OceanBase是由蚂蚁集团完全自主研发的国产原生分布式数据库,本文以x86架构的CentOSLinux7.9主机作为环境对该数据库的安装部署进行介绍。背景OceanBase数据库自V4.0.0开始提供统一的安装包all-in-onepackage。您可以通过这个统一的安装包一次性完成OBD、OceanBase......
  • Java面试题 P59:微服务篇:分布式系统理论-CAP和BASE
           ......
  • TwinCAT3 Database Server 模块的使用步骤(以MySQL为例)
    1.首先安装Mysql和Twincat3TF6420-Database-Server.exe2.在Mysql中创建数据库,以测试为目的,所以简单创建了两个 3.Twincat3可以在项目中添加,或者可以直接在菜单栏的Configurator中配置 连接的数据库的类型为NET_MySQL,由于拓扑是均基于一台IPC,所以可以选择localhost,数据库......
  • OceanBase数据字典视图学习与总结(MySQL模式)
    OceanBase数据库的系统视图分为字典视图和性能视图。其中字典视图就是描述数据字典的视图,OceanBase数据库的字典视图包含information_schema.*视图、oceanbase.CDB_*视图、oceanbase.DBA_*视图以及mysql.*视图。本文所涉及的版本主要为OceanBase4.1.0。information_schema......