自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

huhao的博客

我太弱了

  • 博客(72)
  • 资源 (5)
  • 收藏
  • 关注

原创 51nod1491

q=5√+12q=\dfrac{\sqrt5+1}2,在黄金系统下面ai(i∈[1,n])a_i(i\in[1,n])等于∑ni=0ai ˙qn−i\sum_{i=0}^na_i\dot\ q^{n-i},其中ai∈{0,1}a_i\in\{0,1\}。现在给出两个黄金系统下面的数字,请比较他们的大小。先推一下:q0=1q^0=1q1=5√+12q^1=\dfrac{\sqrt5+1}{2}q2=(

2018-01-03 14:22:16 234

原创 luogu3959

NOIP2017所有1~2题题解总汇:本蒟蒻的另一个博客(不过博客没备份(源码),删了,只好先来CSDN上了) 就是用搜索,只能过luogu#define N 20int n,d[N][N],ans,t[N],h[N];void dfs(int x,int w){ if(ans<=w) return; if(x==n+1) { ans=

2017-12-02 19:15:58 249

原创 树的重心

树的重心,就是它为根后每个子树的节点数小于等于总结点数的二分之一。其实代码代表了全部思想我们开始假设11为根,然后看代码:#include<vector>#define N 1000010vector<int>t[N];int w[N],f[N],ans,n;void getw(int x){ w[x]=1; fr(i,0,t[x].size()-1) if

2017-11-05 14:24:31 325

原创 LuoguP3908

求1 xor 2 xor… xor n1\ xor\ 2\ xor\dots\ xor\ n按位计算:第一位特别点计算方法:(n&1) xor ((n>>1)&1)(n\&1)\ xor\ ((n>>1)\&1)每四个数异或和末尾为00然后就可以得出末二位值相等时才得出一后面的位数从高到低算我们可以发现xor_sum1..2k−1=0xor\_sum_{1..2^k-1}=0然后我们就根据这个

2017-11-05 11:58:37 188

原创 LuoguP3938斐波那契

这是一道好题。首先,我们先将兔子分组。⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪1234,56,7,89,10,11,12,13\begin{cases}1 \\ 2 \\ 3 \\ 4,5 \\ 6,7,8 \\ 9,10,11,12,13\end{cases}就是按出生时间分组,记ri,jr_{i,j}表示第ii月第jj只出生的兔子,fkf_k表示第kk只兔子的父亲,febi={1febi−1+febi

2017-11-04 16:32:47 288

原创 LuoguP2827 蚯蚓

这道题去年看了一下题解,今年没有看题解做,只记得单调队列,然后十分尴尬。代码并不长(短)//说明在程序下面#define N 100010#define M 7000010long long n,m,q,u,v,t,topb,lsta,lstb,lstc,topc;long long a[N],b[M],c[M];bool cmp(long long a,long long b){

2017-11-04 14:56:43 178

原创 Luogu3931

这是一道月赛题(PJ)显然是树形DPansi=∑fu=imin{ansu,wu,i}ans_i=\sum_{f_u=i}\min\{ans_u,w_{u,i}\}#define N 500010int e,t[N],n[N],b[N],w[N],m,r,p[N];#define fo(i,a) for(int i=b[a];i;i=n[i])void add(int u,int v,int w

2017-11-04 14:54:57 301

原创 Luogu3927

就是一个十分简单的数论题。来自LuoguNOIP模拟赛TG首先,我们设pp为质数,q,kq,k为正整数,fi,jf_{i,j}表示i!(j)i!_{(j)}末尾的00的个数(a(b)a_{(b)}表示aa转为bb进制后的数)可以推知fq,p=∑logq,pi=1(qpi−qpi+1)×i=∑logq,pi=1qpif_{q,p}=\sum_{i=1}^{log_{q,p}}(\dfrac{q}{p^

2017-11-04 14:54:32 203

原创 hexo配合next在coding搭建博客

先来一波福利,就是给出我的博客下载地址(有mathjax……)[百度网盘](链接: https://pan.baidu.com/s/1pLeEup1) 密码:mu87CSDN安装hexo安装git和npm这个不想说,自己去网上找安装hexonpm install hexo-cli -g初始化博客用hexo init blog来初始化博客,就会出现这样:然后cd进入blog:cd blog让后就

2017-11-04 14:53:47 389

原创 LCS长度个数计算

子串给定一个字符串 A1..n A_{1..n} 对于任意一个集合 G1..m G_{1..m} 并且 1≤G1<G2<⋯<Gm≤n 1\le G_1 < G_2 < \dots < G_m\le n 那么 AG1..m A_{G_{1..m}} 就是 A A 的一个子串如:AABC 就是ABCABC的一个子串LCS给定两个字符串 A,B A,B ,求出他们最长的公共子串 C C 意思是:

2017-09-10 14:50:15 847

原创 LCA(倍增)

LCA就是给定一棵有根树,和两个点,求他们的最近公共祖先(深度最大)一般算法先将两个点 u,v u,v 移到同一层,再同时上移,直到相等(比较容易想到不是吗)单次复杂度: O(n) O(n) 倍增算法求出每个点 i i 距离为 2k 2^k 的祖先(若没有则为 0 0 )可以用以下式子以 O(1) O(1) 的时间复杂度求出:fi,j=ffi,j−1,j−1 f_{i,j}=f_{f_

2017-09-09 17:21:29 240

原创 RMQ-ST表

前叙一开始我一直以为这算法叫RMQ,现在才发现这问题叫RMQ,算法是ST表RMQ-ST表先给出练手题的地址:LuoguP3865sti,jst_{i,j}表示以第ii个数为首的一共2j2^j个数的最大值gig_{i}表示原数列可以得到:sti,j={gimax{sti,j−1,sti+2j−1,j−1}j=1j≠1st_{i,j}=\begin{cases}g_i&j=1\\max\{st_{i,j

2017-08-31 10:07:40 276

原创 矩阵快速幂

矩阵乘法设C(x×z)=A(x×y)×B(y×z)C_{(x\times z)}=A_{(x\times y)}\times B_{(y\times z)},则Ci,j=∑yk=1Ai,k×Bk,jC_{i,j}=\sum_{k=1}^y A_{i,k}\times B_{k,j}代码如下:long long c[N][N];void times(long long a[N][N],long lo

2017-08-31 09:49:31 196

原创 LuoguP1063 能量项链

看着就觉得想DP对吧。环状的就在后面复制一遍就好了。方程:fi,jf_{i,j}表示从ii合并到了jj的最小花费gig_i表示输入的第ii个数fi,j=maxj−1k=ifi,k+fk+1,j+gi∗gk+1∗gj+1f_{i,j}=\max_{k=i}^{j-1}f_{i,k}+f_{k+1,j}+g_i*g_{k+1}*g_{j+1}代码如下:#define N 500int n,j,ans,

2017-08-30 16:34:47 219

原创 [HNOI2006]鬼谷子的钱袋

好像是小学数学题看看答案压压惊,还有,特判n=5int n,ans;int main(){ n=read(); if(n==5) { printf("3\n1 1 3\n"); return 0; } printf("%d\n",(int)log2(n-1)+1); ans=1; fr(i,1,(int)lo

2017-08-30 16:16:37 255

原创 [USACO5.2]Snail Trails

显然爆搜,虽然一开始以为会超时。注意清除走过的点的标记,之前这里没处理好样例少1就手动+1结果16分数据太水了然后就是代码。int mx[4]={1,0,-1,0};int my[4]={0,1,0,-1};#define N 200int ap[N][N],ved[N][N],n,m;int dfs(int x,int y,int t){ int _=x+mx[t],__=y+m

2017-08-30 15:54:52 343

原创 [USACO5.1]Starry Night

乍一看,好像很难的样子。处理联通块+复制8份+判重感觉随随便便就是Lines:100+100+100可以通过优化后两步来优化代码复杂度。当然要用到一个神奇的思想hash我们可以将一个点对一个星系的贡献为:它上下左右星星的个数+1与其它四个方向星星的个数+5的积正确率比较高,不过还是A了#define N 510map<int,int>t;int n,m,ap[N][N],h[N][N],pr[N

2017-08-30 15:01:48 219

转载 Wine QQ 安装

感谢phpcj downlaod 提取码:f2sn 步骤一: sudo add-apt-repository ppa:wine/wine-builds;sudo apt-get update;sudo apt-get install winehq-devel 步骤二: tar xvf wineQQ8.9.4_21584.tar.xz -C ~/ delete:rm -rf ~/.win

2017-08-29 15:25:01 1150

原创 [Tarjan]LCA算法

先来一波理论祖先若uu的祖先集合是sus_u,uu的父亲为fuf_u树根为rootroot 那么 su={{u,sfu}uu≠rootu=roots_u=\begin{cases}\{u,s_{f_u}\}&u\not=root\\u&u=root\end{cases} 通俗点讲:sus_u就是uu和uu的父亲和uu的父亲的父亲和uu的父亲的父亲的父亲…\dotsLCA设一颗有根树上的两点u,

2017-08-29 15:21:40 291

原创 LuoguP1306 斐波那契公约数

通项公式:fn=5√5[(1+5√2)n−(1−5√2)n]f_n=\dfrac{\sqrt5}{5}[(\dfrac{1+\sqrt5}{2})^n-(\dfrac{1-\sqrt5}{2})^n] 其实没用。 先给代码吧。int f[10000010];int gcd(int x,int y){ return y?gcd(y,x%y):x;}int main(){

2017-08-26 14:52:24 181

原创 [USACO5.3]巨大的牛棚Big Barn

明显DP,包括括号11行。 方程: fi,j=⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪0min⎧⎩⎨⎪⎪fi−1,jfi−1,j−1fi,j−1mapi,j=0mapi,j≠0f_{i,j}=\begin{cases}0& \text{$map_{i,j}=0$}\\min\begin{cases}f_{i-1,j}\\f_{i-1,j-1}\\f_{i,j-1}\end{cases}& \text{$m

2017-08-24 15:59:29 277

原创 [USACO5.1]Fencing the Cows

裸的二维凸包namespace point{ struct point { double x,y; point() { x=y=0; } point makepoint(double x,double y) { point k;

2017-08-23 15:03:54 231

原创 CSDN markdown 颜色 & 字体

示例:<font color=#ff0000 face="黑体">test</font>:test 颜色中的: ff0000:test 00ff00:test 0000ff:test 也就是说:xxyyzz xx yy zz red green blue混合也可以: xx yy zz 颜色 00 00 00 test 00 3

2017-08-23 11:56:41 338

原创 LuoguP1031 均分纸牌

假如当前不是标准纸牌,就++。 PS: !!x表示把x转换为2进制,具体:!!x={01x=0x≠0!!x=\begin{cases}0&x=0\\1&x\not=0\end{cases} 代码复杂度--,时间复杂度++int n,p,ans,g[110],k;int main(){ n=read(); fr(i,1,n) p+=g[i]=read();

2017-08-21 16:14:19 225

原创 LuoguP1890 gcd区间

这道题,只要会gcd,都可以过啊。 (a,b)=(b,a mod b)(a,b)=(b,a\ mod\ b)int gcd(int a,int b){ return b?gcd(b,a%b):a;}然后,RMQ比暴力还慢。。。。。。。。。。。(此处省略tanπ2rad个。(众:那不是不存在的吗)tan \dfrac{\pi}2rad个。(众:那不是不存在的吗))int gcd(int

2017-08-21 15:52:16 236

原创 LuoguP1820 寻找AP数

设p1,p2,p3⋯p_1,p_2,p_3\cdots为从小到大的素数集合,k1,k2,k3⋯k_1,k_2,k_3\cdots为它们的指数,APAP数有:∀i,ki>ki+1\forall i,k_i>k_{i+1}所以根据这个性质枚举,还有就是找在指数一样多(计算公式为∏(ki+1)\prod (k_i+1))的情况下,要求最小的!!!long long z[20]={2,3,5,7,11,13

2017-08-21 15:40:42 467

原创 LuoguP1637 三元上升子序列

表不喜欢离散化,因为 美丽 丑陋,人人都会的东西,为什么要考呢QAQ 就是BIT 正一次反一次,相乘#include<map>map<int,int>ap;#define N 30010int bit[N<<2],a[N],b[N];int n,f[N],g[N];long long ans;void add(int x){ while(x<=n) {

2017-08-20 14:12:35 230

原创 LuoguP1338 末日的传说

这应该是比较容易的一道数论题了。 枚举一些: 发现一个大事情:[1,6]+1=[7,12][1,6]+1=[7,12] 还有更多:[1,2]+1=[3,4]=[5,6]−1⋯[1,2]+1=[3,4]=[5,6]-1\cdots 于是发现:aka_k的贡献为:k−1−∑ki=1[ai<ak]k-1-\sum_{i=1}^k[a_i<a_k] 于是,稍微变以下再模拟一下。。long lo

2017-08-19 14:50:58 373

原创 LUOGUP1739 表达式括号匹配

判断是否匹配。。。 模拟char c;int s;int main(){ c=getchar(); while(c!='@') { if(c=='(') s++; if(c==')') s--; if(s<0) { puts("NO"

2017-08-19 11:33:26 150

原创 LuoguP1996约瑟夫问题

模拟即可int n,m,l,ne[110];int main(){ n=read(); m=read(); fr(i,1,n-1) ne[i]=i+1; ne[n]=1;//设置下一个人 l=n; while(n--) { fr(i,2,m) l=ne[l]; prin

2017-08-19 11:24:32 329

原创 LuoguP1115最大字段和

看到这道题,第一反应:前缀和 BUT,前缀和貌似过不了QAQ 看了看难度:感觉我省一白拿了QAQ 然后,仔细想了想,写了一个看似对的算法,结果竟然。。。 时间复杂度:O(n)O(n)空间:O(1)O(1)int n,k,ans=-23333333;int main(){ n=read(); fr(i,1,n) { k=k+read();//当前的子

2017-08-19 11:18:59 211

原创 NOIP2017愤怒的小鸟

首先,可以根据任意两点确定一个二次函数。 b=yi×x2j−yj×x2ixi×x2j−x2i×xjb=\dfrac{y_i\times x_j^2-y_j\times x_i^2}{x_i\times x_j^2-x_i^2\times x_j} a=yi−b×xix2ia=\dfrac{y_i-b\times x_i}{x_i^2} 然后处理出每条二次函数经过的点数 并状压DP fif_

2017-08-18 17:24:33 417

原创 UOJ69 新年的QAQ

我们设单次正确的概率为pp,总正确率为PP,来分析以下代码:c = a + bp=18p=\dfrac18b = a - 1p=18p=\dfrac18b = a == 0p=18p=\dfrac18input ninput ma = 0b = 1c = a + bc = c % ma = bb = cn = n - 1p = n == 0if p goto 5output a

2017-08-16 12:48:08 247

原创 [模板]树状数组(区间修改单点查询)

ImportantBit is a good alogrithm.ProblemDescriptionGive you some operate.0 l r w   0\ l\ r\ w\ \ \ :fl..r+=wf_{l..r}+=w1 x        1\ x\ \ \ \ \ \ \ \ :Ask fxf_xSample:Input:10 100 2 8 51 71 20 3

2017-08-09 10:57:54 321 1

原创 [模板]归并排序

一个二分水题 借用了一下百度的图片 代码如下int n,f[100010],g[100010];void sort(int l,int r){ if(l==r) rt; int mid=(l+r)>>1; sort(l,mid); sort(mid+1,r); int t1=l,t2=mid+1,t3=l; fr(i,l,r

2017-08-06 13:34:37 164

原创 CDQ分治小结

CDQ分治特别之处:时间CDQ分治分的是时间。 然而。 时间又怎么了。 我们可以知道:时间上,后面的时间不能为前面的时间做贡献(只要你不站在上帝视角) 所以当且仅当i<ji<j时,ansi→ansjans_i\rightarrow ans_j 所以CDQ分治主要是这样做void CDQ(l,r){ int mid=(l+r)>>1;//(l+r)/2 CDQ(l,mid)

2017-08-06 11:26:50 705

原创 [模板]三维偏序

一维排序; 二维CDQ; 三维BIT。 LuoguP3810 先上代码,代码还是蛮长的 事实上可以免去//1D............cdq(1,num);中间的............ 然而有重复。。。struct point{ int a,b,c,cnt,ans;}g[100010];int n,m,ans[100010],bit[10000010],num;bo

2017-08-06 11:13:33 1120

原创 [模板]乘法逆元

定义乘法逆元是一个十分有用的东西。 给定q,xq,x求x−1≡y(mod q)x^{-1}\equiv y(mod\ q) 就是说求xy=1(mod q)xy=1(mod\ q),yy的最小值意义在mod pmod\ p意义下 xy=x×y−1\dfrac xy = x \times y^{-1} 可以由此取整求法费马小定理yq≡y(mod q)y^q \equiv y(mod\ q)(q

2017-08-05 12:17:39 209

原创 [模板]二分图匹配(有坑待填)

匈牙利算法还没学,学了再填坑网络流网络流很好写啊。 来一发预流推进。 效率O((N+M+2)2(N+M+E)=O((N+M)2(N+M+E))O((N+M+2)^2(N+M+E)=O((N+M)^2(N+M+E))queue<int>q;int n,m,e,h[2010],g[2010][2010],w[2010];int main(){ n=read(); m=read()

2017-08-03 13:23:10 162

原创 NOIP2014联合权值

暴力 找中点 累加int n,f[200010],ansmax,ans;vector<int>t[200010];int main(){ n=read(); fr(i,1,n-1) { int u=read(),v=read(); t[u].push_back(v); t[v].push_back(u); }

2017-08-02 14:50:24 185

hexo blog源码

资源不能免费了。。。不过里面的内容还是不错的,支持mathjax,有单击爱心,分类也有,友链也可以自己做。

2017-10-03

lemon for ubuntu

应该可以用./lemon,不行上coding.net的roboat

2017-08-17

高斯消元附解方程神器

先输入一个数n表示方程元数。 然后再输入一个 n*(n+1)的矩阵 具体见我的博客

2017-04-09

Notepad+主题

一个十分赞的主题哦

2017-02-26

C++初始化文件

C++_init

2017-02-25

空空如也

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

TA关注的人

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