自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

某人的诡异笔记

無限大な夢のあとの 何もない世の中じゃ

  • 博客(25)
  • 收藏
  • 关注

原创 Goods transportation

DescriptionThere are n n cities located along the one-way road. Cities are numbered from 1 1 to n n in the direction of the road.The i i-th city had produced p i  p_i units of goods. No more than s i

2016-10-21 21:48:21 387

原创 欧拉函数

定义记小于等于 xx 中与 xx 互质的正整数个数为 ϕ(x)\phi(x)计算方法ϕ(x)=xΠki=1(1−1pi)\phi(x) = x\Pi_{i=1}^{k}(1-\frac{1}{p_i})代码线性筛求欧拉函数 O(n)O(n)int tot_prime, prime[maxn], phi[maxn];bool vist[maxn];void get_prime(){ phi[

2016-10-13 16:09:40 268

原创 可持久化线段树

例题查询区间第k大统计区间数字种数Solution用一个 last last 数组记录 array array 中每个数字上次出现的位置,现在问题就可以转化为统计 [left,rght] [left,rght] 中 last last 值小于 left left 的个数。 用 T i  T_i 记录 last[i] last[i] 的贡献,即在 T i  T_i 的 pos pos 处插入一个 +

2016-08-13 19:02:25 299

原创 斯坦纳树(Steiner Tree)

简述斯坦纳树可以用来求包含给定点的最小生成树,给定点数目通常为 1010 左右。 f[s][i]f[s][i] 表示连通性至少为 ss,且经过 ii 点的最小生成树大小 方程1. f[s][i]=min(f[s][i]+f[s−ss][i])f[s][i] = min(f[s][i] + f[s-ss][i]) 其中 ssss 为 ss 的子集 方程2. f[s][i]=min(f[

2016-07-09 20:31:48 4885

原创 动态规划优化

四边形不等式简述函数 f[i][j]f[i][j] ,转移如下: f[i][j]=min(f[i][k]+f[k+1][j]+w[i][j])f[i][j]=min(f[i][k]+f[k+1][j]+w[i][j]) 其中 i≤k<ji≤k<j 若函数 w[i][j]w[i][j] 具有以下两种性质: 1、当 a≤b<c≤da≤b<c≤d 时 w[b][c]≤w[a][d]w[b][c]≤w

2016-07-09 15:20:17 470

原创 Donut Decoration

Solution & Code题意是用 1...K1...K 共 KK 种颜色对一行共 NN 个点染色,现给你染色的操作序列(按时间先后给定),每次操作对 [l,r][l, r] 区间的所有点染上一种颜色 xx,求所有操作完成后,共有多少个点合法(恰按序被染上 1...K1...K 这些颜色)。 这道题用带标记的线段树处理,对每个线段树节点记录三个标记:当前染色上界(lazy1)、当前染色下界(l

2016-07-09 13:19:21 300

原创 Fygon

DescriptionFrederick is a young programmer. He participates in all programming contests he can find and always uses his favorite programming language Fygon. Unfortunately, he often receives Time Limit

2016-07-07 10:38:18 342

原创 Pear Trees

http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=45173 Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64uDescriptionVova was walking along one of Shenzhen st

2016-07-05 18:09:30 593

原创 Longest Chain

DescriptionTime Limit : 8 sec, Memory Limit : 262144 KB Let us compare two triples a=(xa,ya,za)a = (x_a, y_a, z_a) and b=(xb,yb,zb)b = (x_b, y_b, z_b) by a partial order ∠∠ defined as follows. a∠b⇔

2016-07-02 21:24:56 612

原创 网络流

SAP代码struct edge{ int v, r, flow; edge(int v, int flow, int r) : v(v), flow(flow), r(r) {}};vector<edge> mp[maxn];void add_edge(int u, int v, int flow){ mp[u].push_back(edge(v, flow, mp[v].

2016-06-30 21:37:43 193

原创 Hourai Jeweled

HDU - 4303 Hourai Jeweled Time Limit: 2000MS Memory Limit: 163840KB 64bit IO Format: %I64d & %I64u DescriptionKaguya Houraisan was once a princess of the Lunarians, a race of people living on the

2016-06-30 08:25:34 322

原创 Matrix Power Series

DescriptionTime Limit: 3000MS Memory Limit: 131072K Given a n∗nn*n matrix AA and a positive integer kk, find the sum S=A+A2+A3+…+AkS = A + A^2 + A^3 + … + A^k.InputThe input contains exactly one tes

2016-06-27 16:41:33 328

原创 树状数组(Binary indexed Tree)

代码int lowbit(int i){ return i & (-i);}int get_sum(int pos){ int rtn = 0; for(int i = pos; i >= 1; i -= lowbit(i)) rtn += c[i]; return rtn;}void modify(int pos, int delta){ for(int i

2016-06-26 14:45:19 259

原创 最短路算法

弗洛伊德(Floyd)设dist[k][i][j]dist[k][i][j]表示利用到1...k1...k作为中间点,ii到jj的最短路。for(int k = 1; k <= n; ++k)    for(int i = 1; i <= n; ++i)        for(int j = 1; j <= n; ++j)            dist[k][i][j] = min(dist

2016-06-25 11:02:58 321

原创 Balanced Number

DescriptionA balanced number is a non-negative integer that can be balanced if a pivot is placed at some digit. More specifically, imagine each digit as a box with weight indicated by the digit. When a

2016-06-23 11:39:27 815

原创 不知道名字的某题_20160622_2

Description已知规模为n∗nn*n的矩阵MM,处理TT次询问,对于每次询问给定矩阵VV,求Mk∗VM^k*VSolution传统做法用矩阵快速幂求出MkM^k,时间复杂度为O(T∗n3∗logk)O(T*n^3*logk)预处理对于询问次数较多的情况,快速幂的做法是较劣的,此时我们可以预先算出M0,M1,M2,...,M2iM^0, M^1, M^2, ..., M^{2^i} 答案矩阵

2016-06-22 23:28:06 275

原创 最近公共祖先(LCA)

代码// 倍增int maxbit;int dpth[maxn], ance[maxn][maxb];void dfs(int u, int fath){ dpth[u] = dpth[fath] + 1; ance[u][0] = fath; for(int i = 1; i <= maxbit; ++i) ance[u][i] = ance[ance[u][i-1]]

2016-06-22 19:00:07 212

原创 不知道名字的某题_20160622_1

Description给定序列 a1,...,ana_1, ..., a_n,求序列 b1,...,bnb_1, ..., b_n 满足 bi=Σajb_i = \Sigma a_j 其中 j & i = j\text{j & i = j} 1≤n≤201 \le n \le 20SolutionFWTvoid ftw(int left, int rght){ int mid = (le

2016-06-22 13:13:58 205

原创 图的连通性算法(Tarjan)

针对有向图// 求强连通分量:按割边缩点vector<int> edge[N];void add_edge(int u, int v){ edge[u].push_back(v);}int cnt, scc, top;int dfn[N], low[N], bel[N], stck[N]; // bel => belong, stck => stackbool inst[N]; //

2016-06-21 21:35:06 1430

原创 拓扑排序

利用栈实现概述 该方法的每一步均是输出当前无后继(即出度为0)的顶点。对于一个DAG,按此方法输出的序列是逆拓扑次序。因此设置一个栈(或向量)T来保存输出的顶点序列,即可得到拓扑序列。若T是栈,则每当输出顶点时,只需做人栈操作,排序完成时将栈中顶点依次出栈即可得拓扑序列。若T是向量,则将输出的顶点从T[n-1]开始依次从后往前存放,即可保证T中存储的顶点是拓扑序列。利用dfs实现概述 当从

2016-06-20 23:43:19 255

原创 AC-自动机(AC-Automachine)

代码代码// 0-Rootstruct trie{int size, indx[maxn][26], word[maxn], fail[maxn]; inline int idx(char ff){return ff - 'a';} inline void insert(char s[]){ int u = 0; for(int i = 0; s[i]; +

2016-06-20 13:07:27 672

原创 后缀数组(Suffix Array)

快排倍增代码快排倍增代码int n, arry[maxn];int rank[maxn], sa[maxn], _rank[maxn];bool cmpc(int i, int j){ return arry[i] < arry[j]; }int ll;bool cmps(int i, int j){ if(_rank[i] == _rank[j]){ if(

2016-06-19 13:24:46 527

原创 KMP

基本KMP算法基本KMP算法int fail[maxn];void get_fail(int arry[], int l){ fail[0] = fail[1] = 0; for(int i = 2, j = 0; i <= l; ++i){ while(j > 0 && arry[i] != arry[j+1]) j = fail[j]; if(ar

2016-06-19 13:12:10 204

原创 快速傅立叶变换(FFT)

昨晚写了各种FFT模板,还是稍微记录一下吧     FFT原理还是上最基本的问题:求C(x)=A(x)B(x)C(x)=A(x)B(x) 其中A(x)=Σi<ni=0aixi B(x)=Σi<mi=0bixiA(x)=\Sigma_{i=0}^{i<n}a_ix^i~B(x)=\Sigma_{i=0}^{i<m}b_ix^i 暴力求解的复杂度为O(n2)O(n^2),FFT则可以在O(nlog

2015-07-13 22:00:47 2065

原创 线性筛

今天在看了各种以及听了各种之后终于算是了解线性筛了… 虽然都是一些很基本的应用但还是觉得各种强大…线性筛素数代码int tot_prime, prime[maxn];bool vist[maxn];void get_prime(){ for(int i = 2; i <= n; ++i){ if(!vist[i]) prime[++tot_prime] = i;

2015-07-08 16:48:05 426

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除