题意 给定k,n,和n*n的矩阵,求一个子矩形满足权值和在[k,2k]之间 , 题解 这里用到了极大化矩阵的思想.推荐论文<浅谈用极大化思想解决最大子矩阵问题>Orz 如果有一个元素在[k,2k]之间.直接输出就好. 否则.把所有大于2k的元素作为障碍点. 求每一个最大化矩阵.(用单调队列) 如果这个矩阵权值和大于等于k 那么这个矩阵一定有一个子矩阵满足条件.这个结论可以证明. 假设这个矩阵权值和小于等于2k则直接输出这个矩阵. 否则这个矩阵权值和一定大于2k 假设这个矩阵去掉第一行后权值和大…
[POI2008]账本BBB Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 524  Solved: 251[Submit][Status][Discuss] Description 一个长度为n的记账单,+表示存¥1,-表示取¥1.现在发现记账单有问题.一开始本来已经存了¥p,并且知道最后账户上还有¥q.你要把记账单修改正确,使得 1:账户永远不会出现负数: 2:最后账户上还有¥q.你有2种操作: 1:对某一位取反,耗时x: 2:把最后一位移到…
Description 一个长度为n的记账单,+表示存¥1,-表示取¥1.现在发现记账单有问题.一开始本来已经存了¥p,并且知道最后账户上还有¥q.你要把记账单修改正确,使得 1:账户永远不会出现负数: 2:最后账户上还有¥q.你有2种操作: 1:对某一位取反,耗时x: 2:把最后一位移到第一位,耗时y. Input The first line contains 5 integers n, p, q, x and y (1 n 1000000, 0 p;q 1000000, 1 x;y 100…
题目大意:给定一个由+1和−1构成的长度为n的序列,提供两种操作: 1.将某一位取反,花销为x 2.将最后一位移动到前一位.花销为y 要求终于p+sumn=q.且p+sumi≥0(1≤i≤n),求最小花销 枚举终于的序列以哪个点開始.那么从这个点往后的最小前缀和能够用单调队列预处理出来 然后贪心地把左边的−1改成+1.右边的+1改成−1直到满足要求就可以 #include <cstdio> #include <cstring> #include <iostream> #…
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5945     问题描述 输入描述 输出描述 输入样例 输出样例 题意:中文题,不再赘述: 思路:  BC题解如下: 从后往前推,可以得到状态转移方程dp[i]=(dp[k*i],dp[i+l])+1{1<=l<=t} 根据这个转移方程我们需要快速求得min{dp[i+l]}(1<=l<=t) 我们知道这种形式的就是单调队列优化dp的标准形式 维护一个dp[i]从队头到队尾递增的队列 每…
首先得讲一下单调队列,顾名思义,单调队列就是队列中的每个元素具有单调性,如果是单调递增队列,那么每个元素都是单调递增的,反正,亦然. 那么如何对单调队列进行操作呢? 是这样的:对于单调队列而言,队首和队尾都可以进行出队操作,但只有队尾能够进行入队操作. 至于如何来维护单调队列,这里以单调递增队列为例: 1.如果队列的长度是一定的,首先判断队首元素是否在规定范围内,如果不再,则队首指针向后移动.(至于如何来判断是否在制定范围内,一般而言,我们可以给每个元素设定一个入队的序号,这样就能够知道每个元素…
题目链接:http://acm.fzu.edu.cn/problem.php?pid=1914 题意: 给出一个数列,如果它的前i(1<=i<=n)项和都是正的,那么这个数列是正的,问这个数列的这n种变换里, A(0): a1,a2,-,an-1,an A(1): a2,a3,-,an,a1 - A(n-2): an-1,an,-,an-3,an-2 A(n-1): an,a1,-,an-2,an-1 问有多少个变换里,所以前缀和都是正整数. 思路:因为变换是a[n]后面接着a[1]所以我们把…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1047 题意:见中文题面 思路:该题是求二维的子矩阵的最大值与最小值的差值尽量小.所以可以考虑求出每个子矩阵的最大值和最小值.考虑一维求子段的最小值/最大值的思路.滑动窗口+单调队列. 转换成二维.设minNum[i][j]表示右下角为(i,j)的子矩阵的最小值.先对矩阵每一行用一维的做法求出每一行的子段的最小值,然后同样的方法求列的最值.注意在求列的子段最小值时比较的元素不是原矩阵的元素…
第一次写单调队列太垃圾... 左右各扫一遍即可. #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define N 50010 using namespace std; struct data { int x,h; }a[N],q[N]; int n,m,l,r; int ok1[N],ok2[N]; inline int read() { ,ans…
1047: [HAOI2007]理想的正方形 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2857  Solved: 1560[Submit][Status][Discuss] Description 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. Input 第一行为3个整数,分别表示a,b,n的值第二行至第a+1行每行为b个非负整数,表示矩阵中相应位置上的数.每行相邻两数之间…