Polya 定理 (附POJ 1286 Necklace of Beads 解題報告)

Polya定理:       設G是一個p個對象的置換群,那麼用k種顏色對p個對象進行染色!當一種方案在群G的作用下變為另外一種方案,那麼我們這個時候就認為這兩個方案是一樣的。那麼在這種規定下不同的染色方案為:n=(Ek^m(f))/|G|,其中m(f)是置換f的迴圈節。       Polya定理是基於Burnside定理和另外一個定理的,其中Burnside定理的通俗表達方法如下:     

HDU 2159 FATE 背包問題

我們把忍耐度作為背包容量,把經驗值作為價值,增加一維數量的限制,那麼這道題就是典型的背包問題。我們定義dp[j][k]表示背包容量為j,選擇k件物品所能達到的最大的價值。其實這是前面省略了一維的結果,我們可以更清晰的定義dp[i][j][k]表示前i中物品中,背包容量為j的背包選擇k件物品所能達到的最大值,我們列開狀態轉移方程之後,發現可以省略前面一維保持答案的正確性,因此我們採用第一種定義來最佳化空間。狀態轉移比較簡單,看看代碼就知道了。#include

置換的基礎應用(附POJ 3270 Cow Sorting 解題報告)

       對於n個給定的不同的數,我們可以將任意一個排列看成是一個置換。於是對於POJ 3270這道題,我們這樣看:首先給你的一個n個任意不同的數形成一個排列,然後我們對這個排列中的數從小到達排序。題目中要求的就是要形成升序的排列。那麼我們把輸入的那個排列看成是一個置換。     

樹狀DP專輯(持續更新)

POJ 1655 Balancing Act 簡單樹狀DPhttp://poj.org/problem?id=1655這道題目題意是說,任意刪除樹中的一個點,那麼被分成幾棵樹之後,子樹中點數最大的值就是該點的balance,求具有最小Balance的點。我們用num[i]表示以i為根節點的子樹所包含的點的個數,那麼該點的balance就是最大那個num[i]值了,比較簡單,要是不會就看看代碼吧,這道題很簡單!#include <iostream>#include

簡單動態規劃(POJ 1609 Tiling Up Blocks 解題報告)

       一看這道題,感覺有點像今年多校的一道題,但是一看資料n的大小達到了10^4,那麼如果建圖跑的話要T,因為建圖的複雜度差不多N^2的,於是不能用多校的那道題的做法。       我們看看給的l和r的資料範圍比較小,1到100,那麼我們使用一個dp資料記錄dp[i][j]表示(i,j)出現的次數,然後我們按照題目要求的規則便是需要i>=i'&&j>=j',於是我們定義狀態dp[i][j]表示i'<=i&&j'<=j的最大的累加和,

“文法”之所以成為“文法”–從類的“引用成員”說起。

還是王富濤啊,留言問了一個和 “類的引用成員資料” 有關的問題。什麼叫“類的引用成員”,看看:Code:class Coo  {        int& ref; //ref 是一個引用    };  “引用”是什嗎? 實現上,引用記的是另一個變數的地址,引用自己並沒有“真身”。這一點和指標很像了,除了使用文法不同外,重要不同是,C++規定不能有“Null 參考”(java語言存在Null

母函數簡介及簡單使用(附HDU 1284 錢幣兌換問題 解題報告)

       通常來說,母函數的思想就是使用冪級數來表示一個離散數列。例如對於一個數列是a={a0,a1,a2,-------ak},那麼我們可以母函數的定義就是G(x)=a0+a1*x+a2*x^2+a3*x^3------an*x^n,這裡的G(x)就是數列a的母函數。       母函數可以用來解決整數拆分問題,下面舉一個例子來說明。       例如我們有重量為1克、2克、3克、4克的砝碼各一個,那麼問你這些砝碼可以稱出幾中重量?每一種重量有多少種方案數?     

線段樹一

下面的題目都是更新點尋找區間或者是更新區間尋找點的題目,這一類屬於比較簡單的線段樹的題目,可以用來入門或者加強對線段樹的理解。後面幾道稍微有點難想到,但是想到怎麼使用線段樹之後就是簡單的是用線段樹了。HDU 1754http://acm.hdu.edu.cn/showproblem.php?pid=1754簡單的更新點的值,尋找區間的最大值,很好寫。HDU

逆波蘭運算式演算法

       將一個中序運算式轉化成為逆波蘭運算式的方法其實很簡單,也是一個成型的演算法。通過逆波蘭運算式求一個計算式子的值,也是很簡單的,只要遇到過會用就行了。1、將一個中序運算式轉化成為逆波蘭運算式。       首先維護的是兩個棧,我們這裡暫且稱為S1和S2,S1中的結果最後存的就是逆波蘭運算式,S2中將用於暫時存放運算子並且在最終形成逆波蘭運算式的時候,該棧是會清空的。下面我們看看怎樣具體的形成逆波蘭運算式。     

線段樹二 (持續更新)

HDU 1689http://acm.hdu.edu.cn/showproblem.php?pid=1698這道題是使用懶操作的入門級的題目,線上段樹的結構體中,加一個flag標記該區間是否是同色的。當為同色,那麼在更新或者查詢的時候就可以偷懶了,有效降低時間複雜度。//hdu 1698#include <iostream>#include <cstring>#include <cstdlib>#include <cstdio>#define

HDU 1214 圓桌會議 簡單數學題

題意:       這道題的題意是說給你n個數順時針圍成一個圈,用最少的相鄰交換的次數,將其轉變成為逆時針的一個圈。我們從較小的例子進行考慮,當n為偶數的時候,我們將前n/2 = m個數順序全反最少的交換次數為m*(m-1)/2,那麼將n個數最小的交換次數便是m*(m-1)。而對於n為奇數的時候,我們首先將最大一個數轉移到對應的逆時針的圈的交換次數為n/2,剩餘的(n-1)個數同偶數的情況是相同的。這個題比較簡單,自己比劃一下就能想通……Java代碼:import

線段樹 區間合并

HDU 1540 Tunnel Warfare這道題中我們用0表示該點是好的,1表示已經被毀壞。那麼這道題就是更新點尋找區間的線段樹,但是為了能夠求某個點連續的0的個數,我們線上段樹內需要記一個區間左右端點連續的0的個數。這樣當查詢的時候,分成兩邊來查詢,然後判斷一下點本身是否為被毀壞就行了。詳細見代碼:#include <iostream>#include <cstring>#include <cstdlib>#include <cstdio>#

HDU 1028 整數的劃分(動態規劃)

這道題就是整數的劃分,其實定義好了狀態,就是簡單的動態規劃的遞推。我們定義dp[n][k]表示將n進行劃分,最大的數不超過k的方案有多少種,那麼我們可以得到如下的遞推方案:dp[n][k] = dp[n][k-1] +

第3章 感受(一)——3.14. Hello STL 演算法篇

[回到目錄]白話C++3.14.Hello STL 演算法篇 前一小節,在輸出成績時,我們從students中得到每個學生的學號,然後,通過for迴圈,在一個list中尋找符合“學號等於指定值”的元素。代碼如下(為了方便說明,行號進行了重排):001 for (list<Score>::const_iterator iter = scores.begin(); iter != scores.end(); ++iter)

(大神勿入)據說是一道面試題,然後自己就寫了一發(矩陣的螺旋輸出)

給你一個n*m的矩陣,讓你輸出如下的數字矩陣:01 06 0502 03 04如下:就是這樣,然後自己就寫了一發:代碼貼出來供參考:#include <stdio.h>#define MAX 1000using namespace std;int maze[MAX][MAX];int Update(int n,int m,int &sx,int &sy,int cnt,int sum){    if(n==1&&m==1)    {       

看到的面試題,與大家分享!若解答不妥,望留言交流……

              下面的面試題都是我在網上或者論壇上看到,結合自己的解法,給大家分型。但是也有可能有的題目還沒有看到正確解法的面試題或者筆試題,如果哪位牛人看到這些題,並且有想法或者會的話,麻煩留言,給大家分享,多謝!1、已知一個數組,求第一個只出現一次的那個數。要求時間複雜度為O(n),空間複雜度為O(1)。解答:http://blog.csdn.net/geniusluzh/article/details/83097962、求一個序列的最大和第二大的值。解答:     

HDU 3220 Alice’s Cube (09年上海地區賽水題(位壓縮、逆向搜尋、打表))

       這道題是09年上海地區賽的A題,雖然很水,但是不能直接爆搜,直接爆搜要T。於是我們看到題目的要求是說當操作的步數大於3的時候就輸出more,那麼我們可以從終態枚舉進行了三次操作所能達到的所有狀態,這個是用廣搜應該還是很好寫的。我們直接使用vis數組就完全可以勝任這個記錄了,沒有必要用任何的結構體。     

計算幾何 POJ 2826 An Easy Problem?! (線段位置判斷並且求交點)

        這道題好傷心啊,我wa了好久,原因是我理解錯了題意。        下面還是先說說題目的解題思路吧:1、當兩條線段不想交的時候結果是0.00,這裡就排除了平行的情況;2、當兩條線段有任一條平行於x軸的時候,結果同樣為0.00;3、當兩條線段相交但是是共線的時候(用平行來判斷),結果同樣為0.00;4、還有一種情況就是說,如果存在,某一個在上面的木板擋住了下面的木板的時候,那麼同樣結果為0.00;       

HDU 1556 Color the ball 很典型的更新區間尋找點的題(線段樹樹狀數組兩種解法)

這道題應該說是線段樹和樹狀數組簡單的應用吧!都是用到了基本的功能更新區間尋找點!當使用線段樹時,不想原來更新點尋找區間那麼簡單,這裡需要在結構體內另外添加一個lnc用來記錄更新區間時正好覆蓋到該地區時的改變值!然而在尋找區間過程中當所尋找的區間並不是給定的區間時,需要把給定的區間的sum值進行更新改變!並且也把該子區間的調用update進行更新,這樣才能維護一個更新區間尋找區間的線段樹!用樹狀數組時需要注意此時read(i)就是讀取下表為i的值為read(i)!注意數組盡量開大點!避免出現wa或

國內外OJ簡介

主流的幾個像POJ、ZOJ、HDUOJ、HOJ(哈工大)、HUST(華中科大)的幾個就不介紹了!下面介紹幾個很不錯但是很少人知道的OJ!希望對讀者有些許協助!以下的介紹順序不是按任何順序排列的,為看到想到才寫的!若有不妥之處,請讀者見諒!! Vijos(Velocious Informatics Judge Online System)地址:http://www.vijos.cn/介紹:      Vijos是Vivian

總頁數: 61357 1 .... 24266 24267 24268 24269 24270 .... 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.