原创 LightOJ 1057 - Collecting Gold(狀壓DP)

題意:從起點出發,採到所有金子回到起點的最小步數。可以走8個方向。 思路:dp[s][j]表示經過的點的狀態s,回到i的最小步數。怎麼算回到j點的步數呢?我們更新狀態時得到新的點i,所以算i到j的最小步數。轉移方程:dp[newState

原创 POJ 3270 Cow Sorting(置換羣)

題意:每次交換兩數,花費爲兩數和。最後得到遞增序列。求最小花費。 思路:找到所有置換羣。兩種方法,和置換羣裏最小的交換或和整個數列最小的交換。 #include <algorithm> #include <iostream> #incl

原创 HDU 5587 Array

題意:一個序列初始爲{1},每次複製整個序列添加到原序列後面,並在兩個序列間再添個0,所有新增的數字加1。求前M項和。 思路:官方題解是數位DP(玄學)。            自己打了張表找規律,發現對 2^x - 1,其和爲 sum(

原创 HDU 4059 The Boss on Mars(容斥原理)

題意:求[1, n]與n互素的數的4次方的和。 思路:求1到n的4次方和公式,        sigma(i^4) = n * (n + 1) * (2 * n + 1) * (3 * n * n + 3 * n - 1) / 30. 由

原创 Codeforces Round #334 (Div. 2) C. Alternative Thinking

題意:翻轉連續字串,使得‘10101....'子串最長。 思路:乍一看是dp,其實不用。翻的子串的不相鄰長度是不變的。因此只需找'11'和'00'就可以了。由於只有字串邊界有影響,因此最多增長2,且不會比原串小。#include <alg

原创 C++11中的String&&

String&&並不是指“引用的引用”,也不存在“引用的引用”這種東西。String&& 和 String&是兩碼事。   String&&是C++11中的特性,叫做“右值引用”。它只能綁定到右值,即臨時對象或將銷燬的對象。因此可以把St

原创 HDU 1059 Dividing(多重揹包)

題意:多重揹包。 思路:dp[weight] = max(dp[weight], dp[weight - k * cost] + k * value]), k <= num.注意多重揹包用二進制加速。 #include <algorith

原创 .globl _start 含義

.globl指示告訴彙編器,_start這個符號要被鏈接器用到,所以要在目標文件的符號表中標記它是一個全局符號(在第 5.1 節 “目標文件”詳細解釋)。_start就像C程序的main函數一樣特殊,是整個程序的入口,鏈接器在鏈接時會查找

原创 HDU1257 最少攔截系統(LIS)

題意:中文題。 思路:求遞減序列有幾條。 #include <algorithm> #include <iostream> #include <sstream> #include <cstring> #include <cstdio> #

原创 Hadoop學習初步:Maven構建Hadoop項目

轉自:http://blog.fens.me/hadoop-maven-eclipse/ 前言 Hadoop的MapReduce環境是一個複雜的編程環境,所以我們要儘可能地簡化構建MapReduce項目的過程。Maven是一個

原创 雙向鏈表實現長整數運算

*問題描述:設計一個實現任意長的整數進行加法運算的演示程序。 *基本要求:利用雙向循環鏈表實現長整數的存儲,每個結點含一個整形變量。任何整形變量的範圍是 -(2^15 - 1)~ (2^15 - 1)。輸入和輸出形式:按中國對於長整數的表

原创 LightOJ 1061 N Queen Again(狀壓DP)

題意:給定8皇后位置,問最少多少步使得其互不攻擊。 思路:狀壓dp。 #include <algorithm> #include <iostream> #include <sstream> #include <cstring> #incl

原创 LightOJ 1084 - Winter(記憶化搜索)

題意:每人最多走k步,所有人走成若干堆,問最少走成多少堆。 思路:記憶化搜索。dp[i]表示從i開始最少走成多少堆,next表示最多走到的位置。由於每堆至少3個人,所以得到next值以後分3種情況,next,next - 1,next -

原创 UVALive 4329 Ping pong(樹狀數組)

題意:n個球員每人有不同能力值。選兩選手一裁判,裁判序號和能力值都在兩選手間,問有多少種選法。 思路:b[i], c[i]維護第i個球員左右兩邊比他能力小的人數。用樹狀數組,先從左往右掃一遍,bit[x]記錄是否出現了能力x的人,那麼比i

原创 HDU 3709 Balanced Number(數位dp)

題意:若某數,固定某位爲支點,得到平衡的則稱爲平衡數。給定區間問有多少個。 思路:數位dp。 #include <algorithm> #include <iostream> #include <sstream> #include <cs