自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

taotao 的大学墓志

keep thinking! keep learning!

  • 博客(324)
  • 资源 (1)
  • 收藏
  • 关注

原创 集合的二进制表示

简单表示集合S 去除一个元素{i} S/{i}………S/\{i\}\dots \dots \dots S&(~1<< i)特殊集合枚举{0,1,2,3,…n−1}\{0,1,2,3,\dots n-1\}所包含的特定大小为 kk 的子集int comb = (1<<k)-1;while(comb < (1<<n)){ int

2017-05-03 22:14:55 813

原创 2016江苏省赛H题(莫比乌斯反演+分块求和)

题目描述就是让你计算这个东西 ∑i=1n∑j=1mi2∗j2gcd(i,j)n,m≤1e6\sum_{i = 1}^n\sum_{j=1}^mi^2*j^2gcd(i,j)\\n,m\le 1e6分析和经典的这个公式很像∑ni=1∑mj=1gcd(i,j)\sum_{i = 1}^n\sum_{j=1}^mgcd(i,j)只需做一些简单的转化. ∑i=1n∑j=1mi2∗j2gcd(i,j

2017-04-29 13:03:12 1056

原创 10692 - Huge Mods(指数循环节)

题目链接10692 - Huge Mods分析其实这个问题很简单,有以下定理可用若(a,n)=1,ax≡ax mod ϕ(m)(mod m)(a,n) = 1,a^x \equiv a ^{x\ mod\ \phi(m)}(mod\ m)若(a,n)≠1,ax≡ax mod ϕ(m)+ϕ(m)(mod ϕ(m))(a,n) \neq 1,a^x\equiv a^{x\ mod\ \phi(m)+

2017-04-26 22:27:41 546

原创 numpy学习笔记

slicinga[:-1]#去掉最后一个a[:7:2]#[0,7]以2为增值累加索引In [48]: a[::-1]Out[48]: array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])In [49]: a[::-2]Out[49]: array([9, 7, 5, 3, 1])In [53]: a[:4:-2] #到4截至Out[53]: array([9, 7

2017-04-25 09:38:16 382

原创 c++ string常用函数总结

构造函数 string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化substr string substr(int pos = 0,int n = npos) const;//返回pos开始的n个字符组成的字符串只有当pos = npos即最后一个空时才返回空串.枚举的时候一定要小心

2017-04-24 22:18:06 474

原创 HDu 6000 Wash(贪心)

题目链接Wash分析每台洗衣机的工作时间是独立的可以先预处理出每件衣服洗完的时间.然后用贪心的想法把最后洗完的衣服安排给最早烘干的.#include <cstdio>#include <iostream>#include <vector>#include <queue>#include <algorithm>#include<cmath>#include <cstring>#inclu

2017-04-23 23:47:13 657

原创 codeforces #410 div2 题解(数学)

官方题解http://codeforces.com/blog/entry/51652 这一次的题目基本都有很强的思维性。编写代码很简单.C给你一个序列a1,a2,…,ana_1,a_2,\dots ,a_n,有一个操作 将(ai,ai+1)变为(ai−ai+1,ai+ai+1)(a_i,a_{i+1}) 变为(a_i-a_{i+1},a_i+a_{i+1}),问最少的操作次数使得 gcd(a1,a

2017-04-22 10:52:08 451

原创 UVA 11728 - Alternate Task(线性筛)

题目链接11728 - Alternate Task分析其实就是一个水题……由于因子和函数是积性函数,我们可以筛出所有1−10001-1000以内的因子和函数的值,然后二分查找一下就可以了.#include <cstdio>#include <iostream>#include <vector>#include <queue>#include <algorithm>#include<cma

2017-04-21 21:01:00 437

原创 离散对数和原根

原根与阶阶定义设 (a,m)=1(a,m)=1, 满足 ax≡1(mod m)a^x \equiv 1(mod\ m) 的最小的 xx,称为a对m的阶,记为 ordm(a)ord_{m}(a) 当 ordm(a)=ϕ(m)ord_{m}(a)=\phi(m) 时称为a为m的原根.简单性质ax≡1⇔ordm(a)∣xa^x\equiv 1\Leftrightarrow ord_m(a) \mid

2017-04-19 23:41:59 4858 4

原创 zoj 3940E - Modulo Query (数学)

题目链接E - Modulo Query 分析不要问我为什么,看了题解再yy一下你就懂了. 题解AC code#include <cstdio>#include <iostream>#include <vector>#include <queue>#include <algorithm>#include<cmath>#include <cstring>#include <map>#

2017-04-19 20:34:47 822

原创 codeforces 801 E. Vulnerable Kerbals(DAG最长路+解线性同于方程)

题目链接codeforces 801 E. Vulnerable Kerbals分析假设我们求出的前缀乘积的顺序是这样的p1,p2,…,pkp_1,p_2,\dots ,p_k.产生的序列为a1,a2,…,aka_1,a_2,\dots ,a_k,那麽就一定有,pi−1∗ai≡pi(MOD m)p_{i-1}*a_i\equiv p_i(MOD\ m)则一定会有 gcd(pi−1,m)∣pigcd(

2017-04-17 13:52:41 952

原创 莫比乌斯(mobius)笔记

mobius反演的本质是容斥原理,这在《组合数学》里面有提到基本公式定理mobius反演公式 F(n)f(n)=∑d∣nf(d)=∑d∣nμ(n/d)F(d)=∑d∣nμ(d)F(n/d) \begin{align} F(n) &= \sum_{d\mid n}f(d)\\ f(n)&=\sum_{d\mid n}\mu(n/d)F(d)\\ &=\sum_{d\

2017-04-15 14:44:42 1048

原创 《The Art of R Programming》R初学者笔记(1-6章)

向量seq与length length(x)返回向量x的长度,seq(x)返回x的长度的一个向量.可能为空。它们的区别在于> 1:length(x)[1] 1 0> seq(x)integer(0)循环补齐 当用矩阵加法或者向量加法是如果有一个向量很短,回将其扩展成与另一个向量一样长.其中补齐是按照重复当前向量进行.向量索引> x <- c(1,2,3,4,5)> x[c(1,2)

2017-04-12 00:20:50 1060

原创 UVA 10791 - Minimum Sum LCM(因子分解)

题目链接10791 - Minimum Sum LCM题目分析水题,刚开始看错题目了,以为和经典题目GCD&LCM一样,原来只需要求至少这么多个因数和相加最小.显然就是把所有的priip_i^{r_i}加起来就行了.,注意,因子数目只有一个的时候,还要加上1.AC code#include <cstdio>#include <iostream>#include <vector>#include

2017-04-06 23:14:58 497

原创 Uva 12716 - GCD XOR(数域筛法+qijiyinqiao)

题目链接GCD XOR题目分析这个题是《刘汝佳算法经典》上面的题目,一个数域筛法的经典题目.我做一个搬运工~ 一个基本的想法是枚举每个公约数c,及其倍数ac,及其倍数a,由异或的特性我们有,a XOR b=c,b=a XOR c,a\ XOR\ b=c,b = a\ XOR\ c,,然后在判断一下是否满足gcd(a,b)==cgcd(a,b)==c,把答案加上.可以达到O(n(lgn)2)O(n

2017-04-06 19:44:46 1579

原创 poj 1150 The Last Non-zero Digit(阶乘取模运算的简单性质及递归技巧)

题目链接The Last Non-zero Digit题目分析参见http://www.cppblog.com/abilitytao/archive/2009/10/31/99907.html 题解写的非常好.我就简要总结一下自己的收获.对于n!分解成一个数x的幂次我们可以递归的去计算.因为只有x的倍数相乘才会产生x的幂次.及x,x2,x3,…,x,x^2,x^3,\dots , 因此 f(n,

2017-04-04 21:10:43 1095

原创 同余方程总结

题目链接Recurrent Function题目分析可以参考具体数学的公式 设mm的dd进制数为mm[0,1,2,…,n−1]k的d进制数为kk[0,1,2,…,m−1]mm[0,1,2,\dots,n-1]k 的d进制数为kk[0,1,2,\dots,m-1],由于置换数组a为{1,2,…,d−1},没有0所以如果说k和m的d进制长度不相等那么一定是不能变换过去的a为\{1,2,\dots,

2017-04-02 18:04:37 7130

原创 codeforces 789E. The Great Mixing(经典,dp,状态图建立)

题目描述E. The Great Mixing分析稍微分析一下题目,设每一个浓度为aia_i的不同值选了kik_i升,那么,我们有 n1000n∗∑ki∑ki(n−ai)=∑ni=1ai∗ki1000∑ni=1ki=∑ai∗ki=0\begin{align}\frac{n}{1000}&=\frac{\sum_{i=1}^n\frac{a_i*k_i}{1000}}{\sum_{i=1}^nk

2017-03-31 01:39:51 1310 1

原创 递推计数问题题目总结

introduction主要总结一些常用的递推计数技巧和题目.包括格点计数.树堆排列数目.分类技巧分类是处理计数问题的重要计数.一定要注意不重不漏.并且常对包含某一个元素的特定情况进行计数,然后在全部加起来.UVA 11038 - How Many O’s? 枚举法,限定每个0的位置分类计数.UVA 10883 - Supermean 找规律,注意大数相除取对数技巧codeforce 785D———

2017-03-27 22:14:21 2235

原创 格点统计问题(UVALive 3295,UVALive 3720)

题目链接UVALive 3720 UVALive 3295大意第一题是求 nXmnXm 的格点中有多少条斜线(至少经过两个点).第二个问题求的是有多少个各点组成的三角形. 我先说说题解,然后再总结其异同.分析第一题我们可以这样办:由对称性我们知道,”\”方向的斜线与”/”方向的斜线总数相同,因此只需求一边的就行.我们可以把问题拆分一下, 我们先求出从(0,0)点到(i,j)这个矩形区域内(经过

2017-03-23 22:46:32 843

原创 UVA 10883 - Supermean(杨徽三角 对数处理大数除大数)

题目链接10883 - Supermean分析模拟一下发现只需要计算每个数字被加了多少次,最后用来除以 2n−12^{n-1},即 ans=∑n−1i=0(n−1i)∗a[i]2n−1ans = \frac{\sum_{i = 0}^{n-1}\binom{n-1}{i}*a[i]}{2^{n-1}} 需要注意的是对两个大数的处理n=exp(log(n))n = exp(log(n))这样就

2017-03-22 20:22:30 609

原创 UVA 11038 How Many O's? (数位统计 )

题目链接How Many O’s? 分析吗枚举每一个位为0,的数的个数,(将前后分为两段,乘起来)#include <cstdio>#include <algorithm>#include <cstring>#include <string>#include <iostream>#include <vector>#include <queue>#include <map>#inclu

2017-03-21 23:29:24 401

原创 codeforces 711C. Bear and Tree Jumps(树上距离)

题目链接C. Bear and Tree Jumps分析其实题解已经说的很清楚了,我最开始不理解的一点在于如何计算剩余f(L,k)f(L,k),看了题解的代码之后才懂了,用一个数组cnt_sub[v][i]cnt\_sub[v][i] 存储以 vv 为根的与根节点距离的剩余为 ii 的节点数目.然后对于子树 uu中的顶点 a,ba,b 计算他们距离的剩余的时候,应为这两个节点u,vu,v的距离一定是

2017-03-19 23:58:12 773

原创 codeforces 785D. Anton and School - 2(组合计数,二项系数计算)

Problem LinkD. Anton and School - 2 分析官方题解已经写的很好了,不过我有点不理解它的证明,我,即他说的那个一一对应的那部分, 想一下如果上图3个13个1的位置刚好在左括号的位置这样不就没有匹配了吗?不知道是不是我英文不好的原因23333 不过我们如果限定了最后一个开括号的位置就会很容易给定在这种情况一定是对应着(x+y−1x)\binom{x+y-1}{

2017-03-16 22:37:23 773

原创 poj 1850 Code(组合计数)

Problem Linkpoj 1850 Code(组合计数)分析就是一个组合计数问题,只需要计数在当前字符串前面的字符串的个数,就行了,按照这个给定的序关系是很容易计数的.AC code#include <cstdio>#include <algorithm>#include <cstring>#include <string>#include <iostream>#include <v

2017-03-13 23:30:49 521

原创 单调队列在滑动最小值方面的应用

我们来看看,这样一个问题,poj 2823 Sliding Window 给定一个序列 a1,a2,...,ai,...,ana_1,a_2,...,a_i,...,a_n 让你构造一个数组b,b[i]=min{a[i],a[i+1],...,a[i+k−1]}b,b[i] = min\{a[i],a[i+1],...,a[i+k-1]\} 对于这个问题我们当然可以用RMQ等数据结构在 O(nlg

2017-03-06 21:36:18 837

原创 栈(poj 2559)

总结一下栈在序列上的某些应用.它的结构自然是不必说的,这里只是总结一下他在处理单调性问题方面的应用. 1. 大于 ii 的序列段给你一些宽度为1的直方图,每一个的高为 $h_i$ 问你这些直方图所覆盖的最大面积是多少.题目的详细描述参见[poj 2559](http://poj.org/problem?id=2559)一种简单的方法是对每个 $h_i$ 枚举覆盖住 $h_i$的左端点 $L_i$

2017-03-06 21:18:08 379

原创 HDU 5738 Eureka(统计共线点对)

题目链接HDU 5738 Eureka 分析这个题目意思其实很简单。所谓best set其实就是其中所有点都共线的点(包括重点).那么best set 的数目其实就是对于所有共线点组成的集合 SiS_i 的个数大于等于2的子集. 把所有点的集合分割出来的方法太麻烦了,我们可以换成对每个点来考虑。统计包含这个点的best set的数目,然后再加起来。就是答案。 统计给定一个点viv_i共线点对其实

2017-03-04 18:25:32 600

原创 poj 2763 Housewife Wind(LCA经典题目 处理树链)

题目连接poj 2763 Housewife Wind 处理树上的边修改和查询两节点最近距离的操作.分析对于边查询,dis(u,v)=dis(root,u)+dis(root,u)−dis(root,lca(u,v))∗2dis(u,v) = dis (root, u)+dis(root,u) - dis(root,lca(u,v))*2 如果没有边修改,只需计算根到各个节点的距离,再计算lca

2017-03-02 22:55:33 498

原创 LCA

LCA问题,在一棵有根数中找两个节点u,vu,v的最近公共祖先.有多种算法实现,我这里简要总结一下它的基于跳表的倍增实现和与RMQ的关系.跳表倍增实现对于朴素的算法是把每个节点的深度和父亲预处理出来,然后先把两个节点的高度对齐,然后在对每一个节点后退,直到到达公共父亲为止.可以发现这样的算法是 O(n)O(n) 的. 我们可以预处理出每一个节点的 2k2^k 个祖先.这样每次就可以后退 2k2^k

2017-02-27 22:29:41 487

原创 2-SAT

2-SAT问题(2-satisfiability),维基百科的解释非常的官方,我也不好描述,有兴趣的可以去看标准解释2-SAT. 我的理解就是对于一个由布尔值组成的系统,他的额条件子句只包含两个变量. 对这样的系统我们可以用强连通分量来解决. 我们先表示成或的形式的与.然后对每一个或语句进行操作, 比如((xi∨xj)∧(xi∨xk)(x_i\vee x_j)\wedge(x_i\vee x

2017-02-25 20:46:53 1072

原创 HDU 5726 GCD(RMQ 查询 + 二分)

题目描述分析因为gcd有一个特性,区间的公约数等于区间分割后的公约数.所以我门可以预处理一张大的ST表也就是可以用RMQ查询. 然后我们对每一个左端点枚举求出不同gcd的计数(开一个map),暴力的方法就是再枚举右端点。可是由于nn太大了,这没法暴力。由于gcd随着区间长度的增长肯定是递减的,所以我们可以二分的来预处理.(O(lgn)O(lgn))最终可以再O(n∗lgn)O(n*lgn)预处理出

2017-02-25 16:40:18 476

原创 Hdu 5727 Necklace(二分图匹配)

题目描述分析这个题目可以用二分图匹配 首先,由于要求一个园排列,并且这个元排列的阴球和阳球必须交错,因此,我们可以枚举阴球的排列数,然后对每一种排列再来找结果,具体来说,对每一种排列,我们可以把中间的间隔与阳球对应建图,如果说阳球可以放在这里,我们就建一条边,然后对这个图求一个二分图匹配,结果就是最大可以放置数目,用 nn减去这个值就是被污染的球的数目,对每一种排列求最小值就行了#include

2017-02-25 16:28:29 409

原创 poj 1236 Network of School (加边成强连通分量)

题目描述poj 1236 Network of School分析对于task1: 只需要求缩点后的的入度为0的分量数就行了,因为他们没有入边所以需要分发给他们. 至于求缩点后的入度为0的边,我们可以对每一个点遍历,判断他直接到达的点是否和他再同一个分量中,如果不是那么这条边必定是连接两个分量的边,对相应的分量的入度和出度进行加减操作即可, for(int i=0 ; i<n ; ++i){

2017-02-24 11:01:31 441

原创 codeforces 776C Molly's Chemicals(前缀和 二分搜索)

题目描述分析这个题其实很简单,对于每一个k的幂次powerk的幂次power我们只需对每一个末端点的前缀和ss,求一下前缀和为s−powers-power的个数,就行了。ac代码#include <cstdio>#include <algorithm>#include <cstring>#include <iostream>#include <vector>#include <queue>

2017-02-24 09:59:12 1062

原创 强联通分量分解

强联通分量分解一个有向图的强联通分量的定义如下: 若对于子图中的任意两个节点u,vu,v总存在 uu 到 vv 的路径则这个子图称作这个图G的一个强联通分量对于图的强联通分量分解,《算法导论》中介绍了Kosaraju Algorithm.这个算法思想很简单: 1. dfs遍历有向图. 计算节点访问结束的时间. 2. 计算 GTG^T 即边反向后的图. 3. 按照结束时间递减的顺序,dfs

2017-02-22 23:30:30 667

原创 poj 1486 Sorting Slides(二分图匹配必要边)

题目描述分析先求一个最大匹配,然后对与每一条匹配边,删除以后搜一下增广路,如果存在增光路则这不是必要边,如果不存在,说明这就是一条必要边.code#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define fi first#define se secondusing namespace

2017-02-20 21:23:54 539

原创 最大密度子图

参考文献 * 《最小割模型在信息学竞赛中的应用》分数规划分数规划问题 分数规划中有几个重要的结论,详细的证明过程不在给出,请参考论文原问题等价于 g(λ)=min{a(X)−λb(X)}g(\lambda) = min \{a(X)-\lambda b(X)\}重要性质g(λ′)=0⇔λ′为原分数规划的最优解g(\lambda') = 0 \Leftrightarrow \lamb

2017-02-16 19:54:54 2696

原创 无向带权图最小割stoer-wagner算法(poj 2914 Minimum cut)

这题其实就是知道stoer wagner 算法就能解决不知道就不行.stoer wagner 算法这个算法基于减治的思想. 设 G(V,E),{M,N}G(V,E),\{M,N\} 组成 GG 的最小割,对于任意两点s,ts,t无非两种情况 s,t∈M或者s,t∈N min−cut≤cut(s,t)s,t \in M或者s,t\in N \ min-cut\le cut(s,t) s∈

2017-02-15 20:51:29 994

原创 poj 2987 Firing 最大权闭合子图

参见文献: 最小割模型在比赛中的运用这是最大权闭合子图问题,参见以上文献. 建边, s->i if b[i]>0; i->t if b[i]<0; i->j if j是i的下属 费用就等于 ∑b[i]>0b[i]−max−flow\sum_{b[i]>0}b[i] - max-flow 与SS相连接的点为裁掉的人员#include <cstdio>#include <iostrea

2017-02-14 22:46:03 377

空空如也

空空如也

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

TA关注的人

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