- 博客(76)
- 收藏
- 关注
原创 点分治
题目列表:P4178poj1741treeP2634bzoj2152聪聪可可P3806P4149P2664P4178树上距离小于等于k的路径数#include<bits/stdc++.h>using namespace std;#define ll long long#define MAXN 80005int n,k;int cnt,first[MAXN...
2019-10-23 20:05:44 170
原创 GCD类莫比乌斯反演模板
题目列表:洛谷P3455洛谷P2522洛谷 P1447洛谷 P2568洛谷 P1829洛谷 P3768洛谷https://www.luogu.org/problem/P2522对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。前缀和容斥:Ans((1,b),(1,d))−A...
2019-09-28 14:48:32 226
原创 状压dp
位运算技巧: 去掉最后一位 x>>1 在最后加一个0 x<<1 在最后加一个1 x<<1|1 把最后一位变成1 x|1 把最后一位变成0 x|1-1 把最后一位取反 x^1 把右数第k位变成1 x|(1&l...
2019-09-15 19:42:22 283
原创 树形dp
题目列表:P1122P2016P1352P2015P2014P1273P1272P2458P1131P1270P3177P1122最大子树和#include<bits/stdc++.h>using namespace std;int n;int v[16005];vector<int> vec[16005];int mx=~0x3f...
2019-09-04 17:09:14 214
原创 自用数论板子
bool vis[MAXN];ll prime[MAXN],cnt;//素数个数;ll mu[MAXN],mus[MAXN];void getMus(){//线性筛求莫比乌斯函数1-N的函数值 int N=MAXN; //memset(mu,0,sizeof(mu)); memset(vis,0,sizeof(vis)); mu[1] = 1; c...
2019-09-03 20:45:15 180
原创 区间dp
题目列表:P1040hdu3506hdu4632hdu4745hdu2476 hdu4283poj2955poj1651P1040加分二叉树#include<bits/stdc++.h>using namespace std;#define ll long longint n;ll dp[30][30];int root[30][30];int fl...
2019-08-08 15:28:34 262
原创 网易2021校招笔试-C++开发工程师(提前批)
已知,如果教授 A 认可教授 B ,且教授 B 认可教授 C,那么即可视为教授 A 也认可教授 C。现在有n个物品,每一个物品都有一个价值,现在想将这些物品分给两个人,要求这两个人每一个人分到的物品的价值总和相同(个数可以不同,总价值相同即可),剩下的物品就需要扔掉,现在想知道最少需要扔多少价值的物品才能满足要求分给两个人。(“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串,“asds”就不是回文串。现在请你编写一个程序,程序要能计算出小易可以得到的最短回文串。
2023-03-18 18:38:19 534
原创 C++
中文C++11介绍,英文C++11介绍C++11 的 FAQhttp://www.open-std.org/jtc1/sc22/wg21/C++0x/C++11 Support in GCC:http://gcc.gnu.org/projects/cxx0x.htmlWhat is C++0x:https://www2.research.att.com/~bs/what-is-...
2020-03-10 15:57:25 192
原创 次小生成树
https://ac.nowcoder.com/acm/contest/1057/G/*严格次小生成树5 61 2 11 3 22 4 33 5 43 4 34 5 6第一行包含两个整数N 和M,表示无向图的点数与边数。 接下来 M行,每行 3个数x y z 表示,点 x 和点y之间有一条边,边的权值为z。算法详解:kruskal+LCA倍增1.用kruskal求出最小...
2019-10-31 17:37:57 205
原创 树上差分(LCA)
https://ac.nowcoder.com/acm/contest/1057/C#include<bits/stdc++.h>using namespace std;#define MAXN 100005int T;//最大深度 int n,m;int cnt,first[MAXN<<1],nxt[MAXN<<1];int u[MAX...
2019-10-26 21:05:14 491
原创 树网的核
找到任意一条直径,枚举直径上所有路径,找到每条路径上的偏心距,其中最小的偏心距就是答案,这条路径就是树网的核#include<bits/stdc++.h>using namespace std;#define MAXN 610int n,k;int cnt,first[MAXN],nxt[MAXN];int u[MAXN],v[MAXN],w[MAXN];voi...
2019-10-17 15:52:37 218
原创 树的直径模板
https://ac.nowcoder.com/acm/contest/1057/A#include<bits/stdc++.h>using namespace std;#define MAXN 200005int n,k;int v[MAXN],w[MAXN];int cnt,first[MAXN],nxt[MAXN];void add(int a,int b,...
2019-10-13 13:20:33 209
原创 区间不同数的个数(树状数组)
P1972#include<bits/stdc++.h>using namespace std;#define ll long long#define MAXN 1000005namespace IO { struct q_instream { template < typename classT > inline q_...
2019-10-08 20:46:50 706
原创 GCD线段树+差分+树状数组模板
https://ac.nowcoder.com/acm/contest/1033/B线段树维护原数组的差分数组,因为题目直接区间修改,用线段树维护原数组的gcd效率很低,区间gcd的值会发生改变根据更相减损术的原理,可将,推广得首位不变树状数组维护原数组,因为推广得到的式子需要用到原数组,需要区间修改 单点查询#include<bits/stdc++.h>using...
2019-10-08 18:52:44 303
原创 线段树维护区间最大连续子段和
https://ac.nowcoder.com/acm/contest/1033/A从最小的区间(单点),推广到大区间,最大连续子段只有三种情况:1.最左端 2.最右端 3.跨越端点左侧最右端+右侧最左端#include<bits/stdc++.h>using namespace std;#define MAX 100005#define ll long long#...
2019-10-07 15:41:51 355
原创 模拟退火模板(SA)
要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。...
2019-09-21 13:18:52 368
原创 P2051 [AHOI2009]中国象棋(dp+分类讨论)
https://www.luogu.org/problem/P2051总共分为3种情况:1.放0个棋子: 直接转移2.放1个棋子: 将一颗棋子放在已含有0个棋子的列中 将一颗棋子放在已含有1个棋子的列中3.放2个棋子: 将两颗棋子放在...
2019-09-18 19:12:43 236
原创 异或线段树模板
https://ac.nowcoder.com/acm/contest/275/Chttp://codeforces.com/problemset/problem/242/E每个二进制位独占一棵线段树,很巧妙题意:给定一个长度为 n 的序列,有 m 次操作:操作有2种:1. 区间求和,即输入l,r,输出.2. 区间异或,即输入l,r,k,对于,将 a[i] 变为....
2019-09-10 19:45:10 514
原创 删除特定子序列(dp)
http://codeforces.com/problemset/problem/1096/Dchar c=" hard";dp[i][j]表示前i个字符不含有c[1]至c[j]子序列状态转移方程:如果s[i]不为特定字符,dp[i][j]=dp[i-1][j]。否则dp[i][j]=min(dp[i-1][j]+val[i],dp[i-1][j-1])。若为特定字符,为保证d...
2019-09-09 16:31:45 483
原创 杜教筛模板
洛谷https://www.luogu.org/problem/P3768#include<bits/stdc++.h>using namespace std;#define MAXN 10000005#define ll long longll mod;ll n;bool vis[MAXN];ll prime[MAXN],cnt;//素数个数;ll phi[M...
2019-08-31 11:06:14 271
原创 双向搜索模板
https://ac.nowcoder.com/acm/contest/889/D降低指数级数据的复杂度(本题从2^36降至2^18)#include <bits/stdc++.h>#define ll long longusing namespace std;ll num[40];set<ll> st;map<ll,ll> mp; in...
2019-08-15 18:11:35 779
原创 最大/最小表示法模板
https://ac.nowcoder.com/acm/contest/887/A用i = 0,j = 1,k = 0,表示从i开始k长度和从j开始k长度的字符串相同(i,j表示当前判断的位置)当我们str[i] == str[j]时,根据上面k的定义,需要进行k+1操作当str[i] > str[j]时,i位置比j位置上字典序要大,固不能使用i作为开头,又因为i开头和j开头的有...
2019-08-08 20:27:58 185
原创 离散化模板
https://ac.nowcoder.com/acm/contest/1001/A#include<bits/stdc++.h>using namespace std;#define MAXN 200005int a[MAXN],b[MAXN],c[MAXN];int cnt;int num[MAXN*3];int t[MAXN*3];void discret...
2019-08-06 15:55:19 129
原创 Upgrading Technology(st表+RMQ)
首先找到一个都能够达到的最小的j,将所有技能都达到一个大于等于j级的最大收益的等级。再减去一个收益最小的,以保证指示j等级的是该最小收益技能的j等级。st表+RMQ(824ms)#include<bits/stdc++.h>#define MAXN 1200#define ll long long#define inf 999999999999999using nam...
2019-08-05 09:54:51 197
原创 分组背包模板
cf-741B - Arpa's weak amphitheater and Mehrdad's valuable Hoses#include<bits/stdc++.h>using namespace std;#define MAXN 10050#define ll long longint n,p,m;int w[MAXN],v[MAXN];int dp[MAX...
2019-08-03 11:59:42 331
原创 最长上升子序列(LIS)模板
O(n*logn)二分优化#include<bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3fint num[100005];int dp[100005];bool cmp(int a,int b){ if(a>b)return true; return...
2019-08-02 20:18:47 198
原创 最长公共子序列(LCS)模板
HDU-1503#include<bits/stdc++.h>using namespace std;int dp[105][105];int main(){ string s1,s2; while(cin>>s1>>s2){ memset(dp,0,sizeof(dp)); //构成dp表 for(int i=1;i<...
2019-08-02 17:31:17 237
原创 Buy the souvenirs(01背包)
HDU-2126#include<bits/stdc++.h>using namespace std;#define MAXN 505#define ll long longll w[MAXN],v[MAXN];ll dp[MAXN][MAXN];int main(){ int pa; cin>>pa; while(pa--){ memset(...
2019-08-01 19:38:41 207
原创 Proud Merchants
动态规划的过程中,较差的状态会被更优的状态覆盖。最大的价值,需要建立在最优的状态上,几个较优的物品组合在一起,才能出最优解,所以把优劣分开。先根据每个物品的代价排序(本题的代价为q-w),最差的物品,最先使用,便能被后面的物品覆盖状态,才能得到最优解。#include<bits/stdc++.h>using namespace std;#define MAXN 500...
2019-08-01 15:34:30 258
转载 杜教BM模板
矩阵快速幂+线性递推#include <bits/stdc++.h>using namespace std;#define rep(i,a,n) for (long long i=a;i<n;i++)#define per(i,a,n) for (long long i=n-1;i>=a;i--)#define pb push_back#define mp ...
2019-08-01 15:15:00 250
原创 01背包k-th决策模板
HDU-2639#include<bits/stdc++.h>using namespace std;#define MAXN 1005#define ll long longll w[MAXN],v[MAXN];ll dp[MAXN][MAXN];int main(){ int pa; cin>>pa; while(pa--)...
2019-08-01 09:53:03 140
原创 多重背包模板
HDU-2844二进制优化#include<bits/stdc++.h>using namespace std;#define MAXN 100500#define ll long long ll n,m;ll num[MAXN],v[MAXN],w[MAXN];ll dp[MAXN];void ZeroOnePack(ll w,ll v){ for...
2019-07-31 19:06:05 448
原创 FATE
HDU-2159 完全背包#include<bits/stdc++.h>using namespace std;#define MAXN 105#define inf 0x3f3f3f3fint dp[MAXN*150][MAXN];int main(){ int n,m,k,s; while(cin>>n>>m>>...
2019-07-30 19:53:47 114
原创 Find the answer
HDU-6609#include<bits/stdc++.h>using namespace std;#define MAXN 200005int n,m;int dp[MAXN];int main(){ int pa; cin>>pa; while(pa--){ memset(dp,0x3f,sizeof(dp)); dp[0]=0; ...
2019-07-30 10:38:09 391
原创 二叉树直径模板
POJ-1985 Cow Marathon#include<iostream>#include<vector>#include<cstdio>using namespace std;#define MAXN 100005struct node{ int x,y,z;}path[MAXN<<1];vector<int>...
2019-07-29 20:35:11 212
原创 大素数阶乘取模模板
hdu-6608 Fansblog#include<bits/stdc++.h>using namespace std;#define ll long longll p;ll mul_mod(ll a,ll b,ll mod){ //快乘法 基于快速幂的二分思想 ll ans=0; //由于考虑到取模数很大 快速幂会...
2019-07-29 20:01:18 946
原创 LRU management(模拟数据结构)
https://ac.nowcoder.com/acm/contest/883/JLRU,操作系统中的最近最常使用算法#include<bits/stdc++.h>#define MAXN 1000005#define ll long longusing namespace std; struct node{ int key; int pre; ...
2019-07-26 16:23:00 242
原创 网络流模板
Edmonds-Karp#include<bits/stdc++.h>using namespace std;int n,m,S,T;#define MAXN 10005#define MAXM 100005struct Path{ int x,y,c,f; Path(){}; Path(int tx,int ty,int tc,int tf):x(tx),y(...
2019-07-22 21:04:58 124
原创 连续区间和模板
链接:https://ac.nowcoder.com/acm/contest/949/D来源:牛客网题目描述水果店里有 nn个水果排成一列。店长要求顾客只能买一段连续的水果。小阳对每个水果都有一个喜爱程度 aiai,最终的满意度为他买到的水果的喜欢程度之和。如果和为正(不管是正多少,只要大于 0 即可),他就满意了。小阳想知道在他满意的条件下最多能买多少个水果。你能帮帮他吗?...
2019-07-14 19:51:25 399
原创 H. Subsequences (hard version)
Codeforces Round #570 (Div. 3)dp[i][j]表示使用前j个字符构成的长为i的distinct子串个数状态转移方程:dp[i][j]=dp[i-1][j-1]+dp[i][j-1]如果当前字符已经出现过,要减去最近此字符的之前的长度-1的distinct子串个数:dp[i-1][last-1]#include<bits/stdc++.h&g...
2019-07-10 20:37:14 628
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人