题目
1. 翻栈(U62970)
(stack.cpp,1000ms,128MB)
题目描述
栈有 push,pop,top 三个操作。
现在加入一种 reverse 操作,表示把栈中所有元素的顺序翻转。
输入描述
一个数 n 表示操作数量。
接下来 n 行,每行有”push”,”pop”,”top”,”reverse”中的一种。
其中,push 后有一个整数表示插入的数值。
输出描述
对于每个 top 输出一行一个整数表示当前栈顶元素。
对于每个 top/pop,如果当前的栈已经为空,输出一行’Empty!’(不含引号)。
输入样例
5
pop
push 10
push 6
reverse
top
输出样例
Empty!
10
数据范围及提示
对于 30%的数据,n<=1000
对于另 20%的数据,没有 reverse 操作
对于所有数据,n<=10^5,1<=栈中元素<=10^6
2. 填写逻辑(U62971)
(exp.cpp,1000ms,128MB)
题目描述
现在有一个逻辑式,但是逻辑式中的数值被吃了,只剩下括号和运算符。
已知逻辑式的结果为 False,求有多少种可能的数值填写。
其中&表示逻辑中的 and,|表示 or。
注意,运算顺序为先算括号内,再算&,再算|。
输入描述
一行一个字符串,仅包含’(‘,’)’,‘&’,‘|’,保证合法。
输出描述
一行一个整数,表示填写数值的方案数,对 10007 取模。
输入样例
(|)&
输出样例
5
数据范围及描述
对于 30%的数据,输入长度<=10
对于 60%的数据,输入长度<=200
对于另 20%的数据,保证没有括号
对于所有数据,输入长度<=3*10^5
对于样例
( _ | _ ) & _ 当填写方案为(0,0,0)(1,0,0)(0,1,0)(1,1,0)(0,0,1)时,逻辑式结果为 False。
注意:(())合法;不会出现诸如(|)(&)的不合法情况
3. 滑稽树前做游戏,滑稽树后做交易(U62974)
(trade.cpp,500ms,512MB)
题目描述
滑稽果被排成一列,‘老板’要求每个顾客只能买一段连续的区间。
某个神仙OIer来这里买滑稽果,他对每个滑稽果都有一个喜爱程度 Ai 是一个整数,-100≤Ai≤100,
并保证∑Ai <=2147483647,最终的满意度为所有他买到的滑稽果的喜欢程度之和,如果和为正(不管是正多少,只要大于 0 即可),则他满意了。
现在神仙OIer想知道在他满意的条件下最多能买到多少滑稽果。
输入描述
第一行一个正整数 n,表示‘老板’一共摘了 n 个滑稽果。
第二行 n 个整数,每个整数 Ai 表示 sxd 第 i 个滑稽果的喜爱程度为多少。
输出描述
一行一个正整数 ans 表示在神仙OIer满意的条件下最多能买到多少滑稽果
输入样例
5
0 0 -7 -6 1
输出样例
1
数据范围及提示
对于 30%的数据,n<=5*10^3
对于 60%的数据,n<=10^5
请注意本题的内存限制,完成代码后请务必计算一下你程序的内存是否超限。
其实原来这道题有4个数据是大数据,但由于洛咕咕咕的数据上传zip的大小不能超过20M,所以就上传不了啦
对于原来所有数据,n<=3*10^7
对于这种数据,不用快读快写是卡不过去的
两个快读快写模板
fastIO.cpp
(注意,只能用freopen读入)
1 | inline char gc() |
一个正常的快读快写模板
(就是可以不用freopen读入的)
1 | template<class T>void read(T& x) |
下面是队列,双端队列,栈,取出最大值或取出最小值的优先队列的一些基本操作
1 | deque<int> que //双端队列 |
1 | stack<int> st //栈 |
1 | queue<int> que //队列 |
1 | priority_queue<int> que//取出最大值的优先队列 |
题解(带标程)
1. 翻栈(stack)
1 | /* |
2. 填写逻辑(exp)
1 | /* |
3. 滑稽树前做游戏,滑稽树后做交易(trade)
1 | /* |