HDU 3535 混合背包

看來還是需要好好理解背包的含義啊!本來鄙人寫了3600+的代碼,各種悲劇。果然還是對背包的理解不深啊!看過人家的代碼後才A出來.....#include<iostream>#include<string>#include<cstdio>using namespace std;int dp[111][111];int max( int a,int b ){ return a>b?a:b; }int max( int a,int b,int c ){

POJ 3013 SPFA

這個題很有意思,其實就是求出最短路徑,再用最短路徑值*結點值的和。通過這題,又找到了編程的一個bug,總是想省空間,結果就只能悲劇了,還是先相乘後強制轉化的問題,必須出錯的!第一次用比__int64還大的資料類型usigned long long,另外熟悉了一下宏,感覺還不錯。對最短路徑又有了新的想法,理解演算法很有好處啊!!#include<iostream>#include<queue>#define MAXN 50005#define ULL unsigned

POJ 1815 最大流最小割枚舉找割點

這題WA得我SB一樣.......竟然是聲明了一個函數沒有調用.....題意:在聯絡網中,去掉最少的聯絡點使得從S和T無法連絡。赤裸裸的求最小割點集的問題;建圖:網上都有,就不說了。怎樣找割點呢?在這裡變成了割邊。上一題POJ2125用的是DFS,找到集合S,那麼分跨S與T集合的邊就是割邊了。這麼做,對於二分圖還是很方便的。這裡卻行不通了。前面講過獨立軌的概念,圖G獨立軌最大條數p(S,T),就是圖的點割集的個數。在每條獨立軌的內頂點取一個點,組成的就是點割集了。這題要求的是字典序最小的點割集,

POJ 1862 優先隊列

題目大意百度來的。看不懂=.=說科學家有奇怪生物,每兩個會合并,合并後的重量為2*sqrt(m1*m2);求最終合并的生物最小重量。由於m1+m2>=2*sqrt(m1+m2);所以每次在優先隊列中取出2個元素,進行合并。保證最後的解最小。題意沒懂WA了一次。#include<iostream>#include<queue>#include<cmath>using namespace std;double max( double a,double b )

求解中綴運算式…

E- Seven tombsTime Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)Total Submission(s) : 31   Accepted Submission(s) : 9Font: Times New Roman | Verdana | GeorgiaFont Size: ← →Problem

FZU 2087 統計樹邊

[題目大意]給定一個無向圖,求出這些邊(至少出現在一棵產生樹中的邊)的數目。[解題思路]理解MST的思想,將貪心思想運用。由小到大遍曆這些邊,權值相同的為一組。先判斷這些邊是否能夠成為樹邊,再對這些邊進行合并。[注意事項]不知道為何,以前一直寫的模板不頂用了...一定要改成比較醜的樣子...[Code]#include<iostream>#include<cstdio>#include<algorithm>#define FF(i,N) for( int i=

[U]Overfencing

簡單DP/*ID:sevenst4;LANG:C++PROG:maze1*/#include<stdio.h>using namespace std;char m[222][88];int hi[101][40];int fx( int x ){ return (x<<1)-1; }int fy( int y ){ return (y<<1)-1; }int min( int a,int b ){ return a<b?a:b; } int main()

HDU 1796 How many integers can you find 容斥原理

WA了N久N久... 最後發現原來是自己有些特殊情況沒有存好。一個條件讀入的資料要符合(1,N)這個區間範圍內....在處理的時候沒有處理好,天真的沒有排除,只是當有這樣的資料的時候跳過.... 當然... 悲劇發生了=

HUD I love sneakers! 變化的分組DP

網路上題解很多。我就不亂說了。首先分組背包的原型:給物品分組,容量為V的背包,每個分組內的物品互斥,每個分組最多取一個物品。求最大值。代碼很簡單:for( int i=0;i<group;i++ )for( int j=V;j>=0;j-- )for( int k=0;k<total[i];k++ ) f[V]=max( f[V],f[V-cost[k]]+value[k] );背包九講裡面有,相信大家都看了。不多說。而這題,是在每個分組中最少取一種物品。so~ 不能用一維了,

HDU 2276 小小矩陣乘法

這些天刷了蠻多的矩陣題,感覺對思維的訓練還是很大的,一向不喜歡做題的我這幾天被驚奇郭虐菜了...果斷跟進做題!題目大意:有一排數列用0,1構成,若當前數的左邊為1,則當前數改變狀態這樣轉一圈。為一次。那我們就可以這麼構造矩陣了。先看這個矩陣:|010||001|=B|100|用A=[101]去乘,可見第一列的1與A最後的1有關係,也就是左邊為1狀態改變的意思。再多多看看就是了。然後由於變化與不變化,與自身有關係只要B+E就可以了。然後矩陣N次冪..... soso.....Time:62ms

哈夫曼樹 優先隊列STL的應用

最近每次做題都要看很多資料。看來是真的老了。這題給定字串,以及待編碼的字元數,採用哈夫曼編碼,編碼總長度最短。求此值。這題添加虛擬節點,使得最後的合并方便,也就是使得每次合并保證樹中都大於T個。T為提供的編碼字元數。相當於每一個節點要麼是空的要麼是有T個孩子的。設待編碼字元為N,添加的虛節點個數為β。那麼對(N+β)進行一次合并-> (N+β)-T+1 第二次合并 (N+β)-2*(T-1)......最後一次(N+β)-r*(T-1)=1也就是(N+β)%(T-1)==1%(T-1);

POJ 3204 求使得最大流增大的邊

這題還是有點技巧的。我們求出了最大流,怎樣知道哪些邊可以使得流量增大呢?若存在e(U,V):S->U路徑上的點都有剩餘容量,V->T路徑上的點都有剩餘容量。如果有某條邊為上述情況,那麼對邊e進行擴容,最大流增大。應該十分好理解吧。通過源點進行DFS尋找S集合中所有的點進行標號,很容易。那麼...V到T可達這怎麼弄呢?同樣我們通過T來DFS只要存在點V到T有剩餘容量,則V為集合T的點,在DFS(V);由夠邊的特殊性,我們可以發現,當前邊k的反向邊就是k^1,通過k^1來判斷有剩餘容量就

poj1161 The Suspects

並查集#include<iostream>using namespace std;#define N 30000#define G 501int p[N], group[N];int main(){ int n, g; while(scanf("%d %d", &n, &g) == 2) { if(n + g == 0) break; int i,j,k;

HDOJ 1730 又見階梯博弈

再做有種親切感,比SG簡單多了.... 淚奔....將同行兩棋子之間的空格數視為某堆的石子數。進行一次Nim就OK了....#include<iostream>#include<cmath>using namespace std;int main(){ int N,M; while( scanf("%d %d",&N,&M)!=EOF ) { int xo=0; int a,b; for( int i=0;i<N;i++ )

POJ 1486 唯一二分圖匹配 好題

一道很好的題目。大意:很多透明的矩形薄片平攤在平面上,每個矩形薄片有數字編號。現在給出矩形薄片的邊界與編號的座標。求出能唯一確定的矩形薄片的字母標號與數字編號。很容易轉化成二分圖的題。開始題意弄錯以為是必須全部都唯一匹配則輸出匹配序,不行則輸出none.現在的題意是求關鍵邊... 不用刪邊,特判就好.#include<iostream>#include<cstdio>using namespace std;struct RECT{ int

Tarjan演算法求割,橋,塊(點雙連通分支),邊雙連通分支總結

2011/10/12--2011/10/17眨眼5天過去了,這幾Apsara Infrastructure Management

usaco Raucous Rockers

這是一道DP問題,個人覺得挺有意思的,呵呵……!首先定義了一個dp[21][21][21]的三維數組。dp[i][j][k]表示使用到了i張唱片,已燒錄到了第j首歌,且當前正在燒錄的唱片已佔用了時間為k時的最優解。狀態轉移方程為:dp[i][j][k] = max{dp[i][j-1][k-data[j]]+1,dp[i][j-1][k],dp[i-1][j-1][kk]}其中1<=kk<=k.代碼好下:/*ID: guo geerPROG: rockersLANG:

[U]3.3.1 歐拉迴路

歐拉迴路,採用遞迴的方法。採用遞迴的方法實現。/*ID:bysenLANG:C++PROG:fence*/#include<stdio.h>#include<stack>#define MAXN 501#define MAXF 1025using namespace std;int map[MAXN][MAXN]={0};int circuit[MAXF];int nodenum;int maxnode=0;int degree[MAXN]={0};int N;int

HDU4267 分組線段樹

2012長春網賽的題目,光頭了...悲劇.現在知道做了。分組為[a,b]區間內除k餘m的分為一組。這樣按組來更新就好了。這題的突破點就在於k很小。線段樹:#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#define MN 50010using namespace std;int tree[MN<<2][55];int flag[MN<<2]

usaco A Game

好久沒寫過題目了……呵呵!這是一道DP問題,比較簡單!代碼如下:/*ID: guo geerPROG: game1LANG: C++*/#include<iostream>#include<fstream>#include<cstring>#include<string>using namespace std;int dp[210][210];int data[210];int s[210];int main(){ ifstream fin(

總頁數: 61357 1 .... 7787 7788 7789 7790 7791 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.