ACM 刷题
喜欢吃一口烤肉的啵啵
近期个人偏研究一些AI技术。
展开
-
(转载)A星(A*)寻路算法介绍
(文章转载自) 这篇blog是由iOS Tutorial Team的成员 Johann Fradj发表的,他目前是一位全职的资深iOS开发工程师。他是Hot Apps Factory的创始人,该公司开发了App Cooker。学习A星寻路算法是如何工作的!你是否在做一款游戏的时候想创造一些怪兽或者游戏主角,让它们移动到特定的位置,避开墙壁和障碍物呢?如果是的话,请看这篇教程,转载 2014-06-21 11:08:56 · 1105 阅读 · 0 评论 -
【进阶算法】线段树求解区间最大最小值
#include using namespace std;#define MAXN 256int min_ar[MAXN*5];int max_ar[MAXN*5];int data[MAXN];void pushUp( int N ){ min_ar[N] = min( min_ar[2 * N], min_ar[2 * N + 1] ); max_ar[N] = max(原创 2016-04-12 14:59:00 · 808 阅读 · 0 评论 -
【基础算法】最长不含重复的子串长度
#include using namespace std;int last[256];int maxLengthNoRepeat(string s){int start = 0;int maxLength = 0;fill(last,last+256,-1);int flag = 0;for(int i=0;i!=s.size();++i){ if(last[s.at(i)]原创 2016-04-06 12:25:44 · 489 阅读 · 0 评论 -
poj4323 最短编辑距离
AGTCTime Limit:1000MSMemory Limit:65536KTotal Submissions:12240Accepted:4594DescriptionLetxandybe two strings over some finite alphabetA. We would li原创 2016-04-22 10:54:55 · 350 阅读 · 0 评论 -
给定一个随机数范围,产生另一个随机数范围
#include using namespace std;int rand6(){ return rand()%6+1;} int rand7(){ int i = (rand6()-1)*6+rand6()-1; while(i > 34)i = (rand6()-1)*6+rand6()-1; //多出的35过滤掉。 不然会增加了获得1的概率 return i%7原创 2016-04-16 17:00:38 · 1569 阅读 · 0 评论 -
【基础算法】hdu 1159 最长公共子序列
Common SubsequenceTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 32410Accepted Submission(s): 14659Problem DescriptionA sub原创 2016-04-29 15:19:39 · 468 阅读 · 0 评论 -
斯特林公式
数的长度时间限制:3000ms | 内存限制:65535KB难度:1描述 N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)······*2*1.现在你的任务是计算出N!的位数有多少(十进制)?输入首行输入n,表示有多少组测试数据(n随后n行每行输入一组测试数据 N( 0 输出对于每个数N,输出N!的(十进制原创 2016-03-11 14:27:20 · 445 阅读 · 0 评论 -
【基础算法】利用priority_queue实现top K
#include using namespace std;class fix_priority_queue { int max_size; priority_queue , greater >q;public: fix_priority_queue( int max_size ) { this->max_size = max_size; } void add( i原创 2016-04-19 11:53:13 · 933 阅读 · 0 评论 -
【基础算法】大数加法
C++#include <bits/stdc++.h>#define rep( x, a, b ) for ( int x = a; x != b; ++x )#define clr( x, val ) memset( x, val, sizeof(x) )using namespace std;string bigNumAdd( string str1, string str2 ){原创 2016-03-31 16:47:44 · 791 阅读 · 0 评论 -
【基础算法】快速幂取余
Rightmost DigitTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 45421Accepted Submission(s): 17090Problem DescriptionGiven a原创 2016-04-23 12:25:06 · 493 阅读 · 0 评论 -
【基础算法】最大字段和问题
#include using namespace std; #define MAX 10int a[MAX]={-1, -2, 5, 19, -5,10,-7,-8,-9,-1};static int b[MAX];int main(){ b[0] = a[0]; for(int i = 0;i != MAX; ++i) b[i-1]原创 2014-12-17 11:33:20 · 672 阅读 · 0 评论 -
勇者斗恶龙(The Dragon of Loowater, UVa 11292)
勇者斗恶龙(改编)(The Dragon of Loowater, UVa 11292)你的王国里有一条 n 个头的恶龙,你希望雇一些骑士把它杀死(即砍掉所有头)。村里有 m 个骑士可以雇佣,一个能力值为 x 的骑士可以砍掉恶龙一个直径不超过 x 的头,且需要支付 x 个金币。如何雇佣骑士才能砍掉恶龙的所有头,且需要支付的金币最少?注意,一个骑士只能砍一个头(且不能被雇佣两次)。原创 2015-03-01 20:09:14 · 798 阅读 · 1 评论 -
取石子游戏
一天,TT在寝室闲着无聊,和同寝的人玩起了取石子游戏,而由于条件有限,他/她们是用旺仔小馒头当作石子。游戏的规则是这样的。设有一堆石子,数量为N(1输入第一行是一个正整数n表示有n组测试数据输入有不到1000组数据,每组数据一行,有两个数N和M,之间用空格分隔。输出对于每组数据,输出一行。如果先取的TT可以赢得游戏,则输出“Win”,否则输出“Lose”(引号不用输出)样例输入210原创 2015-03-03 21:45:44 · 652 阅读 · 0 评论 -
BKDRHash 算法java实现
背景: BKDRHash算法是字符串hash算法。是一种简单快捷的hash算法。java的继承Object类的提供的hashCode()函数也是采用这种hash算法。下面使用100000个不同字符串产生的冲突数,大概在0~3波动,使用100百万不同的随机数,冲突数大概110+范围波动。import java.util.HashMap;import java.util.Map;import ja原创 2015-11-17 17:56:20 · 4571 阅读 · 0 评论 -
马尔可夫过程的应用举例
马尔可夫过程的应用举例 设任意相继的两天中,雨天转晴天的概率为1/3,晴天转雨天的概率为1/2,任一天晴或雨是互为逆事件。以0表示晴天状态,以1表示雨天状态,Xn表示第n天状态(0或1)。试定出马氏链的一步转移概率矩阵。又已知5月1日为晴天,问5月3日为晴天,5月5日为雨天的概率各等于多少? 解:由于任一天晴或雨是互为逆事件且雨天转晴天的概率为1/3,晴天转雨天的概率为1/转载 2016-03-07 18:53:53 · 9565 阅读 · 0 评论 -
【基础算法】求全排列的方法
深度优先法#include int sum = 0;int n;int in_hand[10];int tmp[10];void dfs(int in_){ if(in_ == n+1) { ++sum; for(int i = 0; i != n+1;++i) printf("%d ",tmp[i]);原创 2016-03-31 14:10:27 · 738 阅读 · 0 评论