原创 ZOJ 3596 Digit Number

看過像1136這類求最小倍數的題就知道,應該用BFS,逐漸構造從小到大的滿足條件的數。另外根據條件以及餘數,設置狀態標記位,第一次達到該狀態時進行置位,因爲之後再到達同一狀態時,其對應的數必然更大。另外內存充足,隊列可以開得足夠大,不要用

原创 ZOJ 3602 Count the Trees

開始以爲子樹不僅需要同構,還要每個節點的編號相等,然後發現測試樣例怎麼對不上的呢。於是看了解題報告,於是思路就暴露了。一個節點對應一顆子樹,所以可以爲每個節點映射一個整數,這個整數唯一體現了這顆子樹的形態。顯然這個整數可以遞歸地由兩個孩子

原创 C++ std::random_shuffle

鑑於每次打開的速度都很慢。。From http://www.cplusplus.com/reference/algorithm/random_shuffle/                                     

原创 ZOJ 3591 & 3594

3591 Nim 這題連基本的Nim都不告訴怎麼,讓比賽時沒見過的情何以堪。 #include <cstdio> #include <algorithm> using namespace std; typedef long long ll

原创 CDOJ 1635 Building Roads

Problem:http://www.acm.uestc.edu.cn/problem.php?pid=1635 最大最小生成樹,但由於本題中的邊權值比較特別,有十分簡單地做法。 最小樹:按人口排序,然後依次連通相鄰的城市即可 最大數:先

原创 浙江大學第13屆程序設計競賽總結

一大早被賽會給坑了,說是一個人不能領三人的證,於是不到八點就爬起來,屁顛屁顛地趕過去了。事實上由於人太多了,依然是一人領了三人的證。下午四個小時的比賽一晃而過,最終3 AC 1 TLE 1 Debugging 15 Rank,相對來說是個

原创 ZOJ 3598 Spherical Triangle

當時居然沒想到轉成直角座標系計算,一搜居然發現有餘弦公式:cosA = (cosa-cosb*cosc)/(sinb*sinc),果斷用之。a, b, c是單位球下角A, B, C所對的弧長。 #include <math.h> #i

原创 ZOJ 3600 & 3603

兩個簡單題,但都是幾遍才過的- - 3600 Taxi Fare 杭州公交漲價了,不過沒關係,反正坐的少。當時新老價格不是分開算的,所以出現了舍入問題。 #include <stdio.h> int main() { int T;

原创 ZOJ 1202 Divide and Count

高中排列組合題,以第一個case爲例。方案數C(6, 3)*C(6-3, 3)/2! = 10,之所以要除2!是因爲兩個容量爲3的箱子是對等的,故除去2的全排列。在第二個case中,則是C(6, 1)*C(6-1, 2)*C(6-1-2,

原创 ZOJ 3605 Find the Marble

傳說中的江湖賭騙術,能自己想到的dp都不是什麼複雜的dp。用dp[i][j]k]表示前i次交換看漏j次最後猜k的可能排列數,遞推時,若第i步看漏,則dp[i][j][k] += dp[i-1][j-1][k]。若第i步沒看漏,則分兩種情況

原创 爲Zend Studio配置JRE

From: http://kb.zend.com/index.php?View=entry&EntryID=339 Note: Current Zend Studio runs only on 32bit JRE. How to

原创 CDOJ 1644 KKX Sequence

Problem: http://www.acm.uestc.edu.cn/problem.php?pid=1644 最終結果可由通過組合數和最初始的排列表示出來,類似一個二項展開的樣子,但是這樣並不容易看出來最佳調整策略是怎樣的。 於是在

原创 CDOJ 1639 Fruit Ninja

Problem:http://www.acm.uestc.edu.cn/problem.php?pid=1639 乍一看覺得挺麻煩,但事實上要考慮的特殊情況並不多。 首先從INF的情況入手比較容易,當m爲10的倍數時,可以無窮地加下去,例