技巧
撒旦即可
研究CV的菜狗
展开
-
POJ2104(平方分割)
解题思路:以前使用主席树AC过一次的题目,现在用平方分割来试试。大致做法就是,把所有数放进MAXN大小的桶中。然后对各个桶中的数进行排序。处理时采用二分搜索的办法确定结果。即如果有1.。。n个数。则用二分来试这个数试mid是区间中第几小的数。关于平方分割处理的细节就是:把不完全包括在桶中部分用枚举的办法筛选,对于完全包括在区间内的桶,则用二分搜索。最后的复杂度为O(m*(logn)*(根号n*lo...原创 2019-02-15 23:12:40 · 269 阅读 · 0 评论 -
HDU2298(三分+二分求解方程,入门,模板)
题意: 小球发射速度为v,求在(0,0)击中(x,y)处的目标,求发射角度。 题解: 设f(a)表示:角度为a,小球的横坐标与目标相同时,小球的高度。 计算可得f(a) = x*tan(a) - (4.9 * x ^2 / v^2) * (tan(a)^2 + 1) 这明显就是一个单峰函数,可用三分法求解峰值。 求解出峰值后,再用二分搜索,求解高度为y的角a. 关于三分搜索...原创 2019-05-07 15:10:41 · 149 阅读 · 0 评论 -
关于ACM中很重要的两个优化(读入挂和防溢栈)
还在因为 怕 g++ 提交时间很慢,但是用C++ 交又怕栈溢出??? 我们都知道,如果代码里有 递归函数 频繁调用, 用 C++ 提交代码, 很可能就会 出现 Runtime Error (ACCESS_VIOLATION) 但是用G++提交,如果数据量很多的话,又会出现 Time Limit Exceeded 如果做类似于树链剖分这种需要很多层DF...原创 2019-04-06 18:55:10 · 427 阅读 · 0 评论 -
poj1714(树的分治模板)
解题思路:已经把一些重要的地方注释在代码里了 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int inf=0x3f3f3f3f; struct node { int v,w,next; }s[20003]; int head[10003...原创 2019-02-25 14:06:15 · 330 阅读 · 0 评论 -
poj2785(折半枚举)
解题思路:大致就是如果直接四组枚举各种情况,那情况有O(N^4)。超时!如果使用折半枚举,则先枚举两组的情况,再用另外两组进行二分查找。复杂度为O(N^2logN^2).符合要求 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int s[4][4006]...原创 2019-02-14 11:46:48 · 266 阅读 · 0 评论 -
POJ3279(经典开关问题)
解题思路:如果枚举每一个格子的开关,复杂度为O(2^MN),这会超时。但观察规律可知,只要第一行的开关状态确定,后面的状态也都确定了。由此枚举第一行的开关状态即可。这样复杂度变为O(MN2^N)。 #include<cstdio> #include<cstring> #include<iostream> #define inf 0x3f3f3f3f usin...原创 2019-02-14 10:47:46 · 281 阅读 · 0 评论 -
POJ3320(尺取法)
解题思路:尺取法可以O(n)完成该题。还用map还过滤掉重复的元素。 #include<cstdio> #include<cstring> #include<map> #include<algorithm> #include<iostream> using namespace std; int s[1000009]; map<i...原创 2019-02-14 09:45:03 · 291 阅读 · 0 评论 -
poj3061(尺取法)
解题思路:用尺取法做的复杂度仅为O(n)。 #include<cstdio> #include<cstring> #include<algorithm> #define inf 0x3f3f3f3f using namespace std; int a[100009]; int main() { //freopen("t.txt","r",stdin); ...原创 2019-02-14 00:03:50 · 178 阅读 · 0 评论 -
hdu5289(双端队列的应用)
解题思路:这里使用双端队列来维护最大值和最小值,然后结合尺取法来解题。其中low维护的是到1--i个数中的最小值然后,high同理。然后不断增加i, 同时j不变,直到最大-最小>=k为止,此时[j,i-1]还是可行的,那么以j为开头,末尾任选有i-j种。 #include<cstdio> #include<cstring> #include<queue>...原创 2019-02-24 20:02:58 · 232 阅读 · 0 评论 -
poj2559(单调栈的使用)
解题思路:使用单调栈,解题复杂度为O(n).介绍一下思路:其实就是以h[i]为中心,向左,向右搜索有第一个小于h[i]的高度h[j],直到找到这个,并记录j.因为有这个小于在,h[i]就不能继续以h[i]的高度向两边扩散了。 再简单说一下单调栈,他可以维护一组数列呈单调关系,如果出现一个不满足单调关系的数,如5 4 2 1 3,则3就是不满足单调了,这样会把前面的数剔除栈,得到5 4 3,这样...原创 2019-02-24 14:08:26 · 301 阅读 · 0 评论 -
STL一些常用性质(priority_queue,sort,upper_bound,set结构体)
1.priority_queue结构体重载 #include<bits/stdc++.h> using namespace std; struct node { int t; node(){ } node(int a):t(a){ } }s[10]; priority_queue<node> q; bool operator< (node n1, nod...原创 2019-05-31 22:38:25 · 410 阅读 · 0 评论