ACM-区间问题
「已注销」
这个作者很懒,什么都没留下…
展开
-
EOJ 3367/FOJ 2253咸鱼翻身【最大区间和】
题目简介给定01序列,选择一个区间,对区间中每个数取反(0变1,1变0),求1最多能有多少个。说明最大区间和问题。对于1,翻转后收益(1的个数)为-1;对于0,翻转后收益为+1。方便起见,读入时直接把数字转换为收益。最后求最大区间和,加上原来1的个数就是答案。由于和最大的区间中不会有-1出现,区间所覆盖的位置也不会包括原来1所在的位置,因此不会重复。#include <stdio.h>int a[1原创 2017-12-12 18:42:40 · 284 阅读 · 0 评论 -
轻量级的巧妙解法
EOJ 1076 染气球 一共有 N 只气球,小强将 N 只气球从左到右依次编号为 1、2、3……N,每次给 2 个整数 a,b (a<=b),小强便骑上他的“小飞鸽 ” 牌电动车从气球 a 开始到气球 b 依次给每个气球涂一次颜色。但是 N 次以后小强已经忘记了第 I 个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗? N <= 100000 da...原创 2018-02-04 12:52:43 · 283 阅读 · 0 评论 -
EOJ 3216 都市地平线
题目简介 约翰带着奶牛去都市观光。在落日的余晖里,他们看到了一幢接一幢的摩天高楼的轮廓在地平线上形成美丽的图案。以地平线为 X 轴,每幢高楼的轮廓是一个位于地平线上的矩形,彼此间可能有重叠的部分。奶牛一共看到了 N 幢高楼,第 i 幢楼的高度是 Hi,两条边界轮廓在地平线上的坐标是 Ai 到 Bi。请帮助奶牛们计算一下,所有摩天高楼的轮廓覆盖的总面积是多少。 说明 乍看之下像计算原创 2018-02-02 16:17:05 · 562 阅读 · 0 评论 -
EOJ 3388/USACO 2007 January Silver Balanced Lineup【RMQ】
题目简介 给定一个数列,求询问区间中的最大最小值之差。 说明 普通方法用线段树或ST算法,对这题来说RMQ就可以了。时间复杂度O(nlogn)。 #include #include #include using namespace std; int linemax[50001][20], linemin[50001][20]; void rmq(int n) {原创 2018-02-02 15:49:41 · 250 阅读 · 0 评论 -
EOJ 2525/USACO 2008 November Gold Light Switching【线段树】
题意简介 有n个灯,m次操作,0表示一段区间内灯的状态全部反转,1表示询问一段区间内亮着的灯的数量。 说明 裸线段树……借鉴了模板,算是第一次写。 #include using namespace std; const int maxn = 1e5+5; int st[maxn2], add[maxn2], n, m, flag, s, e; void pushdown(i原创 2018-02-05 12:20:23 · 163 阅读 · 0 评论 -
EOJ 1418/POJ 2566 Bound Found
题目简介 给定一个数列和t,求总和最接近t的一段连续子序列及其和。 说明 由于n达到了1e5不能采用n^2算法,因此考虑用前缀和+尺取法(滑动窗口法/two pointers)降低复杂度。 #include <bits/stdc++.h> using namespace std; const int maxn = 1e5+5; const int INF = 0x...原创 2018-02-28 14:11:29 · 167 阅读 · 0 评论 -
最大连续子序列的和【线性在线算法】
代码 #include <stdio.h> int main() { int cas, i, n; scanf("%d", &cas); while (cas--){ scanf("%d", &n); int a[100] = {0}; for (i = 0; i < n; ++i...原创 2017-12-23 17:23:10 · 232 阅读 · 0 评论 -
zkw线段树
关于zkw线段树是啥,参见他本人的ppt:统计的力量 (相比递归版线段树:) 优点:代码量较少,空间需求略少(实际上不需要4倍),运行效率较高(非递归); 缺点:应用范围有限制.尽管可以稍加修改就支持单点更新/单点查询/区间更新/区间求和/区间RMQ等,但其中部分功能似乎不能同时实现… 总体来说,无论是代码量还是应用范围都介于树状数组和递归版线段树之间. 关于这个数据结构还在摸索…下面是...原创 2018-03-08 21:52:21 · 188 阅读 · 0 评论 -
洛谷1020 导弹拦截
https://www.luogu.org/problem/show?pid=P1020 第一问数列取反之后用类似求LIS的O(nlogn)算法就可以了。 第二问的关键在于Dilworth定理,就这题而言可以表述成: 一个数列划分成最少的最长不升子序列数==这个数列的最长上升子序列长度 也就是说求一下LIS就做完了。 似乎第二问也可以贪心做,但是知道定理的情况下显然是求LIS更容...原创 2018-03-03 13:59:54 · 262 阅读 · 0 评论