本题教训我们:

如果遇到在返回值域范围的dp时,可以考虑线段树合并操作。

考虑最开始写作一个\(if:0;end\)

那么所有的\(if\)可以记作一个树状结构,\(set\)为子节点

先把所有\(set\ s\)指令删除,代价提前至点上。

考虑在树上\(dp\),那么我们需要的是\(f_{i,j}\)即操作完 \(i\) 内的子程序后,返回值为 \(j\) 的最小代价。

那么可以线段树合并操作。

但是由于这个子节点之间的顺序有差别,所以这里可以采用顺序访问子节点而后map启发式合并。

复杂度较线段树合并为\(O(nlog^2n)\)多一个\(log\)。

下午再来补上程序。

机房的dev居然没法C++14.

#include<bits/stdc++.h>

#define N 200020
#define ll long long int n,ban,x[N],w[N],f[N];
ll d[N]; std::string opt[N]; std::vector<int>G[N];//树 std::map<int,ll>dp[N];//启发式合并map
std::multiset<ll>num[N];//处理最小值 inline void dfs(int u){
dp[u][x[u]] = 0;
num[u].insert(0);
for(int i = 0;i < G[u].size();++i){
int v = G[u][i];
if(opt[v][0] == 's'){
if(x[v] == ban)
d[u] += w[v];
else
if(dp[u].count(x[v])){
ll las = dp[u][x[v]];
dp[u][x[v]] = (*num[u].begin()) - w[v];
num[u].erase(num[u].find(las));
}else{
dp[u][x[v]] = (*num[u].begin()) - w[v];
}
num[u].insert(dp[u][x[v]]);
d[u] += w[v];
}
else{
if(dp[u].count(x[v])){//如果可能进入这个if
dfs(v);
ll tmp = d[v] + dp[u][x[v]];
if(dp[v].size() <= dp[u].size()){
for(auto [k,t] : dp[v]){
if(!dp[u].count(k))dp[u][k] = tmp + t;
else{
num[u].erase(num[u].find(dp[u][k]));
dp[u][k] = std::min(k == x[v] ? inf : dp[u][k],tmp + t);
}
num[u].insert(dp[u][k]);
}
}else{
d[u]+=tmp;
for(auto [k,t]:dp[u]){
if(!dp[v].count(k))dp[v][k]=t-tmp;
else{
num[v].erase(num[v].find(dp[v][k]));
if(k^x[v])dp[v][k]=min(dp[v][k],t-tmp);
}
num[v].insert(dp[v][k]);
}
std::swap(dp[u],dp[v]);
std::swap(num[u],num[v]);
}
}
}
}
} int main(){
scanf("%d%d",&n,&ban);
int u = 0;
for(Int i = 1;i <= n;++i){
std::cin>>opt[i];
if(opt[i][0] == 's'){
G[u].push_back(i);
scanf("%d%d",&x[i],&w[i]);
}else if(opt[i][0] == 'i'){
scanf("%d",&x[i]);
G[u].push_back(i);
f[i] = u;
u = i;
}else{
u = f[u];
}
}
dfs(0);
std::cout<<(d[0] + *num[0].begin())<<std::endl;
}

CF1455G Forbidden Value的更多相关文章

  1. 遇到 HTTP 错误 403.14 - Forbidden?

    打开 http://localhost:1609 报错: HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容 解决方案一:设置默认首页 在 Web.conf ...

  2. Forbidden You don't have permission to access / on this server PHP

    在新安装的谷歌游览器里,打不了PHP网站了,错误显示: Forbidden You don't have permission to access / on this server. 原因还是配置权限 ...

  3. Apache2.4部署django出现403 Forbidden错误解决办法

    前言:Apache2.4部署django出现403 Forbidden错误最好要结合apache中的错误日志来观察出现何种错误导致出现403错误 下午百度了一下午没找到解决办法,试了n种方法,简直坑爹 ...

  4. vs2015启动网站调试提示 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容。 解决方法

    今天安装了vs2015 下载一个项目进行试用,启动调试的时候提示 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容. 最可能的原因: 没有为请求的 URL ...

  5. [Linux] Nginx networking 403 Forbidden 静态文件不允许查看

    nginx 的 403 Forbidden errors 表示你在请求一个资源文件但是nginx不允许你查看. 403 Forbidden 只是一个HTTP状态码,像404,200一样不是技术上的错误 ...

  6. [转]权限问题导致Nginx 403 Forbidden错误的解决方法

    权限问题导致Nginx 403 Forbidden错误的解决方法 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-08-22 这篇文章主要介绍了权限问题导致Nginx 403 F ...

  7. xampp出现 Access forbidden! 问题解决

    解决 XAMPP 出现 A今天安装了XAMPP 试了下,增加虚拟主机时出现没权限,apache配置文件httpd.conf的allow属性,把下图中的文字注释掉: 然后公开于外网出现以下错误,也很容易 ...

  8. Wampserver2.5配置虚拟主机出现403 Forbidden的处理方案

    WampServer是一款由法国人开发的Apache Web服务器.PHP解释器以 及MySQL数据库的整合软件包.免去了开发人员将时间花费在繁琐的配置环境过程,从而腾出更多精力去做开发.在windo ...

  9. vs2012启动网站调试提示 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容

    启动vs2012调试网站的时候提示: HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容. 最可能的原因: 没有为请求的 URL 配置默认文档,并且没有在服 ...

随机推荐

  1. JavaScript常用的Hook脚本

    JavaScript常用的Hook脚本 本文Hook脚本 来自 包子 页面最早加载代码Hook时机 在source里 用dom事件断点的script断点 然后刷新网页,就会断在第一个js标签,这时候就 ...

  2. pg_basebackup报错: pg_basebackup: incompatible server version 12.4

    pg_basebackup报错 今日从库复制主库data时,发现pg_basebackup无法使用,详情如下: 错误为:incompatible server version 12.4 [postgr ...

  3. 我们一起来回顾一下Synchronized关键字吧

    多线程一直Java开发中的难点,也是面试中的常客,趁着还有时间,打算巩固一下JUC方面知识,我想机会随处可见,但始终都是留给有准备的人的,希望我们都能加油!!! 沉下去,再浮上来,我想我们会变的不一样 ...

  4. [技术博客] 利用SharedPreferences来实现登录状态的记忆功能

    [技术博客] 利用SharedPreferences来实现登录状态的记忆功能 一.SharedPreferences简介 SharedPreferences是Android平台上一个轻量级的存储辅助类 ...

  5. Spring Cloud Gateway Route Predicate Factory 的使用

    Spring Cloud Gateway的使用 一.需求 二.基本组成 1.简介 2.核型概念 1.Route 路由 2.Predicate 谓语.断言 3.Filter 过滤器 3.工作原理 三.网 ...

  6. python redis自带门神 lock 方法

    redis 支持的数据结构比较丰富,自制一个锁也很方便,所以极少提到其原生锁的方法.但是在单机版redis的使用时,自带锁的使用还是非常方便的.自己有车还打啥滴滴顺风车是吧,本篇主要介绍redis-p ...

  7. USART 硬件流控

    流控的概念源于 RS232 这个标准,在 RS232 标准里面包含了串口.流控的定义.大家一定了解,RS232 中的"RS"是Recommend Standard 的缩写,即&qu ...

  8. 对SQLServer错误使用聚集索引的优化案例(千万级数据量)

    前言: 半个月前发了文章 SQLServer聚集索引导致的插入性能低 终于等到生产环境休整半天,这篇文章是对前文的实际操作. 以下正文开始: 异常:近期发现偶尔有新数据插入超时. 分析:插入条码有多种 ...

  9. Python AttributeError: module 'string' has no attribute 'atoi'

    python2 中可以用string.atoi 在python3中会报错 替换的方案是 string.atoi(your_str) 替换为 int(your_str) 这个代码python2和pyth ...

  10. 021中国大学生程序设计竞赛(CCPC)- 压力测试赛题解

    A.Matrix 挺狗的一道题,从开始冲到最后都没冲出来,都没啥思路. 其实分开考虑每个数的贡献,这个想法也存在过,就是不知道该怎么计算,我们考虑我们单独考虑一个数字\(i(1\leq i\leq n ...