- 博客(218)
- 收藏
- 关注
原创 匹配子轨迹
#include #include #include #include #include #include #include #include #include using namespace std;const int Max = 1000;const double coe = 0.01;const double INF = 1e10;struct point{
2016-11-01 11:39:06
756
原创 相似度(参数调节代码)
// test1.cpp : Defines the entry point for the console application.//#include #include #include #include #include #include #include #include #include #include #include #include #include
2016-10-21 14:24:53
865
原创 计算轨迹相似度代码
// test1.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #include #include #include #include #include #include #include #include #include
2016-10-18 21:24:55
9100
1
原创 四子棋
#include #include #include #include #include #include #include #include #include #include #include using namespace std;int move[4][2]={ 0,1, 0,-1, 1,0, -1,0};const int M
2016-03-06 00:57:51
1764
原创 正则匹配
bool isMatch(string s,string format){ if(s.size()==0) { return format==""||format=="*"; } if(format.size()&&s=="") { return false; } if(s[0]==format[0]||fo
2016-01-11 17:52:41
475
原创 321. Create Maximum Number(贪心)
Create Maximum NumberGiven two arrays of length m and n with digits 0-9 representing two numbers. Create the maximum number of length k from digits of the two. The relative order of the dig
2015-12-25 19:42:21
1436
原创 poj 1986(离线查询点对最近公共祖先)
题意:给一棵树,查询一些点对的距离解法:随便找一个点建立有根树,然后转化为求点对最近公共祖先问题。两点的距离等于他们与最近祖先的距离和。查询的方法是dfs+并查集离线查询。思想是,dfs过的为回溯的点的parent全部指向自己本身,vis标记为true。回溯之后的点parent指向自己的父亲。然后dfs每进入一个点,就处理这个点相关的查询,如果其中某个查询另一个点v的vis为true,
2015-12-21 11:19:51
912
原创 vim配置(.vimrc)
set nocompatible " be iMproved, requiredfiletype off " required"set the runtime path to include Vundle and initializeset rtp+=~/.vim/bundle/Vundle.vimcall vun
2015-12-07 23:02:24
819
转载 监督学习(机器学习)
一、引言 本材料参考Andrew Ng大神的机器学习课程 http://cs229.stanford.edu,以及斯坦福无监督学习UFLDL tutorial http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial 机器学习中的回归问题属于有监督学习的范畴。回归问题的目标是给定D维输入变量x,并且每一个输入矢量x都有对应的
2015-11-06 22:29:33
2723
原创 hihocoder1033(数位dp)
题目:/******************************************************* @author:xiefubao*******************************************************/#pragma comment(linker, "/STACK:102400000,102400000")#include #
2015-05-22 19:53:56
1239
原创 hihocoder1170(状压dp)
题意:小冰的N个机器人兄弟排成一列,每个机器人有一个颜色。现在小冰想让同一颜色的机器人聚在一起,即任意两个同颜色的机器人之间没有其他颜色的的机器人。假设任意相邻的两个机器人可以交换位置,最少需要多少次交换?N解法:一个明显的结论是:交换机器人时,相同颜色的机器人不会发生交换(保持他们之间的相对顺序)。即相当于给16种排序颜色。这总共有16!种结果,其dp方法雷同于旅行商问题的方法。
2015-05-17 15:39:45
904
原创 poj2411(状态转移,dfs搜索转移)
题目链接题意:用1*2的小矩形拼成n*m(n,m解法:状态压缩,dfs求转移。当前一列的状态确定后,后一列必须用横向的矩形来填补前一列的空白格,所以前一列不为空时,这一列可以选择也为空让下一列来填补,或是本列来个纵向的矩形填补(如果有连续的两个空格的话)。代码:/**********************************************
2014-12-04 17:10:03
882
原创 hdu 5136(dp计数)
题目链接题意:直径为K的每个点的边数不超过3的相互不同构的树有多少种?解法:把树的直径拉开,两边就是两棵二叉树了。子问题:一个深度为m的不同构的二叉树有多少种?dp[i]表示深度为i的个数。sum[i]表示dp的前缀和。转移方程就是:dp[i+1]=dp[i]*sum[i-1]+dp[i]+dp[i]*(dp[i]-1)/2;然后回到原问题:如果K是偶数(想象中间有个虚
2014-12-04 00:34:09
1598
原创 poj1482(隐式图求最短路)
题目链接题意:补丁在修正bug时,有时也会引入新的bug。假定有n个潜在的bug m个补丁,每个补丁用两个长度为n的字符串表示,其中字符串的每个位置表示一个bug,第一个串表示打补丁之前的状态('-'表示该bug必须不存在,’+‘表示必须存在,0表示无所谓,第二个串表示打补丁之后的状态(-'表示不存在,’+‘表示存在,0表示不变)。每个补丁都有一个执行时间,你的任务使用最少的时间把一个
2014-12-04 00:22:20
1234
原创 poj2983(差分约束系统)
题目链接:http://poj.org/problem?id=2983题意:一天南北线上有n个防御站,给出他们之间的位置关系,问有没有可能存在这样一种位置布置符合所给的位置关系。关系有两种,一种是 P A B X,表示A在B北边X光年的位置,V A B表示A在B北边至少1光年位置。解法:查分约束。dist[A]-dist[B]>=X,表示A在B北边至少X光年位置。变形为:d
2014-12-03 23:49:47
1327
原创 uva1627(模型转换01背包)
题意:有n(n解法:如果两人不是相互都认识,就连一条无向边。所以就变成了一个无向图。对于每一个连通分量来说,必须是个二分染色图,否则就No solution。然后对于每个联通分量,黑白两种颜色有个数量差,用所有的差来进行01背包,找到距离集合差0最小的方案。代码:/******************************************************
2014-12-01 16:31:07
1514
原创 poj1160(区间DP)
题目链接:http://poj.org/problem?id=1160题意:一个公路上有n个村庄,要在一些村装建m个邮寄站,邮寄站必须建在村庄上,通过合理的选择m个建造地点,使得每个村到自己最近的邮寄站的距离和最小。解法:这个要想到,对于i-j区间建一个邮寄站,最优方案是建在中间的村庄。那么可以预处理所有的cost[i][j]表示i-j建一个站的最小距离和。dp[i][j]表示前i
2014-12-01 15:07:18
756
原创 hdu5117(数学推导+dp)
题意:有n(n解法:假设一种情况是开灯数是X, X=(x1+x2+x3...xn),xi是第i个灯的开闭情况。则X^3=(x1+x2+x3...xn)*(x1+x2+x3...xn)*(x1+x2+x3...xn)。即求三个灯的三三组合Xi*Xj*Xk,只有Xi,Xj,Xk都为1时候,他们的乘积才是1. dp[i][j][k][state]表示三个灯ijk状态为stat
2014-12-01 11:34:09
1133
原创 uva437(经典DAG题目)
题意:有n(n解法:其中每种立方体有三种摆放方式,可以将每种转化成三种立方体,因为一个立方体不可能在一个相同的自己上面,所有每种一个就够了。90个点,并且是有向无环的图,求最长路径,可以拓扑排序,也可以dfs。代码:/******************************************************* @author:xiefubao*****
2014-11-28 16:04:33
840
原创 uva1608(Non-boring sequences)
题意:如果一个序列的任意连续子序列中至少有一个只出现一次的元素,则称这个序列是不无聊的。判断一个长度为n(n<=200000)的序列是不是无聊的。解法:搞个map记录每个数前一个数的位置,判断以每个数结尾的所有区间是否合法,其中用到线段树访问区间最小值。代码:/*******************************************************
2014-11-28 00:32:24
1308
原创 poj1655(树的重心)
题意: 求树的重心;重心定义:以此节点为根的最大子树节点个数最小。解法:dfs代码:/******************************************************* @author:xiefubao*******************************************************/#pragma commen
2014-11-27 10:30:13
682
原创 poj3557(概率dp)
题意:给定n,p;表示n个点中任意两点连边的概率为p,求生成的图是个连通块的概率。n解法:反向思考,ans[i]为i个节点为连通块的概率,求ans[n]时候,求不为一个连通块的概率,然后用1减。求非连通时,枚举与1号节点为一个连通块的点的个数即可。公式:ans[i]=1.0- sigma C[i-1][j-1]*ans[j]*pow(1.0-p,j*(i-j)) --- j f
2014-11-26 22:32:18
1041
原创 zoj1283(LIS)
题意:宝藏在一些点中,只能从(0,0)出发,每次只能向右(x+1,y)或是向上走(x,y+1)。问要走几趟才能取完宝藏。解法:按x,y分别为第一二关键字排序,那么一趟下来,y坐标是个非递减序列。然后转化成问y方向能由最少为多少的非递减序列个数组成。这个等效于求严格递减序列的长度。即nlogn求最长严格递减序列长度即可。代码:/************************
2014-11-26 17:25:30
591
原创 URAL 1486(二维字符串hash)
题意:一个最大500*500的字符矩阵,求最大的两个相同的字符正方形。正方形可以有重叠部分但不能重合。解法:首先是二分正方形的长度,然后判断某个长度存在时候计算字符矩阵的二维hash值,二维hash的方法是:这样子拓展的hash算法可以O(1) 获取任意一个子矩阵的hash值。代码:/*********************************
2014-11-17 17:49:30
1740
原创 hdu1695(莫比乌斯)或欧拉函数+容斥
题意:求1-b和1-d之内各选一个数组成数对,问最大公约数为k的数对有多少个,数对是有序的。(b,d,k解法1: 这个可以简化成1-b/k 和1-d/k 的互质有序数对的个数。假设b=b/k,d=d/k,b1-tool中含有rem位置之后的i的质因子的数的个数。在for(int j=rem;jfactor[i][0];j++) ans+=tool/factor[i]
2014-11-16 21:48:33
757
原创 poj1201(二分+线段树)或(差分约束系统)
题意:数轴上每个位置为0或是1,给n(1 个区间[ai, bi],每个区间内至少有 ci 个1.0 1 。问数轴上至少有多少个1可以满足要求。解法1:现将区间按右端点排序,然后每个区间内的点尽量往右边放,这样子可以照顾到以后的。在找每个区间的放法时,线段树查询区间1的个数,二分查找要放的后缀位置,然后将整个区间后缀全部涂上1.总复杂度是nlognlogn。网上没找到有人这么做的,但
2014-11-16 15:46:28
1095
2
原创 hdu4747 mex 线段树
题意:给一个序列不超过200000个元素,定义mex(i,j)是区间[i,j]之间所没有的最小非负整数。求sum(mex[i,j])对于所有1解法:线段树。先求出mex(1,1),mex(1,2),mex(1,3)...mex(1,n) 而且这必然是递增的。 然后 sum[i=1,1sum[i=2,2sum(mex[1代码:/************************
2014-11-14 15:36:08
1011
原创 486E - LIS of Sequence(LIS)
题意:给一个长度为n的序列,问每个数关于序列的LIS(longest increasing sequence)是什么角色。这里分了三种: 1、此数没有出现在任意一条LIS中 2、此数出现在至少一条但是不是全部的LIS中 3、此数出现在所有的LIS中解法:nlgn的LIS算法可以求出以每个i位置结束的LIS长度up[i]。出现在L
2014-11-12 19:37:05
719
原创 hdu4416 Good Article Good sentence (后缀数组)
题意:问a串中有多少种字符串集合B中没有的连续子串。a的长度10^5,B中的总长度为不超过10^5.解法:后缀数组题目;后缀数组可以很容易算出来一个串中有多少种子串。把a和B集合连起来,求一次不同子串数量,然后减掉B相互连起来的数量。在求时候,要减掉含有链接符的子串,方法是扫一遍,枚举最后出现的连接符。代码:/********************************
2014-11-12 19:17:39
881
原创 zoj3734
题意:一棵有根树,每个节点都有一个value值和属性(LICK或是 CANDLE)。你可以通过反转一些点的属性,反转一个点时候,它的整个子树都会被反转属性。有些点反转消耗代价为X,有些为Y。你的目标的是使得LICK的value和最大。解法:13年长沙区域赛一道题,感情当时都没有做到这道题。状态ans[i][0/1]分别表示此点的子树LICK最多能比CANDLE多多少和少多少的值。状态转移见代码
2014-11-05 14:09:51
857
原创 uva 1378 - A Funny Stone Game sg博弈
题意:David 玩一个石子游戏。游戏中,有n堆石子,被编号为0..n-1。两名玩家轮流取石子。 每一轮游戏,每名玩家选取3堆石子i,j,k(i解法:看上去是将石子都往右移,直到所有都到了n-1堆不能移为止。首先是考虑每堆石子其实是独立的一个子游戏,堆与堆之间不相互影响。然后就是个数是偶数的对不会影响必胜必败态,必败态无法通过移动偶数堆得石子来扭转局面,因为必胜者只需对称操作即可。所以每堆石子
2014-11-02 17:55:17
996
原创 hdu3685(几何重心与凸包结合)
题意:给一个多边形(有可能是凹多边形)。问有多少种能够使得它稳定放置的方式。当然稳定的原则就是重心做垂线在支撑点之内。解法:因为有可能是凹多边形,所以先求出多边形的凸包,这是在放置时候会接触地面的所有点。然后将重心与每天凸边判断是否稳定;代码:/******************************************************* @author:
2014-11-02 17:42:46
1133
原创 hdu3689(kmp+dp)
题意:问随机生成一个长度为m(m解法:dp+kmp优化。ans[i][j]表示i长度,走到了s的j位置的概率,当然这是在i之前没有出现s的前提下(在状态转移时候已经保证了这一点);然后最后的概率就是1-m长度的串分别最后出现s的概率之和。代码:/******************************************************* @author:xief
2014-11-02 17:37:28
1645
原创 hdu5044(二分)
题意:一个树上建两个加油站,使得所有点到达其最近加油站的最大距离最小。解法:二分答案。关键时二分时候,要最合理话布局两个点的位置,做法是处理出来树的直径,然后在直径两端分别向中间移动二分的x步的两个点布下加油站。贪心可以证明正确性;代码:/******************************************************* @author:xiefuba
2014-11-02 17:30:25
805
原创 javascript实现贪吃蛇
body{ background:#444;}.rect{ border:1px solid #94F; width:680px; height:680px;}.gridred{width:38px;height:38px;background:red;border:1px #555 solid;float:left}.gridgreen{width:38p
2014-08-05 21:20:50
1039
原创 hdu4848
剪枝暴力搜索。代码:/******************************************************* @author:xiefubao*******************************************************/#pragma comment(linker, "/STACK:102400000,102400000"
2014-07-21 20:29:01
1039
原创 FZU 2144(几何+贪心区间覆盖)
题意:三维空间给出n个蚊子的初始位置(ax,ay,az)和移动趋势(dx,dy,dz),那么每个蚊子坐标随时间变化的函数就是(ax+dx*t, ay+dy*t, ax+dz*t)。每次射杀一枪,可以把距离原点距离len之内的蚊子全部杀死。问最多能射杀几只蚊子,这时至少要射杀几次?解法:先求出每只蚊子在射程之内的时间区间,即(ax+dx*t, ay+dy*t, ax+dz*t)^
2014-07-21 10:53:38
779
原创 CF 96D Volleyball(最短路套最短路)
题目链接:http://codeforces.com/contest/96/problem/D题意:不超过1000个点和1000条边的无向图,n个点每个点有一辆出租车,给出每辆出租车能开的最远距离和搭乘这辆车的费用,求起点到终点的最少费用是多少。解法:SPFA里套一个SPFA。第一个是利用乘坐某点的出租车A是否可以更新其他点的最少费用,但是从此点A出发还要求出此点到所有点的
2014-06-29 12:21:56
851
原创 ural 1143. Electric Path(凸包上最短哈密顿路径)
题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1143题意:逆时针给一个凸包的n(n解法:求最短哈密顿本身是一个NP问题,但是因为是凸包上,可以利用这个做;有一个性质:凸包上的最短哈密顿路径不会出现交叉。所以可以看出来从一点出发,他要么和顺时针相邻点连接,要么和逆时针相邻点相连接;通过这个性质可以通过dp做:ans[i][j
2014-06-28 21:02:00
1295
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人