Solution S o l u t i o n Solution

操作相当于是动态的做一个背包DP。
离线的话,线段树分治一下。
因为结尾是已知的,可以一边分治,得到一个修改操作,就插到线段树。
只要保证分治从左到右,每个操作都在线段树上得到了实现。
1.5×104 1.5 × 10 4 1.5\times10^4可以跑 O(n2logn) O ( n 2 log ⁡ n ) \mathcal{O}(n^2\log{n})了解一下。
实际上跑不到这么满????

#include <bits/stdc++.h>
#define show(x) cerr << #x << " = " << x << endl
using namespace std;
typedef long long ll;
typedef pair<int, int> pairs;const int N = 15151;inline char get(void) {static char buf[100000], *S = buf, *T = buf;if (S == T) {T = (S = buf) + fread(buf, 1, 100000, stdin);if (S == T) return EOF;}return *S++;
}
template<typename T>
inline void read(T &x) {static char c; x = 0; int sgn = 0;for (c = get(); c < '0' || c > '9'; c = get()) if (c == '-') sgn = 1;for (; c >= '0' && c <= '9'; c = get()) x = x * 10 + c - '0';if (sgn) x = -x;
}int n, m, q, tp;
int opt, x, y, z, d, last;
int f[20][N];
vector<pairs> node[N << 2];inline void dp(int *f, int v, int w) {for (int i = m - v; ~i; i--)f[i + v] = max(f[i + v], f[i] + w);
}
inline void add(int o, int l, int r, int L, int R, int v, int w) {if (l >= L && r <= R)return (void)(node[o].push_back(pairs(v, w)));int mid = (l + r) >> 1;if (L <= mid) add(o << 1, l, mid, L, R, v, w);if (R > mid) add(o << 1 | 1, mid + 1, r, L, R, v, w);
}
inline void divAndConq(int o, int l, int r, int dep) {int *g = f[dep];for (auto u: node[o])dp(g, u.first, u.second);if (l == r) {read(opt);if (opt == 1) {read(x); read(y); read(z);d = last * tp;x -= d; y -= d; z -= d;if (l != z)add(1, 1, n, l + 1, z, x, y);} else {read(x);x -= last * tp;if (g[x] < 0) {printf("0 0\n");last = 0;} else {printf("1 %d\n", g[x]);last = 1 ^ g[x];}}return;}int mid = (l + r) >> 1;for (int i = 0; i <= m; i++) f[dep + 1][i] = g[i];divAndConq(o << 1, l, mid, dep + 1);for (int i = 0; i <= m; i++) f[dep + 1][i] = g[i];divAndConq(o << 1 | 1, mid + 1, r, dep + 1);
}int main(void) {freopen("1.in", "r", stdin);freopen("1.out", "w", stdout);read(n); read(m); read(tp);for (int i = 1; i <= m; i++)f[0][i] = -1 << 30;divAndConq(1, 1, n, 0);return 0;
}

[线段树分治][DP] LOJ #534. 「LibreOJ Round #6」花团相关推荐

  1. [LOJ#522]「LibreOJ β Round #3」绯色 IOI(危机)

    [LOJ#522]「LibreOJ β Round #3」绯色 IOI(危机) 试题描述 IOI 的比赛开始了.Jsp 和 Rlc 坐在一个角落,这时他们听到了一个异样的声音 -- 接着他们发现自己收 ...

  2. [LOJ #521]「LibreOJ β Round #3」绯色 IOI(抵达)(结论)

    #521. 「LibreOJ β Round #3」绯色 IOI(抵达) description solution 因为点的庇护所不能为自身,题目背景在树上,有结论一定是两个相邻点互为庇护所 所以树一 ...

  3. loj534. 「LibreOJ Round #6」花团

    题意 一个物品集合\(S\)初始为空,按时间递增顺序依次给出\(q\)次操作,操作如下: 1 v w e 表示在\(S\)中加入一个体积为\(v\)价值为\(w\)的物品,第\(e\)次操作结束之后移 ...

  4. loj 523 「LibreOJ β Round #3」绯色 IOI(悬念) 霍尔定理+基环树+线段树

    题目分析 神仙题(确信) 首先,j−aij-a _ ij−ai​和ai−ja _ i-jai​−j互为相反数,若其中最小值为bib _ ibi​,则一个为bib _ ibi​一个为m−bim-b _ ...

  5. loj #535. 「LibreOJ Round #6」花火 树状数组求逆序对+主席树二维数点+整体二分...

    $ \color{#0066ff}{ 题目描述 }$ 「Hanabi, hanabi--」 一听说祭典上没有烟火,Karen 一脸沮丧. 「有的哦-- 虽然比不上大型烟花就是了.」 还好 Shinob ...

  6. LOJ #516. 「LibreOJ β Round #2」DP 一般看规律

    题目描述 给定一个长度为 n 的序列 a,一共有 m 个操作. 每次操作的内容为:给定 x,y,序列中所有 x 会变成 y. 同时我们有一份代码: int ans = 2147483647; for ...

  7. LOJ 572 「LibreOJ Round #11」Misaka Network 与求和——min_25筛

    题目:https://loj.ac/problem/572 莫比乌斯反演得 \( ans=\sum\limits_{D=1}^{n}\left\lfloor\frac{n}{D}\right\rflo ...

  8. 【费用流】loj#545. 「LibreOJ β Round #7」小埋与游乐场

    好像现在看来这个缩点的思路挺清晰啊 题目描述 有两个非负整数组成的可重集合 $A$ 和 $B$. 现在你可以对 $A$ 中至多 $k$ 个元素进行操作.操作方法为:设你准备操作且未被操作过的 $A$ ...

  9. [费用流] LOJ#545. 「LibreOJ β Round #7」小埋与游乐场

    有两种操作是有效的 lowbit(ai)>lowbit(bj)lowbit(ai)>lowbit(bj)lowbit(a_i)>lowbit(b_j) 或者 ai=bjai=bja_ ...

最新文章

  1. moravec 角点检测
  2. dSploitzANTI渗透教程之安装zANTI工具
  3. 将整本《绿野仙踪》存入纳米级DNA中,高效准确,读取无压力
  4. 后台编写HttpWebRequest的POST请求,必须注意的一个小细节
  5. python利用pandas和xlrd读取excel,特征筛选列
  6. 两节点的最小公共祖先LCA
  7. 实践单元测试(2) - 大话单元测试
  8. 基于visual Studio2013解决面试题之0210树的最远距离
  9. dumpbin.exe
  10. vim编辑器常见使用
  11. python定义一个circle类、根据圆的半径_定义一个“圆”类Circle,该圆类的数据成员包括:圆心点位置及圆的半径...
  12. linux中用shell脚本对tomcat和nginx做日志切割
  13. 002,jvm启动流程
  14. 钩子教程 - 原理(二十五) : 消息 -- WM_CANCELJOURNAL
  15. recv函数的返回值梳理
  16. 我的理想作文400字计算机,我的理想作文400字5篇
  17. 大学网课查题公众号 查题公众号搭建 对接题库
  18. 2015年7月深圳社保缴费基数费率表
  19. 2006-10-30 18:37:00 著名Linux内核程序员大鹰 ox啊
  20. 反应式流 Java 9 Flow实战

热门文章

  1. Android bug日志/错误收集
  2. 磁致伸缩位移传感器的特点及工作原理
  3. 昆石VOS3000_2.1.3.2完整安装包及安装脚本
  4. 3D建模教学 | 卡通石头高模制作技巧
  5. ISP_DPC坏点矫正
  6. 云痕大数据 家长登录_云痕大数据平台的使用对初中英语教与学的作用
  7. qq一键登入帝国cms插件|适用7.5 7.2版本|UTF-8 GBK双版本
  8. 刚刚,ChatGPT官宣数学能力再升级,网友:终于精通十以内加减法了
  9. 从零开始仿写一个抖音App——音视频开篇,移动安全入门
  10. Kali linux 学习笔记(三十四)无线渗透——WPA攻击(PSK破解、AIROLIB、JTR、cowpatty、pyrit) 2020.3.13