- 博客(31)
- 收藏
- 关注
原创 基于信息熵的时间序列动态分段线性表示的有关讨论
我们讨论过有关时间序列的分段压缩表示的基本概念,本文将讨论前面对振幅波动较大的时间序列进行相似性查询时,现有的下界算法往往难以很好地拟合时间序列。针对这一问题,本文提出一种基于信息熵的动态时间弯曲下界算法 。方法首先求原序列的差值符号化序列,将差值符号序列分为等宽度时间窗口的子序列,在子序列段内求信息熵。通过信息熵在整个序列中的比例确定序列中分段点数量的分布情况,其次查找子序列段内距离首尾端点...
2018-08-18 21:05:57 1394
原创 关于时间序列中数据的降维简单讨论
本文只讨论单变量离散型时间序列,在这里解释一个问题本文谈论的降维是将时间作为维度来讨论的。由于时间序列的高维性,数据量大以及不断更新等特点,导致了对于时间序列的处理、挖掘变得异常困难,因此采用适当的方法来表示时间序列成了目前处理时间序列首先需要解决的问题,目前来说有这几种常见的方法:分段线性表示,基于域变换的表示方法,符号化表示,基于模型的表示方法,奇异值分解表示法等。其中分段线性表示法是我们...
2018-08-12 22:04:16 9873 2
原创 poj1961
给出一个字符串,对于它的每个(each)前缀(prefix)长度 i (2 i-next[j]获得反复字串的长度#includeconst int Max = 1000005;char str[Max];int len, next[Max];void get_next(){ int j=1, k=0; next[0] = -1;next[1]
2015-01-05 11:07:26 296
原创 poj 2485
Flatopia岛要修路,这个岛上有n个城市,要求修完路后,各城市之间可以相互到达,且修的总路程最短.求所修路中的最长的路段.这是一个最小生成树的问题 使用prim 算法#include#include#define Max 503int str[Max][Max];bool visit[Max];int distan[Max];int n;int prim()
2015-01-03 13:14:42 276
原创 hdu2082
假设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,..... 字母Z的价值为26。那么,对于给定的字母,可以找到多少价值 Input输入首先是一个整数N,代表测试实例的个数。 然后包括N行数据,每行包括26个 Output对于每个测试实例,请输出能找到的总价值
2014-12-21 20:03:32 388
原创 hdu1272
题目意思是找到判断是不是连通无环的图,首先想到的就是并查集。判断成环的时候,只要判断输入边的两个点。有一个共同的父节点,那么这两个点就成环。判断连通的时候,只要判断根节点数为1即可。注意:当输入的这组数据只有 0 0 时,依然是满足条件的,即应输出 "Yes"。#includeint pre[100005],flag,sign[100005];int Find(int x)//查
2014-12-21 19:59:48 299
转载 并查集详细讲解
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程 首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个
2014-12-14 21:21:51 335
原创 hdu 1232
中文题目不解释,很经典的并查集题目只要注意会用 find 和 find_set这两个函数就ok了;#includeint f[1010];int find(int t){ if(f[t]==-1) return t; else return f[t]=find(f[t]);}void find_set(int a,
2014-12-14 21:13:40 265
原创 poj1611
有很多组学生,在同一个组的学生经常会接触,也会有新的同学的加入。但是SARS是很容易传染的,只要在改组有一位同学感染SARS,那么该组的所有同学都被认为得了SARS。现在的任务是计算出有多少位学生感染SARS了。假定编号为0的同学是得了SARS的。我们使用并查集来做这一题;注意set 和find_set函数这是并查集的核心代码以后再做此类问题就可以模仿这两个模板;#includein
2014-12-14 20:59:58 230
原创 poj 1503
关于高精度的算法,就是输入一百个一百位以内的数字进行相加,只要注意好进位的计数问题这题很简单#include#includeint main(){ char sum[105]={0};//100个包含100位的数字相加结果最多有103位所以定义sum位103位 char s[110];//通常这里会定义大一点的数组来存放字符串主要是防止溢出 int i,j,len,c; sc
2014-12-14 20:58:16 242
原创 poj1065
有n根木棒,已知他们的质量和长度,需对他们进行加工,开机1分钟,加工一根一分钟,且每次开机后,加工的第i+1根必须比第i根的长度和质量都要大才行,问最短加工时间。首先对木块进行长度排序如果长度相同则按照重量排序;求最少启动时间转化为求有多少不下降的序列;#include#includestruct gz{int l,w;}a[5010];int cmp(const
2014-12-07 22:45:28 325
原创 poj1067
取石子博弈问题很有意思的题目, 这篇文章讲的很好大家可以参考 下http://hi.baidu.com/momoxiangni/item/2f519d0ae73d0ce1f55ba686 #include#includeint main(){ int a,k,b,temp;double r=(1+sqrt(5))/2.0;while(scanf("%d%d",&a
2014-12-07 12:41:05 309
原创 poj1061
中文题目 扩展gcd算法的应用 题目要求 青蛙的坐标为 x,y x每次跳m长度,y每次跳n长度,总长度为L是一个首尾相接的圆,求两只青蛙朝同一方向跳多少次可以相遇,那么可以得出方程 设跳了t次(x+mt)-(y+nt)=pL化简得到(n-m)t+(pL)=x-y;令n-m=a;L=b;x-y=c;可以得到 ax+by=c;这就得到了我们所要求的方程;#includ
2014-12-07 11:41:41 282
原创 poj1083
一个过道,两边是要移动桌子的房间,过道很窄,每次只能移动一张桌子。问最快的移动时间是多少。思路:其实就是占用的问题,每次移动都占用固定的几个格子。只要统计一下占用次数最多的格子数量,再乘以10即可。#include#includeint r[410];int main(){ int a,b,t; while(scanf("%d",&t)!=EOF
2014-11-30 21:52:19 286
原创 poj1207
根据给定的算法,可以计算一个整数的循环数,现在给定一个区间,计算这个区间的所有数的循环数,把最大的循环数输出。#include #includeint main() { int n, p, i, j, count, max, low, high; while (scanf("%d%d", &i, &j) != EOF) { max =
2014-11-30 21:43:01 294
原创 poj1328
从左到右建立雷达,要尽量多地覆盖岛屿。以岛屿的圆心d为半径的圆与x轴有或者没有交点。如果存在没有交点的则不能实现!都存在交点的话,对于第i个岛屿计算出左右交点的x坐标保存在a[i],b[i]里。对a[]排序,然后一次从左到右找雷达。初始right=b[1]为当前最右边的左标,则对于下一个考虑岛屿i,如果a[i]>right则当前需要建立的雷达不能覆盖它,需要以此开始建立下一个雷达;否则,如果b[i
2014-11-30 21:30:56 286
原创 poj 1014
题目da#include #include #include #define MAX 70010int dp[2*MAX];int a[10];int inline max(int a,int b){ if(a>b) return a; else return b;}int solve(int n,int v){
2014-11-23 21:44:26 396
原创 hdu1166
线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。 使用线段树可以快速的查找某一个节点在若干条线段中出现的次数
2014-11-23 14:16:26 283
原创 poj1125
大致题意,这道题目的思路是求出某一点到所有点的最小值,然后在在这些最小路径中求出最大的值,再在这些最大值中找到一个最小值点;liyong
2014-11-23 13:14:43 258
原创 poj1050
该题就是在一个矩阵中找到一个子矩阵,该子矩阵和最大输出最大和即可;zhe#include#includeint a[101][101],n,temp[101];int dp(){ int i,sum=0,max=0; for(i=0;i { sum+=temp[i]; if(sum
2014-11-16 10:47:10 194
原创 poj 1163
题目大意从三角形顶部数字走,每次只能走到这个数字的左下角或者右下角的数字,直到底部,计算走过的线路的数字之和,求这个和的最大值;同意此题也是动态规划wenti
2014-11-16 10:35:51 292
转载 非常易懂的动态规划入门
很特别的一个动态规划入门教程今天在网上看到一个讲动态规划的文章,是以01背包为例的,这文章和书上的讲解非常不一样,令我眼前一亮,于是转载一下下~~~(说明一下,本人非常痛恨教材公式定理漫天飞,实际的讲解却讲得非常枯涩难懂,这种中国式的教育已经延绵了几千年了,现在中国的教材还是这个样子,讲清楚些明白些就那么难么?高中有个老师讲的一句话一直觉得很有道理:“教得会天才不是真本事,能把
2014-11-16 10:13:29 412
原创 poj1011
经典的搜索题目首先将所有小段排序从大到小 然后计算木棍总长度 然后依次枚举 如果长度可以被总长度整除,求出一共需要还原的木棍数目; #include#include#includevoid search(int num,int now,int next);int n,stick[100],total,num,ok,length,used[100];int cmp(const vo
2014-11-09 14:38:42 242
原创 poj 1002
这题有些麻烦表面上是简单的将字母转换成数字然后进行排序比对,实际操作还是比价麻烦的,首先数组需要定义足够大,注意数组的越界问题,这题最好是将字母转换成数组然后进行比对。
2014-11-02 22:30:05 260
原创 poj1007
这一题一直想用kuaia#include #includeint main(){ int n,m,max=0,min; int i,j,k; char c[100][100]; int d[100]={0}; int e[100]={0}; scanf("%d%d",&n,&m); for (i=
2014-11-02 14:37:21 197
原创 poj1003 poj 1006
此题有些水题感觉 大意是 给定一个数c求 1/2+1/3-----+1/n>=c时n的值是多少; 代码如下#includevoid main(){double c,sum;int n;scanf("%lf",&c);while(c!=0.00){sum=0.00;for(n=2;sum{sum+=1.0/n;}printf("%d\n
2014-10-26 19:26:54 316
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人