自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JIBANCANYANG

并非所有流浪者都迷失了自我。

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

原创 soj 4526 不重叠最短路条数

分析:记录路径,每一次最短路都删去边,最后最短路变长了就停止。/**********************jibancanyang************************** *Author* :jibancanyang *Created Time* : 一 5/30 17:18:48 2016**Problem**:**Analyse**:**Get**:*

2016-05-30 18:10:01 297

原创 高斯消元解概率动态规划

@(E ACMer)题目抽象: 一个长度为100100的由格子组成的路,你开始在11号格子,求你走到100100号格子的期望步数? 行走规则如下: - 你有一个六面的刻有数字[1,6][1, 6]的等概率骰子,每次抛出骰子,上面显示的数字就是你走的步数。 - 但是有一些类似(x,y)(x, y)的规则表示:你一旦跳到了xx号格子,你就会瞬间走回yy号格子,且这个跳跃不算做步数。(注意这里的x

2016-05-30 16:48:47 448

原创 #bzoj 2038 莫队算法

bzoj 2038 莫队算法@(E ACMer)bzoj 2038 莫队算法题目抽象: 给定n(n<50000)n(n < 50000)个数,和q(q<50000)q (q < 50000)个询问,每个询问是[L,R][L, R]区间,问在这个区间中任意选两个数,选到相同的数的概率是多少?思路分析: - 首先容易有概率的数学公式:∁2a+∁2b+...+∁2x∁2r−l+1\frac{\com

2016-05-24 17:20:08 316

原创 Codeforces Round #340 (Div. 2) E 莫队算法

Codeforces Round #340 (Div. 2) E 莫队算法@(E ACMer)题目大意: 给你长度为n(n<=105)n(n <= 10^5),的序列,然后q(q<105)q(q < 10^5)个区间询问,询问该区间内有多少对(i,j)(i,j),让xi xor xi+1 xor .... xor xj  ==  kx_i\ xor \ x_{i + 1} \ xor \ ....

2016-05-24 11:34:17 283

原创 Codeforces Round #354 (Div. 2) D

题意: 给你nn个数,用这nn个数来建立二叉搜索树,问你每次插入一个数时,它的父亲节点是哪一个? 分析: 首先要注意本题的nn个数都是不同的。 容易观察到每次插入节点时,它的父亲节点要么是比它大的数中,距它最近的节点rr的左儿子,要么是比它小的数中距离它最近的节点ll的右儿子。 这里的主要问题是到底是rr和ll哪一个的儿子? 首先我们应该知道这rr和ll一定是相互连接的,因为假设它们不相

2016-05-23 21:16:27 375

原创 soj 4511 dp差值

Problem: Analyse: - 差值dp,最大限度的减少信息容易,而有最低的维度. - 这里要想象有两个任务堆,左边一个,右边一个,然后往上面添加任务. - 这个题与前面的积木堆得不同是,任务的执行顺序的限制,这需要在dp转移的时候结合实际来考虑. - 定义dp[i][j]dp[i][j]:前ii个物品形成左堆和右堆得差值为jj的序列的最小时间 . - 转的核心就是本机器里的任务

2016-05-18 23:41:58 452

原创 Codeforces Round #353 (Div. 2) C 思维

Problem: 给你一个数列,本身是一个环且和为0,每次可以执行一个操作就是相邻的成员之间传递值, 问让该环所有成员的值都变为0,需要执行最少多少次操作?Analyse: 可以转化为求环中最多和为0的块的个数. 然后因为没一个块的和都为0,所以在两个相邻的和为0的块之间该数列的前缀和是相同的,我们要求最多的块数, 只需要求最大的相同前缀和的频率即可 Get:

2016-05-18 00:01:25 319

原创 soj4510 dp优化

当然很容易想到dp[350][40][40][40][40]dp[350][40][40][40][40]的dp,但是转移复杂度,过高,然后发现这五个参数知道其中44个, 可以求出另外11个,当然我们选择去掉350350那一个./**********************jibancanyang************************** *Author* :jibanc

2016-05-17 18:02:18 244

原创 soj4515 多重部分和

Problem: 给你一个多重背包,问你其中的物品能否组成k(k100,000)k(k Analyse: 最直观的思路就是多重背包来做,然后写了个单调队列优化的多重背包,复杂复杂度O(vn)O(vn),由于常数大,仍然TLE\ 注意到这里我们只需要知道是否拼凑够kk,这个信息很常规的多重背包的信息要求是不对称的,所以该 转变一下状态的定义方式. 定义dp[i][j

2016-05-17 18:02:00 204

原创 soj 4509 斜率优化dp

Problem: Analyse: 给你n个点,每个点必须被线段覆盖,每个线段覆盖的划分是(xj−xi)2+W(x_j - x_i)^2 + W,其中xj,xix_j,x_i是线段端点,可以为同一点. Get: 容易把这个大问题,划分为一系列,可递推的子问题.很容易想到是dp状态, 定义dp[i]dp[i]:以ii点作为最后一条线段的结尾,所花费的最小值. 容易有状态转移方

2016-05-17 18:00:53 233

原创 zoj3662 dp 离散优化

当然很容易想到dp[350][40][40][40][40]dp[350][40][40][40][40]的dp,但是转移复杂度,过高,然后发现这五个参数知道其中44个, 可以求出另外11个,当然我们选择去掉350350那一个./**********************jibancanyang************************** *Author* :jibanc

2016-05-14 20:36:44 263

原创 Lightoj 1104 概率dp

/**********************jibancanyang************************** *Author* :jibancanyang *Created Time* : 四 5/12 23:37:26 2016 *File Name* : .cpp**Problem**:**Analyse**:**Code**:********

2016-05-12 23:47:47 313

原创 Lightoj1079 概率背包(经典)

Problem: 有少于100个银行,每个银行有少于100元的钱,和被抓住的概率,要求你背抓住的概率小于等于v,你最多能获得多少钱. Analyse: 考虑不被抓到的概率更好算. 然后对于每个银行只有抢或者不抢两种选择,比较像01背包. 定义dp[i][j]dp[i][j]:前ii个银行,抢到jj元钱,不被抓住的概率,weight,costweight,cost为第ii个银行的

2016-05-12 23:16:24 729

原创 Codeforces Round #352 (Div. 2) D 二分贪心两头 + 细节

Problem: Analyse: - 好的思维就是把左右端点分开来考虑. - 显然对左端点和右端点,都来二分答案贪心判断的求解,找到k步操作它们各自能到达的位置. - 有一个细节就是k很大的时候,左右端点会交叉,这时候我们就要判断在相交点是否可以差值为0了…./**********************jibancanyang************************** *Au

2016-05-12 14:56:47 311

原创 Codeforces Round #352 (Div. 2) C

Problem: 几何 + 贪心 Analyse: 这个题就是贪心的思路,但是思维容易有缺陷,少考虑一个人不走或者误写为两个人都不走的情况. 思路一定要完备了再动手写代码,而且思路要写在纸上!/**********************jibancanyang************************** *Author* :jibancanyang *Crea

2016-05-12 12:51:41 256

原创 Lightoj 1248 概率dp

Problem: 给你nn个骰子,求其抛掷它,直到所有面都出现过的抛掷次数期望值. Analyse: - 定义dp[i][j]dp[i][j]为抛掷jj个骰子,已经出现过ii个不同的数字的概率,有转移方程: dp[i][j]=ij ∗(1+dp[i][j]) + j−ij∗(1+dp[i+1][j])dp[i][j] = \frac{i}{j}\ * (1 + dp[i][j])\ + \

2016-05-11 23:30:25 383

原创 Lightoj1038 概率dp + 因数分解

Problem: 给你一个数n(n<=105)n(n <= 10^5),nn的因数集合为K(包括自身)K(包括自身),每次从KK中选择一个数dd来除以nn,让nn变成 n/dn/d,然后把n/dn/d当作新的nn来递归的操作,直到变成11,问你变成11的期望操作步数是多少? Analyse: 令dp[i]dp[i]表示把ii变成11的期望步数,ZZ表示ii的因数个数,有方程:

2016-05-10 18:15:32 919

原创 poj3080 枚举+ kmp

Problem:poj3080 枚举+ kmp 求mm个子串的最长公共子串. Analyse: - 根据第一个串,枚举字串,然后对于后面的每一个用kmp来匹配,复杂度O(n3m)O(n^3m)./**********************jibancanyang************************** *Author* :jibancanyang *Create

2016-05-10 14:30:08 455

原创 Codeforces Round #201 (Div. 2) C 数论

Problem: 给你n(n<=100)n(n <= 100)个正数,每次从中取任意两个数,他们的差值如果在集合中没有就加入集合中,问最后集合中元素个数的奇偶性? Analyse: 首先考虑只有两个数的情况,发现两个数x,y(x>y)x, y(x > y),可以观察到连续执行操作,可以生成的数的集合是 {k∗gcd(x,y) | k=1,2,..且 k∗gcd(x,y)<=y}\

2016-05-10 11:44:01 747 1

原创 Lightoj 1030 概率dp

Problem: Analyse: dp[i]为i开始走到结尾的价值, 那么dp[i]是从后面的6个转移过来的. 这样我们就倒着递推就好了(后面的要先算好). 注意后面不足六个的时候的处理情况./**********************jibancanyang************************** *Author* :jibancanyang *Crea

2016-05-09 21:13:37 859

原创 soj [Union Training I] N AC自动机 + dp

Problem: 给你m个字符串,问长度为n,至少包含其中一个字符串为子串的字符串的个数. Analize: - 将问题转化为26k−不包含任意子串的个数26^k - 不包含任意子串的个数,这里用AC自动机来建立禁止字符串. - 所有节点的子节点开始都为根节点,在添加禁止字符串的过程中扩展 - 利用fail指针来扩展禁止字符串,也就是当前字符串的fail指针的字符串如果都是禁止字符串那么当

2016-05-09 20:18:43 845

原创 poj 2778 AC自动机构建有向图 + 邻接矩阵快速幂

Problem: 给你mm个病毒串,求指定长度n且不含病毒串作为子串的字符串一共有多少种. Analyse: 用AC自动机构建LL个状态节点,每个节点的end标记记录是否在这里形成病毒串. 这里有个核心就是,如果当前后缀的子后缀(也就是它的fail指针指向的地方)是病毒串的话, 那么它就是病毒串. 然后根据这个AC自动机的LL个节点来建立有向图的邻接矩阵B,B[i][j]代表从i到j状态

2016-05-09 14:20:32 830

原创 hdu4513 最长递增回文序列 manacher + dp

Problem: 定义回文且单增为完美队形,求完美队形的最大长度. Analyse: - 用manancher处理处,P数组. - 用dp求出以i结尾的单调递增序列长度. - 换算取最小值 Code:/**********************jibancanyang************************** *Author* :jibancanyang *

2016-05-09 09:59:20 690

原创 poj2752 扩展kmp

/**********************jibancanyang************************** *Author* :jibancanyang *Created Time* : 六 5/ 7 21:17:06 2016 *File Name* : .cpp**Problem**:扩展kmp **Analyse**:**Code**:

2016-05-07 22:43:37 575

原创 poj2406 扩展kmp

如果kk是字符串的循环节,str.substr(0)==str.substr(k)str.substr(0) == str.substr(k) 这里恰好是最长前缀和后缀,用extkmp来正好. 求最小循环节,且这个循环节长度要能整除slen./**********************jibancanyang************************** *Author*

2016-05-07 22:09:39 737

原创 hdu1010 扩展KMP求字符串最小循环节

Problem:扩展kmp求字符串最小循环节 Analyse: 如果kk是字符串的循环节,str.substr(0)==str.substr(k)str.substr(0) == str.substr(k) 这里恰好是最长前缀和后缀,用extkmp来正好./**********************jibancanyang************************** *Author

2016-05-07 21:27:59 931

原创 Lightoj 1027 概率期望

Problem: 概率期望 Analyse: 非常经典的带有递归实现,的方程期望式子. E为期望,z为正数个数,zp为正数平均值,f为负数个数,fp为负数平均值. z∗zpn+f∗fp+En=E\frac{z * zp}{n} + \frac{f * fp + E}{n} = E/**********************jibancanyang**********************

2016-05-07 00:28:21 3534 1

原创 zoj3430 AC自动机模拟

/**********************jibancanyang************************** *Author* :jibancanyang *Created Time* : 五 5/ 6 16:14:59 2016 *File Name* : jy.cpp**Problem**:**Analyse**:此题难就难在编码,还有题意问的

2016-05-06 18:28:22 922

原创 cf670d2 二分贪心

Problem: cf670d2 Analyse: 经典的二分加贪心模型,我太高估了暴力的复杂度了…. 先考虑最坏情况,就是只缺一个物品,而且这个物品缺1e9个,这里面明显需要一个logklogk的算法, 二分答案,然后贪心地去判断,最后要消耗小于k,贪心就满足,注意这里会爆ll,要提前跳出判断函数. 复杂度nlogknlogk.二分闭区间的模板化写法:int l = 0, r = INF

2016-05-06 14:14:20 502

原创 hdu3065 AC自动机

/**********************jibancanyang************************** *Author* :jibancanyang *Created Time* : 四 5/ 5 15:51:27 2016 *File Name* : jy.cpp**Problem**:**Analyse**:**Code**:*****

2016-05-05 16:21:19 527

原创 hdu2896 AC自动机

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <cmath>#include <cstdlib>#inc

2016-05-05 15:39:23 331

原创 hdu4090 双重dfs模拟 + 启发式搜索

题意:消消乐,每次必须消除数量大于等于3个,而且得分是消除个数的平方,每次消除之后局面往左下角收拢. 分析: - 首先很容易想到对每个当前局面枚举每种颜色来dfs消除,注意这里对每一个已经消除过度页面要vis记录 要不然超时,比赛的时候记录了,但是初始化vis的地方写错了,导致TLE,交换了顺序就AC….看来代码逻辑还是 不够清晰,不能完整表达正确的想法,而且出现了错误不能很快正确的

2016-05-05 09:46:22 472

原创 cf667d 最短路建图 + 枚举 + 最优化剪枝

Problem: 给你一个边长为1的有向图,从一个点到另一个点你只能走最短路,找出四个点的链,让这条链最长. Analyse:首先我们bfs遍历出从每一个点出发到另一个点的最短路,复杂度O(|v|2)O(|v|^2),然后用这些最短 路建图,枚举这四个点中的中间两个点,然后我们发现由于是有向图,对于其中第二个节点我们需要的是到达它的节点 所以我们要再建立一个反图. 这里写出来超时,有一个最

2016-05-03 13:26:59 1357

原创 Codeforces667c dp

Problem:记忆化搜索 题意:这题坑点就是题意,要求的是不能连续出现两个相同的后缀串. 分析: 定义dp[pos][j][k]dp[pos][j][k]为当前在pospos位置,当前要走jj的步长,之前走的kk的步长. 然后用了一个hash来解决答案中有重复的问题./**********************jibancanyang**************************

2016-05-01 21:59:31 574

空空如也

空空如也

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

TA关注的人

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