题意:给你n行m列的数组,和k次的询问,问从l行到r行是否存在一个非递增的列 思路:看到这道题的数据量我们就知道直接暴力不可取,所以我们采用了预处理的方法,我们记录下来每一行的最长的非递减的列的开头的哪个行,比如num[i]=k;表示到第i行的最长的非递减的列是从第k行开始的,在每一次的询问中我们只需要比较num[r]的值与l的值就可以了: 代码: #include <cstdio> #include <cmath> #include <iostream> #inclu…
题目链接:http://codeforces.com/contest/777/problem/C C. Alyona and Spreadsheet time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output During the lesson small girl Alyona works with one famous spreadsh…
对询问按右端点排序,对每一列递推出包含当前行的单调不下降串最多向前延伸多少. 用multiset维护,取个最小值,看是否小于等于该询问的左端点. #include<cstdio> #include<vector> #include<algorithm> #include<set> using namespace std; multiset<int>S; #define INF 2147483647 struct Data { int l,r,p;…
题目链接 Alyona and Spreadsheet 记a[i][j]为读入的矩阵,c[i][j]为满足a[i][j],a[i - 1][j], a[i - 2][j],......,a[k][j]不上升的k的最小值. d[i]为max(c[i][j]) (1 <= j <= m) 那么对于每次询问l,r,若d[r] <= l,那么就符合,反之不符. 因为这里只说名了1 <= nm <= 100000,所以二维数组两个维的大小不确定. 数据可能有n=1, m=100000,…
题意:给你一堆汉诺塔的盘子,设内半径为a,设外半径为b,高度为h,如果bj ≤ bi 同时bj > ai 我们就认为i盘子能落在在j盘子上,问你最高能落多高 思路:一看题意我们就能想到贪心,首先我们对这些圆盘先按照b从大到小排序,如果b相同,那么就要按照a从大到小排序,其实落汉诺塔的过程就像在栈一样,先进后出,所以我们可以用栈来模拟落汉诺塔的过程,如果当前的不能落上我们就把最上面的盘子拿走,直到能落下一个盘子,每一次都计算一下当前的高度,并判断是否达到最高即可 代码: #include <bi…
C. Alyona and mex Problem Description: Alyona's mother wants to present an array of n non-negative integers to Alyona. The array should be special. Alyona is a capricious girl so after she gets the array, she inspects m of its subarrays. Subarray is…
Alyona and Spreadsheet 这就是一道思维的题,谈不上算法什么的,但我当时就是不会,直到别人告诉了我,我才懂了的.唉 为什么总是这么弱呢? [题目链接]Alyona and Spreadsheet &题意: 给一n*m的表,之后给T个询问,每个询问是r1和r2,问从r1行到r2行(包括这2行)是否至少有一列是非递减的? &题解: 可以把给的n*m表处理一下,处理成b[i][j]数组,存的是第j列递增开始的位置是第几行. 这样,只有b中第r2行最小的小于r1就行了,否则就是…
Codeforces Round #401 (Div. 2) 很happy,现场榜很happy,完全将昨晚的不悦忘了.终判我校一片惨白,小董同学怒怼D\E,离AK就差一个C了,于是我AC了C题还剩35分钟立刻开D题,不料英文苦涩难懂,懂了题意之后发现也是个水题,从后往前遍历一遍即可.然而代码速度和思维都不算很好,还有半分钟在徘徊要不要测一下样例,但又怕OJ卡了,直接交第一组就跪了,然后发现个小问题改改又直接交最后5秒然而以第一组WA结束本场CF. A  Shell Game 题意:有三个位置分别…
1.CF #376 (Div. 2)    C. Socks       dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需要高效的随即存取,而不在乎插入和删除的效率,使用vector . (2)如果需要大量的插入和删除,而不关心随即存取,则应使用list . #include<bits/stdc++.h> #define F(i,a,b) for (int i=a;i<b;i++) #define FF(i,a…
1.CF #375 (Div. 2)  D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多少个湖,然后输出. #include<bits/stdc++.h> #define F(i,a,b) for (int i=a;i<b;i++) #define FF(i,a,b) for (int i=a;i<=b;i++) #define mes(a,b) memset(a,b,s…