摘要: 一种矩形切割的做法: 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long LL; 4 const int maxn=1005; 5 struct node{//矩形的结构体 6 LL x1,y1,x2,y2; 7 阅读全文
posted @ 2022-04-16 16:32 YHXo 阅读(107) 评论(0) 推荐(0)
摘要: 这可能是我目前做过的最简单的一道noi题目了...... 先对e=1的处理,用并查集;再对e=0查询,如果这两个在同一集合中,则为“”NO“,最后都满足的话输出”“YES”; 数值很大,用一下离散化就行了。 1 #include<bits/stdc++.h> 2 using namespace st 阅读全文
posted @ 2022-04-16 14:23 YHXo 阅读(46) 评论(0) 推荐(0)
摘要: 分析可知:将起点和终点按照从小到大的顺序排序,对答案不会产生影响 所以此时我们得到一种模拟做法: 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=2e4+10; 4 int n,a[N],b[N],ans; 5 //模拟做 阅读全文
posted @ 2022-04-16 12:38 YHXo 阅读(172) 评论(0) 推荐(1)
摘要: 二维平面上的差分,我们可以对每行处理。 比如我们要把(2,2)(5,5)之间的矩形加上1,可以这样处理。 0 0 0 0 0 0 0 +1 0 0 0 -1 0 +1 0 0 0 -1 0 +1 0 0 0 -1 0 +1 0 0 0 -1 0 0 0 0 0 0 那么这道题就简单了。 1 #inc 阅读全文
posted @ 2022-04-16 11:19 YHXo 阅读(29) 评论(0) 推荐(0)
摘要: 题目就是要求在n*m的矩形中找出一个k*k的正方形(理想正方形),使得这个正方形内最值之差最小(就是要维护最大值和最小值),显然我们可以用单调队列维护。 但是二维平面上单调队列怎么用? 我们先对行处理,将其压缩为一个(n-k+1)*m的矩形;再对列进行处理,最终压缩为一个(n-k+1)*(m-k+1 阅读全文
posted @ 2022-04-16 10:42 YHXo 阅读(36) 评论(0) 推荐(0)
摘要: 看到这道题很容易想到单调栈,但我一开始想的是从后往前扫,但发现会有问题(因为这样会对后面牛的答案造成影响),所以这时我们要及时换一个思路,从前往后扫。 维护一个单调递减的栈,插入h[i]时,小等于它的数都要出栈,累加栈中元素数量,表示的意义就是:当前栈中的牛都是可以看到i这头牛的,即他们不会被i这头 阅读全文
posted @ 2022-04-16 08:01 YHXo 阅读(88) 评论(0) 推荐(0)