- 博客(33)
- 资源 (5)
- 收藏
- 关注
转载 DAT结构
Darts: Double-ARray Trie System开篇Darts 是用于构建双数组 Double-Array [Aoe 1989] 的简单的 C++ Template Library . 双数组 (Double-Array) 是用于实现 Trie 的一种数据结构, 比其它的类 Trie 实现方式(Hash-Tree, Digital Trie, Patricia T
2015-12-28 22:39:28 986
原创 杭电acm2709
设a[n]为和为 n 的种类数;根据题目可知,加数为2的N次方,即 n 为奇数时等于它前一个数 n-1 的种类数 a[n-1] ,若 n 为偶数时分加数中有无 1 讨论,即关键是对 n 为偶数时进行讨论:1.n为奇数,a[n]=a[n-1]2.n为偶数:(1)如果加数里含1,则一定至少有两个1,即对n-2的每一个加数式后面 +1+1,总类数为a[n-2];(2)如果加数里没有1
2015-12-21 15:27:03 465
原创 杭电acm2716
从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。#include #include char decryption[26];char ch[81];int main() { int i; while(gets(decrypti
2015-12-21 15:01:41 380
原创 杭电acm1143
首先当n为奇数时显然无解的,输出0;当n为偶数时,从小看:n=2时有3种。每增加两列,可以看成一下情况:1.这两列与之前不相连,单独摆放,有3种,即3*f(n-2);2.这两列与之前两列中间相连,也就是说中线有横着摆放的(n-2和n-1列),有这种,还可以把底下两个横着的放到顶上,所以有两种情况,把后4列看作整体,即2*f(n-4);而还有可能n-3与n-4
2015-12-21 14:26:07 445
转载 杭电acm1496
思路:首先,暴力会TLE,所以要把4个数分成2个和2个(关于这一点请阅读《挑战程序设计竞赛》)。注意到a*x1^2+b*x2^2的范围大小为2000000,我们不妨遍历前两个数,计算并记录在一个数组hash[]后,再遍历后两个数,并在hash[]中直接查找,这样复杂度就为O(n^2)(n=100)完整代码:[cpp] view plaincopy
2015-12-20 16:21:44 485
原创 杭电acm1425
#include #include #define N 1000001using namespace std;bool cmp(const int& a, const int& b) { return a > b;}int main() { int n, m, i; int d[N]; while(~scanf("%d%d", &n, &m)) { for(i=0
2015-12-20 16:09:05 540
原创 杭电acm1264
//据说使用线段树的 #include #include #define N 101int i, j, ans, buf[N][N];void print() { ans = 0; for(i=0; i<N; i++) for(j=0; j<N; j++) if(buf[i][j]) ans ++; printf("%d\n", ans);}int ma
2015-12-20 14:52:16 474 1
原创 杭电acm1272
通过数据要判断俩点:1、要保证每个点都相通,2、两点之间只有一条路径相通方法:1、判断连通图,即ans就是只有一个父节点,2、flag=1,即任意两点的父节点不能相同#include #include #define N 100001struct d{ int x; int y;}buf[N];int flag;int parent[N];bool judge
2015-12-19 15:40:41 485
原创 杭电acm1232
为啥ans要 -1 ? 未解。#include #define N 1000struct d{ int x; int y;}buf[N];int parent[N];int find(int x) { return x==parent[x] ? x : find(parent[x]);}void uni(int x, int y) { int a = find(x
2015-12-19 14:53:42 598 1
原创 杭电acm1213
并查集for(i=0; i//注意要-1,因为这里的i是从0开始uni(buf[i].x-1, buf[i].y-1);#include #define N 1001struct d{ int x; int y;}buf[N];int parent[N];int find(int x) { return x==parent[x] ? x : find(pa
2015-12-19 14:28:43 640
转载 十大思想实验
思想实验是指:使用想象力去进行的实验,所做的都是在现实中无法做到(或现实未做到)的实验。例如爱因斯坦有关相对运动的著名思想实验,又例如在爱因斯坦和英费尔德合著的科普读物《物理之演进》中,就有一个实验要求读者想像一个平滑,无摩擦力的地面及球体进行实验,但这在现实(或暂时)是做不到的。思想实验需求的是想象力,而不是感官。爱因斯坦曾说:“理论的真理在你的心智中,不在你的眼睛里。”而在这其中。伽利略的实验
2015-12-18 19:13:23 450
原创 杭电acm2700
我知道我很水。#include int main() { char c; int tmp = 0; while(scanf("%c", &c)) { if(c=='#') break; else if(c=='\n') { tmp = 0; } else if(c=='1') { tmp ++; printf("%c", c); } el
2015-12-18 12:46:31 442
原创 杭电acm1115
求多边形重心的题目大致有这么几种: 1、质量集中在顶点上 n个顶点坐标为(xi,yi),质量为mi,则重心 X = ∑( xi×mi ) / ∑mi Y = ∑( yi×mi ) / ∑mi 特殊地,若每个点的质量相同,则 X = ∑xi / n Y = ∑yi / n 2、质量分布均匀 特殊地,质量均匀的三角形重心: X = (
2015-12-16 14:15:47 377
原创 杭电acm1086
S(abc) = (|ab|*|ac|*sinΘ) / 2 = |ab| × |ac| //叉积#include struct point { double x1, y1, x2, y2;}buf[101];int judge(int i, int j) { //叉积 int f1=0,f2=0; double acd=(buf[i].x1-buf[j].x1)*(
2015-12-16 13:18:17 893
转载 Beam Search Algorithm
HomeLearnersInstructorsDevelopersDownloadBeam Search Algorithm (Draft by Andrew Jungwirth)ObjectivesTo show how the Beam Search Algorithm uses a heuristic function and a
2015-12-15 15:10:53 678
原创 杭电acm1039
傻逼?还打个笑脸,笑尼玛。# include # include char str[1010] ;int isvowels (char ch){ if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') return 1 ; return 0 ;}int t1(char
2015-12-15 14:14:00 529
原创 背包问题
01背包问题题目有N件物品和一个容量为M的背包,每种物品只可以取一件。第i件物品的费用是c[i],价值是v[i]。求解将哪些物品装入背包可使价值总和最大。分析这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][j]表示前i件物品恰放入一个容量为j的背包可以获得的最大价值。则其状态转移方程便是:f[i][j]=max
2015-12-12 20:23:43 1146
原创 HMM Part-of-Speech Tagging
HMM Part-of-Speech TaggingA HMM is like this:Q=q1q2....qNA set of N statusA=a1a2...an1...annA transition probability matrix A, each aij representing the probability
2015-12-09 16:49:49 1044
原创 杭电acm1073
#include#includeusing namespace std;int main(){ int t,i; string s1,s2; string data,input; scanf("%d",&t); getchar(); //过滤掉数字后的回车字符,防止后面多读一行 while(t--) {
2015-12-08 13:11:50 480
原创 Forward Algorithm
The goal of the forward algorithm is to compute the joint probability , where for notational convenience we have abbreviated as and as . Computing directly would require marginalizing over al
2015-12-07 15:28:06 585
转载 An Implementation of Double-Array Trie
An Implementation of Double-Array TrieContentsWhat is Trie?What Does It Take to Implement a Trie?Tripple-Array TrieDouble-Array TrieSuffix CompressionKey InsertionKey DeletionDouble-Array Pool A
2015-12-06 20:35:25 408
转载 HMM和Viterbi
1. 隐马尔可夫模型的定义和构成2. 隐马尔可夫模型的三个问题3. 基于隐马尔可夫模型的分词算法实现1.1. 介绍隐马尔科夫模型之前首先说一下几个重要的概念,(1)马尔可夫假设:模型的当前状态仅仅依赖于前面n个状态,可以看到这种假设有可能会丢失信息。(2)马尔可夫过程:状态间的转移仅仅依赖于前n个状态的过程,也就是当前的状态跟前n个状态之前的状态
2015-12-05 21:08:17 522
转载 另一篇并查集
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点
2015-12-05 16:43:18 238
转载 并查集(Union-Find)算法介绍
本文主要介绍解决动态连通性一类问题的一种算法,使用到了一种叫做并查集的数据结构,称为Union-Find。更多的信息可以参考Algorithms 一书的Section 1.5,实际上本文也就是基于它的一篇读后感吧。原文中更多的是给出一些结论,我尝试给出一些思路上的过程,即为什么要使用这个方法,而不是别的什么方法。我觉得这个可能更加有意义一些,相比于记下一些结论。
2015-12-05 16:42:23 298
转载 Trie树
很有段时间没写此系列了,今天我们来说Trie树,Trie树的名字有很多,比如字典树,前缀树等等。一:概念 下面我们有and,as,at,cn,com这些关键词,那么如何构建trie树呢?从上面的图中,我们或多或少的可以发现一些好玩的特性。 第一:根节点不包含字符,除根节点外的每一个子节点都包含一个字符。 第二:从根节点到某
2015-12-05 15:14:08 247
原创 杭电acm4530
神啊,原谅我愚笨的大脑吧。#include #include int main() { int T,x,q,tk; int m; scanf("%d",&T); int i; for(i=0;i<T;i++) { scanf("%d",&x); scanf
2015-12-05 13:36:59 236
原创 杭电acm4520
第28行,原来用的是abs,WA。因为返回的是int类型的,所以总是0。自己写了个myabs函数。#include #include float myabs(float a) { return a>0?a:-a; } int main() { int n, i, ans; double max, min, sum, temp, t1, t2, d[21];
2015-12-05 13:24:13 393
原创 学习HanNLP2015年12月4日 16:24:53
对于我来说,非学霸,智商一般。不能看完一个知识点就写出代码来,网上找不到单个的对应于一个知识点的源码,于是决定看开源了。看开源很痛苦,一个Java文件引了别的包的文件,去那个包里看看,它又引了一大堆别的包的文件。感觉是无底洞。但是还是要看,不知道到放寒假回家时的俩个月里能不能看完HanNLP。选HanNLP是因为它有比较好的文档(针对我的水平而言),作者有博客更新,还是Java的,本来看开源就痛苦
2015-12-04 16:31:45 873
转载 eclipse中导入jar包源文件
在项目中调试或查看代码过程中,有时点中某个类想看源代码,却会跳出"Class File Editor",此时需要导入相应源码才行。导入源码的方式如下:1.在弹出的"Class File Editor"页面,有个"Change Attached source..."按钮,点击该按钮,会弹出一个对话框,转到3;2.右键点击要查看源码的jar包,选中"Properties",点击
2015-12-04 16:18:20 1606
原创 杭电acm1228
#include #include int main() { char *num[10] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; char ch, c[50], temp[20]; int i, j, k, l, num1, num2, ans; whi
2015-12-02 14:39:57 733
原创 杭电acm2050
(1) n条直线最多分平面问题 题目大致如:n条直线,最多可以把平面分为多少个区域。 析:可能你以前就见过这题目,这充其量是一道初中的思考题。但一个类型的题目还是从简单的入手,才容易发现规律。当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。这样就会得到n-1个交点。这些交点将第n条直线分为2
2015-12-02 13:48:21 1002
原创 杭电acm4535
错排公式。。。当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用D(n)表示,那么D(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推.第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法;第二步,放编号为k的元素,这时有两种情况:⑴把它放到位置n,那么,对于剩下的n-1个元素,由于第k个元素放到了位置n,剩下n-2个元素
2015-12-02 12:43:01 351
文本挖掘(英文版)
2016-04-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人