模板练习(LUOGU)】的更多相关文章

代码+注释: #include <iostream> #include <cstdio> using namespace std; int n, q, flag, x, y, v; ]; struct node{ long long a, b; }tree[]; //树,a为数据域,b为标记 void build_tree(int now, int l, int r) { //建树 if (l == r) { tree[now].a = a[l]; //填充数据 return ;…
1:并查集 P3183食物链 #define man 300050 ; int find(int x){ if(fa[x]==x) return fa[x]; return fa[x]=find(fa[x]); } int main(){ n=read();k=read(); ;i<=*n;i++) fa[i]=i; //[1,n]同类;[n+1,2*n]猎物;[2*n+1,3*n]天敌; ;i<=k;i++){ opt=read();x=read();y=read(); if(x>n|…
前言:對於這週的咕咕咕表示好像沒什麼好表示的,完全沒有靈感a......寫東西真的好難啊......於是又玩了半天鬼泣4???還挺好玩的 來源:題解 题目背景 缩点+DP 题目描述 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次. 输入输出格式 输入格式: 第一行,n,m 第二行,n个整数,依次代表点权 第三至m+2行,每行两个整数u,v,表示u->v有一条有向边 输…
题面 解题思路 线性基,是构造出一组数:ax,ax-1-.a1,ax的二进制最高位为x.这些数字能异或和可以表示原来所有数的异或和.其实相当于一个高斯消元的过程.所以我们按位枚举,如果这一位曾经没数,就直接加入,如果有数,我们就让这两个数异或起来,进而继续表示其他的数.要求最大值则按位贪心即可. 代码 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #define L…
传送门 解题思路 AC自动机,是解决多模匹配问题的算法,是字典树与kmp结合的算法,可以解决许多子串在文本串中出现的次数等信息.关键是实现一个fail指针,是指向更靠上的前缀相同字母,从而可以实现在文本串中跳的操作. 代码 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<queue> using namespace std; co…
求区间内是否有个数大于二分之一的数,有的话输出这个数,没有的话输出0. 在询问的时候,如果左边有sum大于这个limit,就可以继续求,如果右边有sum大于limit  也递归, 如果都不行,返回 0: #include<cstdio> #include<algorithm> #include<string.h> #include<math.h> using namespace std; ; int Root[maxn],cnt; struct node {…
模板:luogu P3369 [模板]普通平衡树 code: #include <cstdio> #include <cstdlib> const int MAX_N=100010; int rd() { int x=0,fla=1; char c=' '; while(c<'0' or c>'9') {c=getchar();if(c=='-') fla=-fla;} while(c>='0' and c<='9') x=x*10+c-'0',c=getc…
素性测试是数论题中比较常用的一个技巧.它可以很基础,也可以很高级(哲学).这次主要要介绍一下有关素数判断的奇技淫巧 素数的判断主要分为两种:范围筛选型&&单个判断型 我们先从范围筛选型这种常用的开始讲起,这里采用模板题Luogu P3383 [模板]线性筛素数来进行测试 1.埃氏筛 这是最常用的筛法了,思路也很简单:任何一个素数的倍数都是合数 然后我们O(n)扫一遍,同时筛去素数的倍数 但是有一些数如6,会被2和3都筛去一次,就造成了效率上的浪费,所以复杂度经证明为**O(n log lo…
最近在数学这一块搞了蛮多题目,已经解决了数论基础,线性代数(只有矩阵,行列式待坑),组合数学中的一些简单问题.所以接下来不可避免的对博弈论这一哲学大坑开工. 当然,由于我很菜,所以也只能从最基础最容易的部分讲起了. 这次主要介绍两个基本模型:Bash Game&&Nim Game,还是比较经典的 下面开始讲 1.Bash Game Bash Game(巴什博弈)是一种零基础的入门题目,它的基本模型大概是这样的: 一堆石子共n个,两人轮流从中取石子,规定每次至少取一个,最多取m个,最后取光者…
YY引言 在NOI2018D1T1中出现了一些很震惊的情况,D1T1可以用最短路解决,但是大部分人都在用熟知的SPFA求解最短路.而SPFA的最坏复杂度能够被卡到$O(VE)$.就是边的数量乘以点的数量,而用SPFA的各位都被恶意数据卡成了最坏情况.100->60.这显然很不划算.是时候祭出我们的堆优化$dijkstra$了. 核心思想 朴素的dijkstra的核心是一个贪心的过程.每次找当前已知权值的最小的边来进行松弛.但是每次找的过程中都要用$O(m)$的时间.这样很慢.时间复杂度是$O((…