HDU—4699 Editor 双向链表+子集和】的更多相关文章

惨.今天聪哥选了2013 多校10做训练,结果一题都没做出来.这个题目是数据结构,正好是我强项 如果只是插入 删除 光标左右移动,那都小菜,用链表全解决,关键是那个Q k 要求 a1到aq的连续子序列和最大(子序列一定要以a1开头). 然后我用记录每个节点的当前最大和总体最大,这样只要知道第k个是哪个数就可以了,但由于是用的链表,并不知道第k个是哪个..一开始试了下暴力去扫,结果TL.. 其实我能想到每个点由前一个点过渡最大值,就离答案不远了,既然我不知道当前节点是第几个数,我就手动加一个量,专…
双向链表直接模拟. 用一个辅助数组maxSum来维护一下前k项中[1,k]的最大和. 因为光标是一格一格的移动,所以每次光标右移的时候动态更新一下即可. 时间复杂度O(n). #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> using namespace std; ; << ; struct node { int val; node *nex…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4699 Problem Description Sample Input8I 2I -1I 1Q 3LDRQ 2 Sample Output23 Hint 题意: 维护一个整数序列的编辑器,有以下五种操作,操作总数不超过 $10^6$. $I \: x$:在当前光标位置之后插入一个整数 $x$,插入后光标移动到 $x$ 之后: $D$:删除光标前的一个整数: $L$:光标左移一格: $R$:光标右移一…
Editor Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 118    Accepted Submission(s): 38 Problem Description   Sample Input 8 I 2 I -1 I 1 Q 3 L D R Q 2   Sample Output 2 3 Hint The following…
思路:刚开始用STL中的栈,一直RE……,之后改为手动模拟栈操作,在注意点细节就可以了!!! 代码如下: #include<cstdio> #include<cstring> #include<algorithm> #define M 1000001 using namespace std; int A[M],B[M],a[M],s[M],cur,x,q,l,r; char c; int main() { while(scanf("%d",&…
维护两个栈,分别存光标前和光标后的数 再维护前缀和的栈 和 前缀和最大值的栈 注意一下左移,右移,删除到顶了就不操作了 5个操作 I x : 光标处插入x  -----> s1.push(x) D  : 光标前删除    -----> s1.pop() L  :  光标左移      -----> s2.push(s1.top())   s1.pop() R  :  光标右移      -----> s1.push(s2.top())   s2.pop() Q k : 输出前k个数…
题目大意: 给定一个整数序列 维护5种操作 次数<1e6 I x: 光标位置插入x 然后光标位于x之后 D: 删除光标前一个数 L: 光标左移 R: 光标右移 Q k: 询问位置k之前的最大前缀和 选用"对顶栈"的做法 大致示意图如下: 对顶栈stkl, stkr直接通过数组模拟即可实现 以I x的操作为例, 需要: 1)将x插入stkl; 2)更新s数组 当前的前缀和 = 之前的前缀和 + x 3)更新f数组 记录该位置的最大前缀和 故有如下的代码: // tl用于记录左栈的栈…
hdu 4699  Editor 题意:对一个数列进行操作,光标位置后面插入一个权值为x的数,删除光标前的那个数,光标左移一位,光标右移一位,求到k位置的最大的前缀和.. 注意这里的k是在光标之前的,由于这个条件,所以这题又简单的2个栈维护可以解,如果没有这个条件,那么就要用伸展树了. 栈的解法叉姐的解题报告有,我这里说说伸展树的做法, 1.8MS卡过. 我们用cur表示光标在第几个数的右边,size表示数的总个数. 对于操作L: 没有移到最左边就cur-- 对于操作R: 没有移到最右边就cur…
Special subset sums: meta-testing Let S(A) represent the sum of elements in set A of size n. We shall call it a special sum set if for any two non-empty disjoint subsets, B and C, the following properties are true: S(B) ≠ S(C); that is, sums of subse…
Special subset sums: optimum Let S(A) represent the sum of elements in set A of size n. We shall call it a special sum set if for any two non-empty disjoint subsets, B and C, the following properties are true: S(B) ≠ S(C); that is, sums of subsets ca…