
基础算法
Ac_sch
这个作者很懒,什么都没留下…
展开
-
The XOR Largest Pair(最大异或对)—— 字典树Trie
From《算法竞赛进阶指南》0x16POJ / AcWing143/*数据为10^5,朴素方法O(N^2)会TLE可以利用小于O(NlogN)方法,想到可以利用字典树加贪心优化字典树插入,查询等基本模板如下*/#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <vector>using namespace原创 2020-09-21 17:55:45 · 349 阅读 · 0 评论 -
The XOR Longest Path(最长异或值路径)—— 字典树Trie
From《算法竞赛进阶指南》0x16 TriePOJ3764 / AcWing 144/*若利用朴素暴力的办法时间复杂度为O(N^2)则可以利用巧妙的数据结构字典树将每个数用32位01表示。再在每一个数与其余数异或最大,从最高位开始优先选择相反的为异或*/#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <vec原创 2020-09-21 17:53:12 · 162 阅读 · 0 评论 -
并查集经典食物链问题
acWing240食物链POJ1182食物链题目如下:动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是”1 X Y”,表示X和Y是同类。第二种说法是”2 X Y”,表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之原创 2020-09-17 00:10:42 · 199 阅读 · 0 评论 -
KMP专题
POJ - 3461 ( Oulipo )#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 1e6 + 10, M = 1e4 + 10;int Next[N], f[N];int n;char s[N], p[M];int slen, plen;void get_原创 2021-01-09 01:11:31 · 117 阅读 · 0 评论 -
经典滑动窗口模板题
滑动窗口 AcWing154 题目:给定一个大小为n≤106的数组。有一个大小为k的滑动窗口,它从数组的最左边移动到最右边。您只能在窗口中看到k个数字。每次滑动窗口向右移动一个位置。以下是一个例子:该数组为[1 3 -1 -3 5 3 6 7],k为3。窗口位置 最小值 最大值[1 3 -1] -3 5 3 6 7 -1 31 [3 -1 -3] 5 3 6 7 -3 31 3 [-1 -3 5] 3 6 7 -3 51 3 -1 [-3 5 3] 6 7 -3 51 3 -1 -原创 2020-09-22 00:16:08 · 576 阅读 · 0 评论 -
Dollar Dayz POJ3181
Dollar Dayz POJ - 3181Dollar Dayz POJ3181 —— vjudge本题可看作一个完全背包问题,可视为一个无限个硬币装袋模型。但数据为1 <= N <= 1000, 1 <= K <= 100。需要结合高精度加法计算。状态表示为 f [ j ] 金额为 i 时硬币的种类组合数。状态转移 f [ j ] = f [ j - i ] + f [ j ] 当前的种类组合数 + 使用了更大面额的组合数#include <iostream&g原创 2020-08-29 17:48:52 · 111 阅读 · 0 评论 -
E - Largest Rectangle in a Histogram(单调栈应用)
HUNAU2020-栈与单调栈(E - Largest Rectangle in a Histogram)E - Largest Rectangle in a Histogram.单调栈:定义:栈内元素具有单调性,如果新入栈元素破坏了单调性,就弹出栈内元素,直到满足单调性作用:方便求出某个数左右第一个比他小或大的元素,时间复杂度O(N)#include <iostream>#include <stack>#include <stdio.h>#define原创 2020-07-23 16:08:33 · 102 阅读 · 0 评论 -
常用排序算法
常用排序算法1. 冒泡排序快速排序归并排序1. 冒泡排序快速排序void quick_sort(int q[], int l, int r){ if(l >= r)return; int x = q[(l + r) >> 1], i = l - 1, j = r + 1; while(i < j){ do i++; while(q[i] < x); do j--; while(q[j] > x);原创 2020-12-27 00:37:25 · 106 阅读 · 0 评论 -
二维前缀和——激光问题Acwing99
激光问题题目:地图上有 N 个目标,用整数Xi,Yi表示目标在地图上的位置,每个目标都有一个价值Wi。注意:不同目标可能在同一位置。现在有一种新型的激光炸弹,可以摧毁一个包含 R×R 个位置的正方形内的所有目标。激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆炸范围,即那个正方形的边必须和x,y轴平行。求一颗炸弹最多能炸掉地图上总价值为多少的目标。输入格式第一行输入正整数 N 和 R ,分别代表地图上的目标数目和正方形的边长,数据用空格隔开。接下来N行,每行输入一组数据,每组数据包原创 2020-09-19 13:42:36 · 171 阅读 · 0 评论 -
Tallest Cow(最高的牛)Acwing101 —— 前缀和、差分
最高的牛(Tallest Cow)有 N 头牛站成一行,被编队为1、2、3…N,每头牛的身高都为整数。当且仅当两头牛中间的牛身高都比它们矮时,两头牛方可看到对方。现在,我们只知道其中最高的牛是第 P 头,它的身高是 H ,剩余牛的身高未知。但是,我们还知道这群牛之中存在着 M 对关系,每对关系都指明了某两头牛 A 和 B 可以相互看见。求每头牛的身高的最大可能值是多少。输入格式第一行输入整数N,P,H,M,数据用空格隔开。接下来M行,每行输出两个整数 A 和 B ,代表牛 A 和牛 B 可原创 2020-09-19 14:10:35 · 1578 阅读 · 0 评论 -
IncDec Sequence(增减序列)Acwing102 —— 前缀和、差分
IncDec Sequence(增减序列)Acwing102题目:给定一个长度为 n 的数列 a1,a2,…,an,每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一。求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种。输入格式第一行输入正整数n。接下来n行,每行输入一个整数,第i+1行的整数代表ai。输出格式第一行输出最少操作次数。第二行输出最终能得到多少种结果。数据范围0<n≤10^5,0≤ai&l原创 2020-09-19 21:16:27 · 1015 阅读 · 3 评论