
常用算法
correct!
It's better to burn out than to fade away.
展开
-
ST算法&&RMQ
ST算法是适用于RMQ问题的一种算法,可以在O( nlog(n) )预处理之后,以O( 1 )的复杂度求解区间 [l,r] 的最值问题,也是采用了倍增思想详细的思想过程放到了代码注释部分//ST 求解 RMQ问题 #include<bits/stdc++.h>using namespace std;int arr[100];int f[100][100];//f[i][...原创 2019-05-19 18:25:21 · 192 阅读 · 0 评论 -
2020牛客寒假算法基础集训营6 A 配对
https://ac.nowcoder.com/acm/contest/3007/A题目描述现在有正整数集合 A 和 B,每个集合里有 N 个数,你要建立他们间的一一映射将每对配对的数字相加可以得到 N 个和,你要做的就是最大化第 K 大的和1≤K≤N≤100,000 输入的所有数字不超过 1e8思路贪心~为嘛我一开始没想起来第K大就是第(N - K + 1)小,让比...原创 2020-02-15 18:08:05 · 161 阅读 · 0 评论 -
2020牛客寒假算法基础集训营5 D. 牛牛与牛妹的约会
https://ac.nowcoder.com/acm/contest/3006/D题目描述牛牛在辛苦的一天的比赛之后,要去找牛妹玩,其实牛妹那天也在比赛。他为了找到牛妹,要尽快的从自己的比赛地到她的比赛地。还记得吗,比赛地都是只在x轴上的,所以两个人的坐标都满足。牛牛除了可以以1单位距离/单位时间的速度移动任意时间以外,还可以花费1单位时间进行闪现。每次闪现时,如果当前他的坐标是,他...原创 2020-02-14 15:54:59 · 266 阅读 · 0 评论 -
E - Antinomy与红玉海
题目链接沉迷《原初幻想41》的冒险者Antinomy来到了红玉海——远东之国和奥萨德次大陆之间的中立海域。Antinomy走到天之御柱前,发现卑微红色职业们正在排队,无聊的在一起玩游戏,由于自己是高贵的蓝色职业,所以Antinomy无法理解他们在玩什么,但是可以看出,他们一共有nnn个人,每个回合中需要有一个人当工具人来计分,剩下的人进行游戏。但是他们都不想当工具人,而是想参与游戏,其...原创 2019-12-11 09:11:45 · 226 阅读 · 0 评论 -
Codeforces Round #579 (Div. 3) D2 Remove the Substring (hard version)
题目链接题意:给两个字符串 A , B ,长度 A > B,B 是 A 的子串,问最多删除多少个字符 B 依然是 A 的子串(子串定义不同,本题子串指的是例如 test 的子串有 test , tes , tet , est ,tst, te, ts ,tt ,es ,st, et, t ,e ,s ,t,即可以不连续)思路:首先暴力的思路肯定是有的,但是只能过D1,不适合...原创 2019-08-14 11:17:24 · 126 阅读 · 0 评论 -
E. Two Arrays and Sum of Functions
You are given two arrays a and b, both of length n.Let’s define a function f(l,r)=∑l≤i≤rai⋅bi.Your task is to reorder the elements (choose an arbitrary order of elements) of the array b to minimize ...原创 2019-05-30 23:06:27 · 325 阅读 · 0 评论 -
henu TonyStark with Sequence(差分)
题目链接题目描述输入一个数 t ,表示有 t 组测试数据每组给定一个度为 n (1 <= n <= 10000000) 的数列,共有 m (1 <= m<= 10000000) 次操作,每次操作给定一个区间 [ l , r ] (1 <= l <= r <= n) ,和一个数 v (-100 <= v <= 100) ,是该区间...原创 2019-07-29 18:36:44 · 186 阅读 · 0 评论 -
henuoj 1172 Sanzo’Machine
题目链接题目描述:Sanzo手上有n个任务,每个任务都有起始和结束时间。两个重叠的任务不能使用同一台 Machine。现在他来请教你这n个任务最少需要多少 Machine呢?第一行输入一个整数n(1 <= n <= 1e5)接下来 n 行每行两个数 l , r (1 <= l <= r <= 1e5)表示任务的起始时间和终止时间样例输入...原创 2019-07-29 16:02:57 · 188 阅读 · 0 评论 -
前缀和与差分
前缀和与差分用一道题来引入前缀和的概念要求一个数列某一区间 [ l,r ] 内的数字的和,我们可以用[ 0,r ]的和减去[ 0,l ]的和,这样计算的话,只需要用一个数组去记录到某一个下标为止的,之前所有数字的和就可以了。int c[100];//c[i]记录从起点到c[i]的和c[0]=arr[0];for(int i=1;i<n;i++){ c[i]=c[i-1]+arr[...原创 2019-04-24 15:40:32 · 2565 阅读 · 0 评论 -
差分数组+等差数列
之前我们经常遇到的差分的应用就是区间修改,比如区间增加1,就可以使,,然后前缀和就是原来的数组了。如果我们对加上一个首项为公差为的等差数列,上述的差分数组肯定不行了,相当于需要对每一个点都进行一次更改,都加,但是可以考虑一下,每一个点都加,不就相当于把现在的一阶差分数组当成原数组,然后对这个数组再做一次差分吗,这样的话刚刚那个区间内部凡是的位置,都可以通过这个二阶差分修改两个端点实现,然后我们...原创 2020-02-10 12:58:01 · 1226 阅读 · 0 评论 -
「土」秘法地震
题目链接题目描述:帕秋莉掌握了一种土属性魔法这种魔法可以在一片k×k大小的一个正方形区域内产生地震但是如果某片即将产生地震的区域内有建筑物,帕秋莉会停止施法整个地图大小为n×m,其中一些地方有建筑请问有多少种可能的情况,使得帕秋莉会停止施法输入描述:第一行三个数n, m, k,意义见描述接下来一个n×m的01矩阵表示这篇区域的情况,1表示这个地方有建筑输...原创 2019-11-23 23:56:37 · 503 阅读 · 0 评论 -
2019 icpc上海网络赛 B Light bulbs(差分 + 离散化)
这个题上次发了一片博客,但是那个是后来补题的时候发现的类似于找规律一样(玄学),今天来一篇正经一点的首先,本题卡空间,所以线段树是不行的,考虑差分区间,差分区间更改操作固然快(O(1)),但是因为 n 的值太大,又有一个巨大的 T,无法在 N * T时间内完成操作,但是题目说明了操作数不多,因此可以对所有操作的区间进行离散化。举个例子,如果有一个操作,区间是[1, 3], 离散化之后,1 ...原创 2019-09-16 23:28:11 · 211 阅读 · 0 评论 -
poj 3070 (矩阵快速幂) Fibonacci
题目链接题目描述:求一个二维矩阵a[ ][ ] = { {1, 1}{1, 0}}n次幂后的a[1][2],直接矩阵快速幂即可矩阵快速幂和普通的快速幂相似,只需要将普通的快速幂中的乘法改成矩阵乘法即可快速幂模板矩阵快速幂推荐使用结构体去写,用数组会出现莫名其妙的错误#include <cstdio>#include <iostream>us...原创 2019-08-17 11:34:02 · 154 阅读 · 0 评论 -
坐标离散化
坐标离散化是一种常见的技巧,对于一些数据量特别大的题目往往有奇效。举个例子,你需要对输入的 n (n <= 1e5)个数进行标记,每个数标记一下(visit[i] = 1),但是如果对于每一个输入的数字 ai <= 1e18,我们就没办法去建立一个长度为1e18的数组,(当然可以用 set 或者 map),但是其实我们在存放这些数据的时候根本用不到那么大的数组,我们可以对数组的每一...原创 2019-08-06 11:20:11 · 189 阅读 · 0 评论 -
快速乘 快速幂 输入输出挂模板
快速乘&&快速幂ll qc(ll x,ll y,ll mod){ return (x*y-(ll)((long double)x/mod*y)*mod+mod)%mod; }ll qpow(ll x, ll y, ll m){ ll res = 1; res %= m; while (y){ if(y & 1){ res = q...原创 2019-07-31 19:14:51 · 183 阅读 · 0 评论 -
倍增
大家应该都知道快速幂,对于不熟悉倍增的人来说,快速幂是一个很好的入门。首先回顾一下快速幂的流程。对于一个数的任意次方,例如 2^5,都可以拆分为 2*(2^2)快速幂中int qpow(int a,int b){ int res=1; while(b){ if(b&1)res*=a; b>>=1; a*=a; }}可与看出,是将例如2的31次方...原创 2019-05-19 11:18:29 · 249 阅读 · 0 评论 -
二分
二分法对一个有序数组:例如 1 2 3 4 5 进行元素查找时,例如查找元素5,如果从头遍历到底,时间复杂度为O(n),但是如果用二分搜索的方法首先去最中间的值3,3比5小,所以搜索区间移动到[4 5]内,这样一下子就将范围缩小了一半,然后这样一直进行下去直至找到,或者是l>r即为未找到,程序结束package fir;public class Main{ public vo...原创 2019-04-24 22:10:55 · 144 阅读 · 0 评论 -
尺取法
尺取法尺取法,就是像虫子蠕动一样,左右端点同时移动,若不满足条件则右端点移动至满足条件的位置,若满足条件则更新结果,并且将左端点右移,再次判断是否满足条件。常用于求:满足题目指定的某一条件的最小区间问题#include<bits/stdc++.h>using namespace std;int main(){ /* *尺取法 */ for(;;){ w...原创 2019-04-05 13:41:50 · 118 阅读 · 0 评论