De Prezer loves rectangles.He has a n × m rectangle which there is a number in each of its cells. We show the number in the j - th column of the i - th row by ai, j. De Prezer also loves query. So he gives you q queries. In each query, he gives you n…
3e7暴力,800ms+过,单调队列维护区间最小值. #include<bits/stdc++.h> using namespace std; typedef long long ll; ; int x[maxn], dq[maxn], pos[maxn]; int main() { freopen("minima.in","r",stdin); freopen("minima.out","w",stdout);…
题目链接 Alternating Strings II 题意是指给出一个长度为n的01串,和一个整数k,要求将这个01串划分为很多子串(切很多刀),使得每个子串长度不超过k,且每个字串不是01交替出现的串(例如01, 10, 101, 010, 101010这些都是01交替出现的串),求最少需要切多少次 令F[i]代表前i个数所需要切的最少的刀数(从1开始计数),那么有 F[i]  = min{F[j] | |j + 1, i| <= k 且 [j, i]这个子串不是01交替出现的串} + 1…
题目链接:http://codeforces.com/gym/101102/problem/D 题目大意:给你一个n*m的矩阵,矩阵里面的数值范围为[1,1e9].这个矩阵有一个值,如果相邻的多个数字是一样的,那么val += 他们的组合数,例如 1 1 1,那么就是val就是6. 问最后这个矩阵是val是多少? 思路: 我们固定右端点,先统计出上方有几个和他数值相同的数字,并把这个定义成这个位置的高,然后每次往统计以这个点为右下角的端点数即可.然后暴力右下角就是O(n*n) 我们发现,如果要每…
http://codeforces.com/gym/100801 题目大意:有从左到右有n个车站,有n-1种车票,第i种车票一次最多可以坐 i 站(1<=i<=n)   每种票有固定的价钱p[i],下车后可以继续上车,但每次下车都要再上车都要花费一定时间v[i],第1和n站上车不花费时间,车从一站到相邻的一站需要1分钟.只能买一种车票,问在t时间内 所有能从第1站到 第n站的方案  花费 的票价最低是多少. 解题思路: 这道题的关键在于如何求每种票起点到达终点所需的最少时间,如果找出了每种票到…
题意: 现在有1,2,3...N这N个站, 给定限定时间Limt,  N-1种票的价格, 分别对应一个最远距离,  叫你选择一种票, 满足可以在规定时间到达N站台,而且价格最低 思路: 如果买距离为L的票可以在规定时间到,那么距离>L的票也一定能到. 我们只需要二分出这个下界 L,然后在>=L里选择一个最低价格即可. 二分里面用单调队列优化. 复杂度O(NlgN). (注意可能爆 long long #include<bits/stdc++.h> #define ll long l…
题意:有一个长度为n的01序列,你可以移动k次,每次将一个数移到任意一个位置,求经过操作后区间连续最大的连续0的个数. “移动”操作看似情况很复杂,不好讨论,但其实无非就两种情况: 一.移动的是1:显然最优的策略是将1移动到最边上(相当于“移走”),目的是将两段连续的0合并. 二.移动的是0:最优策略是将小堆中的0移动到大堆里,目的是增加大堆中0的个数. 这样一来,情况就简单多了,问题转化成了求“将一段连续区间中的0合并,然后剩下的操作次数用于把其他地方的0引进来”的最优解,即求$min(max…
2892: 强袭作战 Time Limit: 50 Sec  Memory Limit: 512 MBSubmit: 45  Solved: 30[Submit][Status][Discuss] Description 在一个没有冬马的世界里,经历了学园祭后的春希着急着想要见到心爱的雪菜.然而在排队想见雪菜的fans太多了,春希一时半会凑不到雪菜面前. 作为高帅富,这样的问题怎么能难倒春希?春希从武也手中拿到了取自金闪闪宝库里的多啦A梦的传话筒,并且给每一个排队的fans都发了一个传话筒. 于…
Bob’s Race Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2833    Accepted Submission(s): 917 Problem Description Bob wants to hold a race to encourage people to do sports. He has got trouble i…
题目不说了,可以用线段树或者单调队列,下面附上代码. 线段树: #include <iostream> #include <stdio.h> #include <algorithm> /* AC 线段树每个节点存储对应区间的最大值.最小值,然后直接查询即可.6594MS. */ using namespace std; ; const int INF=0x3f3f3f3f; int minans[maxn],maxans[maxn]; int small,bigger;…