Time of Update: 2018-12-03
簡單dp把重物按品質大小排序一個物品只有可能跟其品質相鄰的物品一起拿 品質差的平方才最小dp[i][j]表示在前 i 個物品中取 j 對所需最小疲勞度dp方程:dp[i][j]=min(dp[i-1][j],dp[i-2][j-1]+(wi-w[i-1])*(wi-w[i-1])); 看取或者不取前兩個物品的疲勞度大小#include<iostream>#include<cmath>#include<cstdio>#include<vector&
Time of Update: 2018-12-03
Defend Jian GeTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 677 Accepted Submission(s): 141Problem DescriptionDefend Jian Ge, an interesting RPG map in WAR3, has a very complete equipment
Time of Update: 2018-12-03
1、現在訓練雖然接觸到了很多原來不知道的演算法 也有用過 去解決老師布置的題目 但都是為瞭解特定的題而學 學的不深 用的不熟dp 搜尋這些最基本 但是真的很重要 變化很多 平時要花更多時間去做這些題 不能太貪心了 來一個沒學過的演算法就去學一下 都不會用2、比賽裡面總有些不需要什麼演算法的題 有些就是簡單的類比 或者考思維 遇到這種題 題目長了不能怕 耐心看完下次比賽一定要把全部題目都看完 看懂不過還是要先大概判斷下演算法 但也不能想的太難了3、這次比賽時間分配也沒怎麼落實
Time of Update: 2018-12-03
晚上A一題,睡的香~@Albafica大牛睡覺前再水一發字典樹:->題目請戳這裡<-題目大意:有個火星人,寫了一段火星文,都看不懂,但是留下了一本字典,要求翻譯。能翻譯的翻譯,不能翻譯的直譯~題目分析:字典樹字典樹~詳情請見代碼:#include <iostream>#include<cstdio>#include<cstdlib>#include<cstring>using namespace std;typedef struct
Time of Update: 2018-12-03
->題目請戳這裡<-題目大意:給2個長度為4的數字串,求從第一個串變到第二個串最少要幾步。每一步變換情況有:1:每個數字+1,9+1 = 1;2:每個數字-1,1-1 =
Time of Update: 2018-12-03
LianLianKanTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1778 Accepted Submission(s): 558Problem DescriptionI like playing game with my friend, although sometimes looks pretty naive. Today
Time of Update: 2018-12-03
GraphTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 642 Accepted Submission(s): 94Problem DescriptionP. T. Tigris is a student currently studying graph theory. One day, when he was
Time of Update: 2018-12-03
要求最短時間,使用BFS,使用優先隊列,將時間少的放到堆頂。先出堆。然後由於要輸出路徑,在節點中加入PRE,設計的資料結構不同這裡的方法也不一樣,可以將矩陣中的點作為節點,那麼就有prex,prey,如果像我一樣單個節點作為隊列中的元素,則要記錄節點編號,我的方法有點麻煩,推薦直接記錄x,y的方法。 Ignatius and the Princess ITime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K
Time of Update: 2018-12-03
題目地址:http://www.spoj.com/problems/SUBST1/題目意思和解題思路都和SPOJ694一樣,只是範圍更大但是我們採用的演算法無壓力,直接碾壓過。詳見:http://blog.csdn.net/dr5459/article/details/9051149代碼:#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn
Time of Update: 2018-12-03
魔板Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1352 Accepted Submission(s): 270Problem
Time of Update: 2018-12-03
這題是求的最小花費是個乘積,因此用log先轉化為加法,最後再將答案用exp轉化。這道題目將每一個Paratrooper當做一條邊,行與列分別當做節點,行與源點相連,容量為相應處理過的花費。列與匯點相連,容量為相應處理過的花費。最後把Paratrooper落下的座標相應的行和列處理成一條容量為INF的弧。最後求一個最小割。ParatroopersTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 4848 Accepted: 1470
Time of Update: 2018-12-03
題目地址:http://acm.timus.ru/problem.aspx?space=1&num=1297題目意思:給你一個字串,要你求出最長的迴文子串解題思路:把原串的反串加個原串後面,中間加個沒有出現過的字元然後,原串中,下標i在反串中對應的位置為2*l-i如果求以i為對稱軸的迴文串,我們求suffix(i)和suffix(2*l-i)的LCP如果求以i和i+1為對稱軸的迴文串,我們求suffix(i+1)和suffix(2*l-i)的LCP代碼(這是我寫的直接查詢版的,最壞情況下
Time of Update: 2018-12-03
又是一道數塔類型的題目,之前寫的一道題,那個時候拿到這道題就看出了是數塔,於是開始碼,用了自頂向下,這幾天整理題目,順便去網上看了下別人的代碼,發現當時自己的想法實在太繁瑣了,用自底向上的方法代碼要簡潔很多不說,還少了很多控制條件。具體方法與http://acm.hdu.edu.cn/showproblem.php?pid=2084這道題目類似。狀態方程 f(i,j)=max(f(i+1,j) ,f(i+1,j+1) ,f(i+1,j-1))+a[i][j];
Time of Update: 2018-12-03
趁熱打鐵,再來幾題,加深理解。一樣是求最小點權覆蓋,同樣求一個最小割,但是要求出割去了那些邊,只要用最終的剩餘網路進行一次遍曆就可以了,比較簡單。建圖:同樣是一個二分圖,左邊的點代表去掉出邊,右邊的點代表去掉入邊(小心別弄混),左邊去掉出邊的點與源點相連,容量為wi- 。右邊的點與匯點相連,容量為wi+。然後更據給出的弧進行連線,權值為INFDestroying The GraphTime Limit: 2000MS Memory Limit: 65536KTotal Submissions:
Time of Update: 2018-12-03
這裡我再給出幾個等價關係1:f是容量網路G的最大流。2:|f|等於容量網路最小割的容量。3:容量網路不存在增廣路。4:殘留網路不存在從源點到匯點的路徑。以上四個描述等價。這樣我們就知道要求最小割就是要求一個最大流另外我們要知道割的容量只計算前向弧。 建圖:每個任務看做一個點,與源點連一條弧容量為消耗1,與匯點連一條弧容量為消耗2。 額外消耗:任務a,b不在一處工作則要產生額外消耗,這裡分別建兩條弧,(a,b)
Time of Update: 2018-12-03
最大費用流。建圖:1,對於每一個數字拆成兩個點,之間連一條弧,容量為1,費用INF; 2,每兩個能連通的點i和j 連(i,j) (i+n*n,j) (i,j+n*n) (i+n*n,j+n*n) 容量INF,費用0 3源點與1連,費用0,容量k,終點與n*n連,費用0容量k。然後求一個最大費用, Kaka's Matrix TravelsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 5
Time of Update: 2018-12-03
地址:http://acm.hdu.edu.cn/showproblem.php?pid=3630題目意思:給你一個矩陣N*M有Q次查詢,然後問你一個子矩陣裡面的最大收益收益的演算法是:這個子矩陣裡面找一個不含-1的矩陣,然後求他的和,其中可以選一個點,是其值變為S倍,顯然,選最大的最好解題思路:這個題分兩步:先求最大子矩陣,然後用二維RMQ求出最大值就OK,其中求和可以預先處理我之前一直TLE,過了快一個星期才查出來是在RMQ查詢的時候被LOG/LOG把時間拖死了對於這個,打表解決就OK下面上
Time of Update: 2018-12-03
本題是一個無向圖,然後讓我們求出去掉最少的點,可以使s和t不連通,並要求我們輸出字典序最小的一種方案。看出了是最小割,但沒想到要拆點,又學到了。建圖:1:把除了s和t外其他所有點連一條弧(i,i+n,1)(這條弧表示i沒有丟失自己的連絡人,沒有這條弧,說明i不能喝他的朋友聯絡了。因為i能聯絡到的人我是用i+n相連的)2:如果i知道s的號碼,則連一條弧(s,i,INF), 如果i知道t的號碼,則連一條弧(i+n,t,INF)3:如果i知道j的號碼 ,則連弧(i+n,j,INF)
Time of Update: 2018-12-03
混合圖的歐拉迴路判斷方法在黑書上面有具體提到。 這裡採用的方法:先給無向邊定向,讓後統計每一個點的出入度,如果有一個點的出入度只差為奇數,則該圖不存在歐拉迴路(有向圖的歐拉迴路每個點的度數都是偶數,至於出度=入度,在求最大流時我們會進行調整)。全部判斷完後,開始建圖。1:把每一條無向邊建成一條容量為1的弧。2:出入度之差不為0的點:如果出>入 則將改點和源點相連 容量為出入度之差/2。如果入>出
Time of Update: 2018-12-03
題目地址:http://acm.timus.ru/problem.aspx?space=1&num=1780題目意思:給你一個格雷碼的二進位和格雷碼本身但是有部分被?代替,問你這個結果是否唯一唯一就輸出,不唯一就輸出Ambiguity,不存在就輸出Impossible解題思路:這題沒有任何難度,唯一的問題就是要懂格雷碼下面給出格雷碼的轉換方式:二進位碼->格雷碼(編碼):從最右邊一位起,依次將每一位與左邊一位異或(XOR),作為對應格雷碼該位的值,最左邊一位不變(相當於左邊是0);