HDU_1253 勝利大逃亡(BFS)

  糾結一晚上,注意細節啊!!!(看到有很多解題報告都用<queue>,我不太喜歡用STL的東西。。。)My Code:#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 51;struct node{int x;int y;int z;int t;}q[N*N*N];int d[6][3] = {{1, 0, 0}, {-1

HDU_1556 Color the ball(線段樹)

  結構體中定義記錄染色次數的參數(cov),更新時直接找到對應的區間,使cov++。查詢時要有點小操作。查詢過程:void query(當前節點 t,要查詢的點 x){    if(找到要查詢的點)   return cov;    if(該點的cov > 0) {  左孩子.cov += 當前節點.cov;        右孩子.cov += 當前節點.cov;  當前節點.cov = 0;    }

HDU_1203 I NEED A OFFER!

  背包問題,發現這個東西很靈活。看來還是不夠理解啊。#include <stdio.h>#define N 1024struct knap{int w;double v;}a[N];float dp[N*10+7];int main(){int n, m, i, j;while(scanf("%d%d", &n, &m) != EOF) {if(!n && !m)break;for(i = 1; i <= m; i++)

HDU_find the most comfortable road(並查集)

  去你妹的並查集,沒糾結死我!按速度排序,然後枚舉所有的路,知道find(start) == find(end)結束。然後用最大值減去最小值,求其差,取差最小。Code:#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;const int N =

Ural_1353. Milliard Vasya’s Function(DP)

  /*題意:求【1 to 10^9】範圍內各位元字之和為s的數的個數;  思路:定義dp[i][j] (i = 1 to 9, j = 1 to 81),表示位元為i的數各位元之和為j的數的個數。dp[i][j] = (i - 1位元最低位全部補0) + (i - 1位元最高位補j - k {k| 1 <= k <= 9} )。所以轉移方程就是  dp[i][j] = dp[i-1][j] + sum(dp[i-1][j - 1] , dp[i-1][j-2] , ... ,

HDU_1541 Stars(樹狀數組)

  poj上1A, HDU上6A,我暈啊!注意幾點:1、多組資料;2、memset(c, 0, siezeof(c));3、memset(ans, 0, sizeof(ans));my code:View Code #include <stdio.h>#include <string.h>#define N 32010int c[N], n, ans[N];int lowbit(int i){return i&(-i);}void add(int i, int

HDU_1029 Ignatius and the Princess IV

  這題的資料有點問題,給的N個數裡邊最大的數是多少不知道,直接猜了個數用hash做了,居然1A了。。。。#include <stdio.h>#include <string.h>#define N 100007int hash[N];int main(){int n, i, a;while(scanf("%d", &n) != EOF) { memset(hash, 0, sizeof(hash));int max = -1;while(n-

HDU_Virtual Friends (並查集)

  /*貢獻出無數WA, 就因為一個地方寫錯, 悲劇的一晚上啊!不過能過了還是很爽的。  思路:用Trie樹給字串重新標號,然後用並查集,用一個a[i] 記錄當前並查集跟結點上串連的結點數。*/#include <iostream>#include <cstdio>#include <cstring>using namespace std;struct node{int flag; node * next[53];};const int N = 2000

HDU_Ignatius and the Princess III(產生函數)

  一牛人說:母函數就是把費腦筋的事轉換成多項式計算。好吧,我承認母函數用好的話確實很神奇,比如說這個題。可以把n看成無限個可取用的1,2,3,4,5,,,m這些數組成的。然後就是可以寫成母函數的形式G(X) = (1 + X^1 + X^2 + X^3 + ...)(1 + X^2 + X^4 + X^6 + ...)(1 + X^3 + X^6 + ...)...然後就是類比多項式的計算過程。輸入的n是多少就計算到幾階,得到的X^n項的係數就是可能的情況數。 My

Ural_1018. Binary Apple Tree(樹形DP)

  /*第一道樹形dp的題,感覺樹形dp就是在dp的基礎上加了樹這個環境,建樹——DFS。思想上還是基本的動態規劃思想(最優子結構,重疊子問題)。參考解題報告終於把這題做出來的。思路:dp[t][j]為以t為根的子樹,保留j條邊時的最優情況,map[i][j]為i結點到j結點構成的邊的權值。當t與一個孩子相連時:dp[t][j] = max(dp[L][j-1]+map[L][t], dp[R][j-1] + map[r][t]);當t結點與兩個孩子相連時:for(j = 0; j <=

HDU_1398 Square Coins(產生函數)

  母函數模板題,就是稍微改了一下。My Code:#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int N = 307;int c1[N], c2[N];int main() {//freopen("data.in", "r", stdin);int n, i, j, k;while(cin >> n, n) {for(i = 0;

HDU_4019 Instrction Arrangement

 Warmup for 2011 Asia Regional Chengdu (Alibaba精英賽題目重現,SJTU命題)——Problem 1009 /*比賽沒做,周六下午做zoj的月賽做的想吐,周日一點心情也沒有。今天挺師兄說這題是dp的,就做了做。其實更像拓撲排序,大題思路就是把所有入度為0的點入棧,然後出棧。本體多組資料,WA了一晚上!妹的!*///My Code:#include <iostream>#include <cstdio>#include <

HDU_1455 && POJ_1011 Sticks (dfs)

代碼+注釋:#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int N = 100;int s[N];bool used[N];int cmp(int a, int b){return a > b;}bool dfs(int n, int u, int left, int

Ural_1260. Nudnik Photographer(DP)

  /*題意:對1到N這些數進行排列,1在最左邊,相鄰的兩個數之差不能超過2,求有多少種排列方法?  思路:已知1在最左邊,跟1相鄰的只能是2、3。當2跟1相鄰時後邊的部分就是dp[n-1] 。當3在1後邊,2在3後邊時,前三位確定,剩下的就是dp[n-3]。最後剩下一種情況,再加1。  dp[i] = dp[i-1] + dp[i-3] + 1;*/#include <iostream>#include <fstream>using namespace

HDU_1874 暢通工程續(Floyd)

  求圖中任意兩點間的最短路徑,個人感覺用Floyd比較好,有人說這道題可以用SPFA,目前還沒有這方面的思路,先把Floyd的做法貼上,以後再補Floyd code:#include <iostream>#include <cstdio>using namespace std;const int inf = 100000000;const int N = 208;int dis[N][N];int n;void Floyd(){int i, j, k;for(k = 0

HDU_1394 Minimum Inversion Number(線段樹)

  /*設原序列的逆序數為sum,每往後移一個數,可以找到規律sum += n-2*num[i]-1;(n為元素個數,num[i]為移動的數);求原序列的逆序數時可以用線段樹,每輸入一個數,先querry [輸入的數,n]中元素的個數,再把num[i]插入到線段樹中。。。*/#include <iostream>#include <cstdio>#include <cstring>#define L(x) x << 1#define R(x) x

HDU_2717 Catch That Cow(BFS)

  開始沒整明白,還想用dfs遞迴求解,後來看了看解題報告的思路(貌似這題可以用dp),bfs一遍,用一個best[i]存放到i的最優解,最後直接輸出best[k]就行。第一次隊列數組開小(還是不想用<queue>)了,WA了一次。。。#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 100007;int

HDU_1874 暢通工程續(SPFA)

  查SPFA的資料時偶爾看到一種運用,然後很淡定的敲之1A了15MS+328k   code:#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 207;const int inf = 100000000;int vis[N], map[N][N];int dis[N], q[N];void spfa(int n, int

HDU_2673 shǎ崽 OrOrOrOrz

  水題,但是要細心#include <stdio.h>#include <stdlib.h>#define N 10007int a[N], b[N];int cmp(const void * a, const void * b){return *(int *)a - *(int *)b;}int main(){int n, i;while(scanf("%d", &n) != EOF) {for(i = 0; i < n; i++)

HDU_1085 Holding Bin-Laden Captive!(產生函數)

  /*按照母函數的思路,然後類比三個括弧相乘的過程。因為題目已經限定好了硬幣只能是1、2、5。所以可以寫成:(1 + X + X^2 + ...)(1 + X^2 + X^4 + X^6 + ...)(1 + X^5 + X^10 + X^15 + ...)其中三個括弧元素的個數分別是輸入的num_1, num_2, num_3。然後就是類比多項式相乘了。*///ps:代碼有點水,一步一步乘的,反正就三個括弧,費不了多大勁,^_^//My Code:#include <iostream&

總頁數: 61357 1 .... 9430 9431 9432 9433 9434 .... 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.