原创 hud1151 動態規劃 最大的公共子序列

就是求最大公共子序列,很經典的一題,這題就當複習算法啦 遞推公式:                 c[i][j]=c[i-1][j-1]+1 當a[i-1]==b[j-1]時                            c[

原创 hdu1565 dp狀態壓縮

題意:給你一個n*n的格子的棋盤,每個格子裏面有一個非負數。從中取出若干個數,使得任意的兩個數所在的格子沒有公共邊,就是說所取的數所在的2個格子不能

原创 歐拉函數---MonsterAttack

在數論,對正整數n,歐拉函數是少於或等於n的數中與n互質的數的數目。此函數以其首名研究者歐拉命名,它又稱爲Euler's totient function、φ函數、歐拉商數等。例如φ(8)=4,因爲1,3,5,7均和8互質。 φ函數的值 

原创 hdu1502 大數dp

這道題需要用到大數運算,很機智的想到了java 題意爲有n個a,b,c組成的數,其中a的個數不小於b的個數,b的個數不小於c的個數,求排列 遞推公式 dp[i][j][k]=dp[i-1][j][k]+dp[i][j-1][k]+dp[i

原创 hdu1253 bfs(6個方向,3維)

今天做的這題還是很開心的,雖然wa一次,但是很快找到了原因,並且很快就過了。 題意:一個立方體,主人公要逃離這個正方體,從左上角走到右下角,我是否能在魔王到達之前逃走。   題目很簡單,就一個bfs,沒啥難度。只要把握好方向,邊界問題就好

原创 hdu1978動態規劃

還算比較好理解的動態規劃 題意: 這是一個簡單的生存遊戲,你控制一個機器人從一個棋盤的起始點(1,1)走到棋盤的終點(n,m)。遊戲的規則描述如下: 1.機器人一開始在棋盤的起始點並有起始點所標有的能量。 2.機器人只能向右或者向下走,並

原创 hdu1813 IDA*算法

這道題的題意是:從棋子上的任意一點(邊緣、壞的棋子除外),都能按照某一指令走到邊緣,求這個最短的指令。   一開始看到這個題的時候一點思路也沒有,後來看了一下別人的解題報告,才明白用的是IDA*算法,IDA*算法就是A*算法+迭代。 解題

原创 字典樹(Trie查找單詞再也不用擔心超時了)

字典樹(Trie查找單詞再也不用擔心超時了)  字典樹與字典很相似,當你要查一個單詞是不是在字典樹中,首先看單詞的第一個字母是不是在字典的第一層,如果不在,說明字典樹裏沒有該單詞,如果在就在該字母的孩子節點裏找是不是有單詞的第二個字母

原创 區間信息的查詢與維護(一)樹狀樹組

區間信息的查詢與維護(一)樹狀樹組  核心代碼:int lowbit(int x) {  return x&-x; } int sum(int x) {  int ret=0;  while(x>0)  {   ret+=c[x]

原创 hdu1074動態規劃狀態壓縮

題意:家庭作業,告訴你家庭作業名字,所用時間,最後期限,超過一天,扣一分,求最小的扣分值。 這道題用狀態壓縮,一共有1~1<<15狀態,,j=i-(1<<k)表示未完成的狀態。 當j在在i狀態內時,即(i&1<<j)。然後判斷未完成這個

原创 0-1揹包hdu1864

一道01揹包題 題意:對於每張發票,有兩種可能:報銷,不報銷,求最大報銷額 只要先求出v[i],題將變得很簡單 狀態轉移方程:dp[j]=max(dp[j],dp[j-1]+v[i]); 下面是我的ac代碼 #include<stdio.

原创 歐拉函數

在數論,對正整數n,歐拉函數是少於或等於n的數中與n互質的數的數目。此函數以其首名研究者歐拉命名,它又稱爲Euler's totient function、φ函數、歐拉商數等。例如φ(8)=4,因爲1,3,5,7均和8互質。 φ函數的值

原创 hdu3006狀態壓縮

這題是道狀態壓縮的水題 題意爲輸出一系列集合,求這些集合能組成的集合的個數 s|=(1<<(b-1))加入集合的數 s|i  表示s集合加入i集合 #include<cstdio> #include<cstring> int set[

原创 最大公約數(GCD)的另類求法

普通求法: int gcd(int x,int y){ if (!x || !y)return x > y ? x : y; for (int t; t = x% y; x = y, y = t); return y; } 另類:

原创 hdu1026 bfs

這個題很簡單 就是bfs+保存路徑 題意是:公主被抓走了,勇士去救公主,遇到點(.)時間加1,遇到X不餓能夠通過,遇到數字就是遇到怪物,需要打敗怪物需要的時間就是數值。   一開始用dfs做的,超時了,然後轉爲bfs,就過了,就是保存路徑