![](https://img-blog.csdnimg.cn/20190905201537325.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
技巧
Ray.C.L
不开longlong见祖宗
展开
-
区区区间间间(思维+单调栈)
思路:根据解释,题意就是求每个长度大于1的区间最大值-最小值之和,那么我们用单调栈,l[i]表示以a[i]为最大值最多向左扩展多长,r[i]表示以a[i]为最大值最多向右扩展多长,那么a[i]的贡献就是2种,1.ans+=(r[i]-l[i]+1)a[i]当i处于端点时的贡献.2.ans+=(r[i]-i)(i-l[i])*a[i] i处于中间时的贡献,然后我们吧a[i]=-a[i]就是求最小值的贡献。#include <cstdio>#include <cstring>#..原创 2020-07-19 17:14:43 · 232 阅读 · 0 评论 -
51nod 前缀异或
题目链接题意:k次询问问l-r的区间异或值是多少。思路:前缀异或#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<bits/stdc++.h>using namespace std;typedef long long ll;#define space putchar(' ')#define enter putchar('\原创 2020-05-13 17:01:07 · 192 阅读 · 0 评论 -
区间和(离散化+前缀和)
思路:区间和问题我们想到前缀和去求但是下标范围很大,但是数量小,所以我们吧每个数的下标和查询的区间进行离散化再前缀和。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<bits/stdc++.h>using names...原创 2020-04-27 21:23:37 · 285 阅读 · 0 评论 -
最长连续不重复子序列(双指针)
思路:i为右端点,J为左端点,从0-i对数进行标记,如果出现了1次以上则说明出现了重复的数,此时推进左端点并取消路上的标记#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<bits/stdc++.h>using name...原创 2020-04-26 20:05:50 · 288 阅读 · 0 评论 -
数的三次方根(二分)
思路:典型的实数二分,(快读暴毙警告)#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<bits/stdc++.h>using namespace std;typedef long long ll;#define s...原创 2020-04-26 17:38:58 · 375 阅读 · 0 评论 -
差分矩阵(二维差分)
思路:二维差分,差分矩阵为a[i][j],原矩阵为b[i][j],a[i][j]+=c的意思是以i,j为左上角n,m为右下角的子矩阵全部加c与一维差分一样我们需要抵消多余的,最后求前缀这里是求二维前缀。#include <cstdio>#include <cstring>#include <algorithm>#include <set>...原创 2020-04-26 17:36:20 · 976 阅读 · 0 评论 -
耍杂技的牛(贪心)
思路:通常求最大值最小是二分但这是个贪心,模拟一下我们可以发现w+s小的牛放在上面这就确定了排序方法,然后按照题意遍历求最大值最小。#include <algorithm>#include <iostream>#include <cstring>#include <iomanip>#include <string>#inc...原创 2020-04-23 10:18:25 · 203 阅读 · 0 评论 -
逆序对(数学,逆元)
思路:我们考虑在这n个位置中任意选取两个位置,依照前后顺序放置1和0,那么无论其余n-2个位置怎么放置,都会对结果贡献1。那么我们就能得出结果是#include <algorithm>#include <iostream>#include <cstring>#include <iomanip>#include <string>...原创 2020-04-17 16:06:27 · 190 阅读 · 0 评论 -
Xorto (暴力思维)
思路:要求[i,j][x,y]两区间亦或为0,那么[i,j]==[x,y]就行,我们规定[i,j]为左区间,[x,y]为右区间,我们枚举左区间的右端点算出左区间的值,再枚举右区间寻找与左区间相同的。#include <algorithm>#include <iostream>#include <cstring>#include <iomanip&...原创 2020-04-16 15:22:42 · 195 阅读 · 0 评论 -
Running Median(对顶堆维护中位数)
题目链接题意:给你n个数,当数字个数为奇数时输出此时的中位数思路:以第一个数作为mid值,建立一个大顶堆一个小顶堆,大于mid的加入小顶堆,小于mid 的加入大顶堆若两堆相差2个数更新mid,注意格式在这里插入代码片...原创 2020-04-09 19:41:09 · 693 阅读 · 0 评论 -
数码(数论分块)
思路:数论分块,那么咋分呢?我们先手动一发。比如此时r=66.我们要求1的出现次数那么就是1,[10,20) 66/1 = 66 , 而66/66 = 1,代表从[1,1]只有1个数最高位为1 66/10=6,66/6=10,代表从[10,10]有1个数高位为1 66/11=6,66/6=11,代表[11,11]有1个数高位为1 66/12=5,66/5=13,代表[12,13]有2个数高位为...原创 2020-04-08 17:53:35 · 307 阅读 · 0 评论 -
nozimi和字符串(尺取)
思路:对可更改为K的区间进行尺取#include <iostream>#include <algorithm>#include <cstdio>#include <set>#include <sstream>#include<string>#include<queue>#include<st...原创 2020-04-07 17:37:02 · 297 阅读 · 0 评论 -
月月查华华的手机(字符串子序列查找)
思路:用nex[i][a’b’…‘z]表示在i位置后第一次出现a’b’…'z的位置,从后往前推nex数组,用last['a’b…'z]表示最早出现的位置。通过nex数组这样我们查询B串是否出现就是O(B的长度)#include <iostream>#include <algorithm>#include <cstdio>#include <se...原创 2020-04-02 17:48:45 · 185 阅读 · 0 评论 -
830.单调栈
思路: 单调栈模板题#include <iostream>#include <algorithm>#include <cstdio>#include <set>#include <sstream>#include<string>#include<queue>#include<stack>...原创 2020-04-01 09:58:13 · 82 阅读 · 0 评论 -
区间的连续段(倍增,思维)
思路:用倍增思维来写。dp[i][j]表示从i开始吧序列分为2^j 段最多到哪。那么初始化就是dp[n+1][i]=n+1(他从n开始后面长度为2^i 中大于整个序列之和+k的位置是n+1)得到dp[i][j]=dp[dp[i][j-1]][j-1]#include <iostream>#include <algorithm>#include <cstdio...原创 2020-03-31 19:20:04 · 426 阅读 · 0 评论 -
HDU-4825 Xor Sum(01字典树)
思路:转化为01字典树贪心找他每一位异或为1的,那么最后找到就是最大的数。#include <iostream>#include <algorithm>#include <cstdio>#include <set>#include <sstream>#include<string>#include<que...原创 2020-03-30 19:08:48 · 153 阅读 · 0 评论 -
假的数学游戏(斯特林公式求N!长度)
题目链接思路:因为数很大所以我们用斯特林公式求n!的长度最接近x^x的长度就行。二分找最小的n。下面为斯特林公式求N!的长度#include <iostream>#include <algorithm>#include <cmath>#include <ctype.h>#include <cstring>#includ...原创 2020-03-28 17:18:56 · 151 阅读 · 0 评论 -
okitsukaze and Soldier 优先队列,贪心
题意:给你N个士兵。每个人的武力值为v,可组队人数为S,求怎么组队武力值最大。思路:从组队人数N-1开始,每次吧组队人数>=N的人的武力值加入,并用小顶堆维护人数的同时保证武力值最大。#include <iostream>#include <algorithm>#include <cmath>#include <ctype.h>#...原创 2020-03-27 15:37:34 · 149 阅读 · 0 评论 -
POJ2823 滑动窗口(单调栈,线段树)
Poj 2823给定一个数列,从左至右输出每个长度为m的数列段内的最小数和最大数。数列长度:N<=106,m<=N8 31 3 -1 -3 5 3 6 7-1 -3 -3 -3 3 33 3 5 5 6 7思路:线段树#include <iostream>#include <algorithm>#include <cmath...原创 2020-03-23 10:54:23 · 175 阅读 · 0 评论 -
日志统计(蓝桥)
思路:用二维数组存储数据,id当做下标,对每个id进行尺取找是否有热帖。#include <iostream>#include <algorithm>#include <cmath>#include <ctype.h>#include <cstring>#include <cstdio>#include &l...原创 2020-03-11 11:51:38 · 228 阅读 · 0 评论 -
跳木桩
思路:倒着想就是个最大上升子序列#include <iostream>#include <algorithm>#include <cmath>#include <ctype.h>#include <cstring>#include <cstdio>#include <set>#include &l...原创 2020-03-08 18:04:15 · 197 阅读 · 0 评论 -
N个最小和加强版
思路:每2个一对算最小的n个和,每次将加完后的n个和更新到a[i][j]最后算出的就是答案。记得清理优先队列#include <iostream>#include <algorithm>#include <cmath>#include <cstring>#include <cstdio>#include <set&g...原创 2020-03-01 15:54:45 · 275 阅读 · 0 评论 -
二叉树(计蒜客)
#include <iostream>#include <algorithm>#include <cmath>#include <cstring>#include <cstdio>#include <set>#include <sstream>#include<string>#inc...原创 2020-03-01 11:36:31 · 378 阅读 · 0 评论 -
N个最小和
思路:每次添加一个值到优先队列中。#include <iostream>#include <algorithm>#include <cmath>#include <cstring>#include <cstdio>#include <set>#include <sstream>#include&...原创 2020-02-28 16:19:49 · 271 阅读 · 0 评论 -
Air Conditioner-CF
题意:给你客人的人数,和餐厅初始温度,接下来输入每个客人到达的时间和令其感到满意的温度区间L-R,餐厅温度可以上升,下降,不变。问是否能使每个客人满意思路:查找区间是否有交集#include<bits/stdc++.h>#define MAXX 100005#define SIS std::ios::sync_with_stdio(false)#define ll lon...原创 2020-02-17 09:48:15 · 385 阅读 · 0 评论 -
十字图
思路:记录行列吧重复的减去。#include<bits/stdc++.h>#define MAXX 100005#define SIS std::ios::sync_with_stdio(false)#define ll long long#define INF 0x3f3f3f3fusing namespace std;const int MAX =2e5+5;co...原创 2020-02-15 19:03:05 · 180 阅读 · 0 评论 -
Moving Tables
题意:在一个狭窄的走廊里将桌子从一个房间移动到另一个房间,走廊的宽度只能允许一个桌子通过。给出t,表示有t组测试数据。再给出n,表示要移动n个桌子。n下面有n行,每行两个数字,表示将桌子从a房间 移到b房间。走廊的分布图如一图所示,每移动一个桌子到达目的地房间需要花10分钟,问移动n个桌子 所需要的时间。思路:若移动多个桌子时,所需要经过的走廊没有重合处,即可以同时移动。若有一段走廊有...原创 2020-02-10 11:04:24 · 406 阅读 · 0 评论 -
DNA序列---变异问题(string运用。模拟)
题目描述遗传是子代保持亲代特性的现象,变异是指子代与亲代存在不同之处。所谓突变,是指DNA序列在复制的过程中出现了可遗传性的改变。突变是某些遗传性疾病的主要原因。比如。染色体重组,基因突变等。其中,基因突变是造成变异的主要原因。 在DNA序列中,基因突变可能将一种带有遗传信息的密码子变成另外一种未知信息。我们研究的是,对给定的一条变异的DNA序列片段,有多少密码子被改变的。假设有n个不同的密...原创 2019-08-09 19:11:49 · 541 阅读 · 0 评论 -
ZZULIOJ2000求阶乘
emmm大数求阶乘对于大数来说,一个数的阶乘是非常大的,同样,一个int类型的整数,他的阶乘就有可能会很大。就拿50来说,他的阶乘位数是65位,就已经远远超过了long long int类型的最大值。这时候,我们要通过字符串的方法,来进行阶乘的运算。当然,需要注意的是:我们所求一个数的阶乘,这个数是在int范围内的,5000的阶乘位数是16326位。其方法是:首先,我们是可以先求一...原创 2019-07-30 21:02:28 · 480 阅读 · 0 评论