原创 uestc data structure D - 秋實大哥與戰爭

本來我是基本不會stl的,但這題還是讓我體會到了stl的有用,看來要把stl加入我的學習計劃了 #include<cstdio> #include<iostream> #include<cstring> #include<set> #in

原创 UVA - 10118 Free Candies

做完覺得其實很簡單,但當初最開始思考的時候卻思路十分不暢,卡了很久,還是對問題的特點分析不夠迅速有效。 開始我一看,就覺得是記憶化搜索,但是想了想,如果從0,0,0,0這個狀態開始的話,那下一個狀態難道是這個狀態的子狀態?可這樣就矛盾了,

原创 UVA - 10604 Chemical Reaction

本身記憶化搜索沒什麼難的,但被自己坑了幾次。 首先是dfs裏面少了恢復minus[i]的語句,當時根本沒意識到這裏的錯誤,結果debug了半天才找到。 然後是注意處理只有一個管子的情況,這時的熱量應該是0. 最坑的就是i與j反應和j與i反

原创 UVA - 10913 Walking on a Grid

簡單dp。由於只能橫着走和向下走以及每個格子只能走一次。可以枚舉i,j 這個位置時,下一行應該在哪個位置 核心部分冗餘度很高,但想不出0冗餘又不會增加複雜度的辦法。。。乾脆就直接把代碼複製一邊然後改個循環 #include<cstdio>

原创 UVA - 10163 Storage Keepers

開始並沒有注意到需要使兩個量最優與只要求一個量最優有什麼不同,就定義dp[i][j]爲前i個人看守j個storage的最大安全線,然後順便把wage求出來。交上去卻一直wa。疑惑不解的去看別人的代碼,鬱悶的發現所有人都用了兩次dp,我開始

原创 UVA - 11258 String Partition

開始沒仔細考慮,看成了區間dp,這樣複雜度會到十的七次方,果斷超時,後來才發現,可以直接線性dp,從前向後do即可 #include<cstdio> #include<cstring> #include<iostream> #includ

原创 UVA - 10723 Cyborg Genes

這道題應該說我沒有完完全全的搞懂,仍然有點暈暈呼呼的感覺。 對於s1[i]==s2[j]的情況,直接dp[i][j][t]=dp[i-1][j-1][t-1]就行了,因爲s1[i]前面的字母必須在s1[i]之前,s2同理(感覺像是廢話).

原创 UVA 10599 Robots(II)

開始沒想出什麼思路,看了題解恍然大悟,是LIS,不過一看數據量O(n*n)的複雜度要到十的八次方,就一直在思考nlgn,也就是加上二分的方法應該怎麼做。可是思來想去覺得難以實現,後來才發現數據比較水,直接N的平方几十毫秒就過了 #inc

原创 UVA - 10817 Headmaster's Headache

花了四個多小時做這道題,碰到這樣不算難但自己解決不好的題才意識到自己各個方面的不足。 開始,我自己能夠想到要用狀態壓縮的揹包來解決。課有些問題一直沒搞清楚,因爲每個老師能教的課程不一定非得他交,我就認爲狀態轉移時還要考慮各門課教還是不交,

原创 BestCoder Round #42

第一次打bc,也是我第一次打這種比賽,做出來三道不過system test時掛掉一道。原來比賽是這麼的好玩。。。總的來說,還是有很多收穫的 首先我感覺,我的手速還是有了那麼一點提升的 A題水題代碼略 B題變形二分 #include<cst

原创 UVA - 10911 Forming Quiz Teams

簡單記憶化搜索,用二進制位表示組隊情況 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<iostream> #define M

原创 UVA - 11008 Antimatter Ray Clearcutting

狀壓dp,值得注意的地方還是很多的。 開始時始終思路不暢,不太清楚究竟該怎麼定義狀態,所以擱置了很久。後來才明白,由於最後剩下的樹的狀態有很多種,而開始所有樹還在的狀態只有一種,所以可以把狀態定義爲,當前還剩這麼些樹的時候,要使剩下的樹小

原创 UVA - 607 Scheduling Lectures

簡單的dp #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define MAX 1010 using namespace std;

原创 BestCoder Round #43

水了兩道題,而且有一道還被hack了。。。 A題不說 B題 剛看到題目我愣了半天,後來纔想明白如果先對所有數取模,那麼任意兩個數的和一定在0到2q之間,準確的說,是在0到2Q-2之間,而且它們對Q的模存在兩個極大值點,於是我的第一版寫的是

原创 讀揹包九講之二——完全揹包

沒想到完全揹包還有如此神奇的寫法。學習了。 還了解了和快速求冪類似的二進制思想。 對於爲什麼完全揹包能夠這樣直接從s[i][1]到v遍歷可行並且必須這樣,可以從兩個層面理解。一是從抽象的概念角度,也就是文章裏所說的,對於狀態dp[j],由