首页 > 其他分享 >P9691 [GDCPC2023] Base Station Construction

P9691 [GDCPC2023] Base Station Construction

时间:2024-05-18 17:09:27浏览次数:23  
标签:Station node read GDCPC2023 ll while Base 500005

原题链接

题解

注意数据范围

1.我们不知道要在哪些地方建站,所以考虑都遍历一遍
2.如果一个地方 \(i\) 要建站,那么在它前面且离它最近的一个站,一定建在所有右端点大于 \(i\) 的区间中,左端点最大区间里
所以我们令 \(dp[i]\) 表示为在 \(i\) 建立一个站,且和 \([1,i]\) 有交集的区间都覆盖的最小成本

code

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

#define ll long long

ll a[500005];
ll dp[500005];
struct node
{
    ll l,r;
}qj[500005];

bool cmp(node b,node c)
{
    return b.r<c.r;
}

struct range
{
    ll l,r;
    bool operator<(const range &b) const{return b.l>l;}
};

ll st[500005][25];

inline void read(ll &x) {
	x = 0;
	ll flag = 1;
	char c = getchar();
    while(c < '0' || c > '9'){
        if(c == '-')flag = -1;
        c = getchar();
    }
	while(c >= '0' && c <= '9') {
		x = (x << 3) + (x << 1) + (c ^ 48);
		c = getchar();
	}
	x *= flag;
}

inline void write(ll x)
{
    if(x < 0){
    	putchar('-');
		x = -x;
	}
    if(x > 9)
		write(x / 10);
    putchar(x % 10 + '0');
}

int main()
{
    ll t;
    read(t);
    while(t--)
    {
        ll n;
        read(n);
        for(ll i=1;i<=n;i++) read(a[i]);

        ll m;
        read(m);
        for(ll i=1;i<=m;i++)
        {
            read(qj[i].l);
            read(qj[i].r);
        }

        sort(qj+1,qj+1+m,cmp);

        ll it=1;
        priority_queue<range> Q1;
        for(ll i=1;i<=n;i++)
        {
            while(it<=m&&qj[it].r<i)
            {
                Q1.push({qj[it].l,qj[it].r});
                it++;
            }

            if(!Q1.size())
            {
                dp[i]=a[i];
                st[i][0]=dp[i];
                for(ll k=1;k<=log2(i);k++)
                {
                    st[i][k]=min(st[i][k-1],st[i-(1<<(k-1))][k-1]);
                }
                continue;
            }
            ll l=Q1.top().l,r=Q1.top().r;

            ll add=2e18;
            while(l<=r)
            {
                ll len=log2(r-l+1LL);
                add=min(add,st[r][len]);
                r-=(1<<len);
            }
            dp[i]=add+a[i];

            st[i][0]=dp[i];
            for(ll k=1;k<=log2(i);k++)
            {
                st[i][k]=min(st[i][k-1],st[i-(1<<(k-1))][k-1]);
            }
        }
        while(it<=m&&qj[it].r<=n)
        {
            Q1.push({qj[it].l,qj[it].r});
            it++;
        }
        ll ans=2e18;
        for(ll i=Q1.top().l;i<=Q1.top().r;i++) ans=min(ans,dp[i]);
        write(ans);
        putchar('\n');
    }
    return 0;
}

标签:Station,node,read,GDCPC2023,ll,while,Base,500005
From: https://www.cnblogs.com/pure4knowledge/p/18199488

相关文章

  • Windows Security Baselines(安全基线指南) 是由微软提供的一个安全配置集合,旨在帮助组
    安全基线指南-WindowsSecurity|MicrosoftLearnWindowsSecurityBaselines(安全基线)是由微软提供的一个安全配置集合,旨在帮助组织和管理员快速部署一套推荐的安全设置,以增强Windows操作系统及其组件的安全性。这些基线覆盖了操作系统本身、MicrosoftEdge浏览器、Inter......
  • kingbase数据json操作:表转json、json转表、节点查询、节点添加
    1、json_array_elements(json)这个函数将JSON数组转换为行集合。例如:SELECTjson_array_elements('[1,2,3]')ASelement;将返回一个包含每个数组元素的行。2、json_each(json)这个函数将JSON对象展开为(key,value)对。例如:SELECT*FROMjson_each('{"a":1,"b":2}');......
  • Metabase 安装和使用教程
    Metabase是一款开源的数据分析和商业智能工具,允许企业用户在几分钟内搭建起一个功能完善的数据探索和数据分析平台,不需要编写复杂的SQL查询语句或者使用专业的数据可视化工具,就可以轻松地探索数据、创建图表、构建仪表盘,从而洞察业务趋势,回答关键问题。Metabase还有一个比较......
  • WindowsBaselineAssistant Windows安全基线核查加固助手,WindowsBaselineAssistant Wi
    GitHub-DeEpinGh0st/WindowsBaselineAssistant:Windows安全基线核查加固助手WindowsBaselineAssistantWindows安全基线核查加固助手,WindowsBaselineAssistantWindowsBaselineAssistant(WBA)是一个用于检测和加固Windows安全基线的辅助工具,借助此工具你可以免去繁琐的......
  • DBA(Database Administrator)数据库运维-mysql
    一、开篇1、版本选择1、企业版2、社区版MySQL社区版则是由分散在世界各地的MySQL开发者、爱好者以及用户参与开发与测试的,包括软件代码的管理、测试工作,也是他们在负责。社区也会设立BUG汇报机制,收集用户在使用过程中遇到的BUG情况,相比于企业版,社区版的开发及测试环境没有那么......
  • 国产数据库obase
    ##sample1文章1  OceanBase慢查询排查思路  https://open.oceanbase.com/blog/4030499840?_gl=1*1muepo8*_ga*MTg4MDgzMzI3Mi4xNzE1NDE3MjEw*_ga_T35KTM57DZ*MTcxNTg0MDQ3OS4xMi4xLjE3MTU4NDU2NTkuNjAuMC4w  本文汇总了项目实践中前辈的经验和笔者的理解,旨在帮助初......
  • openGauss Database和Schema设计
    Database和Schema设计openGauss中可以使用Database和Schema实现业务的隔离,区别在于Database的隔离更加彻底,各个Database之间共享资源极少,可实现连接隔离、权限隔离等,Database之间无法直接互访。Schema隔离的方式共用资源较多,可以通过grant与revoke语法便捷地控制不同用户对各Sche......
  • VMware Workstation 17.5.2 Pro Unlocker & OEM BIOS for Windows & Linux - 在 Windo
    VMwareWorkstation17.5.2ProUnlocker&OEMBIOSforWindows&Linux-在Windows和Linux上运行macOSSonoma请访问原文链接:https://sysin.org/blog/vmware-workstation-17-unlocker/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgVMwareWorkstationPro......
  • VMware Workstation 17.5.2 Pro macOS Unlocker & OEM BIOS for Windows - 在 Windows
    VMwareWorkstation17.5.2PromacOSUnlocker&OEMBIOSforWindows-在Windows上运行macOSSonoma请访问原文链接:https://sysin.org/blog/vmware-workstation-17-unlocker-windows/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgVMwareWorkstationPro是......
  • VMware Workstation 17.5.2 Pro macOS Unlocker & OEM BIOS for Linux - 在 Linux 上
    VMwareWorkstation17.5.2PromacOSUnlocker&OEMBIOSforLinux-在Linux上运行macOSSonoma请访问原文链接:https://sysin.org/blog/vmware-workstation-17-unlocker-linux/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgVMwareWorkstationPro是行业标......