組合數學之排列組合若干題

poj1833題目串連:http://poj.org/problem?id=1833題意:中文題目題意不多說,只是用到了STL裡面的next_permutation()函數/*next_permutation(op1,op2)STL中的排列函數,op1存放數組頭地址,op2存放排列的長度。每運行一次該函數,op1中存放原排列的下一個排列。最後一個排列時返回NULL*/#include<cstdio>#include<iostream>#include<cmath&g

[poj 3090]Visible Lattice Point[歐拉函數]

找出N*N範圍內可見格點的個數.只考慮下半三角形地區,可以從可見格點的產生過程發現如下規律:若橫縱座標c,r均從0開始標號,則(c,r)為可見格點 <=>r與c互質證明:若r與c有公因子1<b<min(r,c),則(c/b, r/b)線上段(0, 0)(c, r)上,則(c, r)不是可見格點.(充分性)若r與c互質,顯然線段上不存在整點,則(c,

[bzoj]鬱悶的出納員[Splay求第k大]

練習模板//插入,刪除(一棵子樹),找第k大//遞迴 6556 kb1076 ms//非遞迴6552 kb1064 ms#include<cstdio>const int inf = ~0u>>2;///可能是右移1位的話+1就變負 而不是仍為INF,所以不太好,於是移兩位#define KT (ch[ ch[rt][1] ][0])///根節點的右兒子的左兒子,經常要被操作的那一個const int maxn = 200010;int lim;struct

以中有足樂者

1.ACM的世界是純粹的, 它鞭策著我們去尋找更高效的解決方案, 去欣賞一代代大師們留下的智慧閃光, 僅是這樣, 就能夠讓生命的這一段時光顯得有意義. 生活中, 我們並不能常常體會到這種感覺. 有許多無意義的事, 我們卻不得不去做. 其實, 我們可以用較少的精力完成那些不值得投入精力的事, 同時也減少一些揮霍懶散, 轉而投入到更有意思的事情中~這也算是我這樣一個後知後覺的人對於ACM之路的態度吧. 且行且歌, 享受過程.2013-08-12 11:12===2.大學, 應該是煉獄而絕非天堂.

[poj 2411]Mondriaan’s Dream[狀態壓縮DP]

題意:h*w的地區鋪上1*2的磚,問有幾種鋪法.思路:(常式來源:http://gisyhy.blog.163.com/blog/static/129390343200992441558735/http://blog.sina.com.cn/s/blog_62ebd4410100h081.html部分解讀:http://blog.sina.com.cn/s/blog_68b1a51b0100j91c.html#post)解法一一行一行鋪,判斷後一行能否從前一行轉移而來.具體見代碼.#includ

一、策略者模式(Strategy Pattern)—-1

從鴨子應用開始。做一套類比鴨子的遊戲,遊戲中會有各種各樣的鴨子。我們要使用OO技術來實現此系統。一、定義一個Duck超類,定義鴨子的特性。然後各種不同的鴨子作為子類,繼承該Duck超類1、超類:Duck.java /** * 所有鴨子的父類,定義了鴨子的特性 */public class Duck {public void quack(){System.out.println("我可以呱呱叫");}public void swim(){System.out.println("我可以遊泳");}

[hoj 2576 2577]Simple Computing & II

基本思想都是用容斥原理。hoj 2576 給出一組數x1...xn,問從1到m中能有多少個數能夠整除這組數中的至少一個數。hoj 2577 給出一組數x1...xn,問從1到m中能有多少個數能夠整除這組數中的唯一的數。2576x1 + x2 + x3 - x1*x2 - x1*x3 - x2*x3 + x1*x2*x3;即奇加偶減。2677x1 + x2 + x3 - 2*(x1*x2 - x1*x3 - x2*x3) +

[poj 3321]Apple Tree[類比DFS][時間戳記][線段樹]

代碼短小精悍,理解費勁= =.總結下思路:首先將相連的邊存起來( insert ):用數組類比一個單向鏈表,因而每一條邊存兩次;鏈表的節點代表一條邊,有兩個值:蘋果樹的下一分叉點 & 當前節點上連的上一條邊.一條邊的"地址"就是當前分叉點的加入序號(因為是用數組類比的,也就是下標定址).***由於每一個分叉點的編號(除1外)只是一個id,故使用list數組實現id定址.list值為id分叉點對應的最末加入的一條邊的地址.       ***這裡很繞= =b注意順序tree[ list[

一、策略者模式(Strategy Pattern)—-2

繼承不能很好的解決問題,因為鴨子的行為在子類中會不斷的變化,為了適應這種變化,我們不得不一遍遍的在子類中覆蓋父類的方法。介面也不能解決這個問題,因為介面的代碼布不具有複用的特性,如果某一天所有的鴨子都變成嘰嘰叫,那麼,你不得不到所有的子類中一個個的修改。幸運的是,有一個設計原則適應這種情況:找出應用可能需要變化之處,把他們獨立出來,不要和那些不需要變化的代碼混淆在一起。把會變化的部分取出來並封裝起來,以便以後可以輕易的改動或者擴充此部分,而不需要影響其他不需要變化的部分。一、首先,分清楚該應用中

[hoj 1076]Ordered Fractions[Farey序列]

產生分母不大於N的Farey序列.這是遞迴求法.用擴充歐幾裡得定理可以求緊鄰著的下一項,公式 K1*L2 - K2*L1 = 1但是目前還沒有學習它...#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;int n;typedef struct node{ int up,down; double val;

[HDU 3555]Bomb[數位DP]

題意:給出一個數N,求從1到N中含49的數的個數.思路:按位DP.dp[i][0] i bits num including 49dp[i][1] i bits num excluding 49 but heading with 9dp[i][2] i bits num excluding 49轉移方程dp[i][0] = dp[i-1][0]*10 + dp[i-1][1];dp[i][1] = dp[i-1][2];dp[i][2] = dp[i-1][2]*10 - dp[i-1][1];

一、策略者模式(Strategy Pattern)—-3

回顧上面的例子:1、我們使用繼承的方法,結果因為鴨子的行為在子類中會不斷的變化,為勒適應這種變化,我們不得不一遍遍的在子類中覆蓋父類的方法,結果導致勒代碼的大量重複。2、然後,我們使用了介面的方法,結果仍然不行,因為介面實現,無法做到代碼的重複利用,這在一個可擴充的程式中,顯然是不號的。3、然後,我們使用了策略者模式,將變化的部分,獨立出來,轉換為兩組策略,fly策略組和quake策略組。然後採用組合的方式,使得同種策略的不同實現可以相互的替換,解決了代碼的重複和不可重利用的缺點。一、策略者模式

[hoj 2901]Calculation[二項式定理]

大部分解釋來自:http://hi.baidu.com/timer/item/ebc8c7ef908085215b2d6476題意:求 (1^b+ 2^b+ ... + a^b) % a     1≤a≤1000000000, 1≤b≤1000000000思路:a,b範圍很大,直接算或者直接用快速冪模數肯定不行。注意到題目條件:b一定是一個奇數。觀察原式,發現  [ c^b+(a-c)^b ] % a = 0 .(證明:將 (a-c)^b 用二項式定理拆開即可)於是這樣就簡單了:當a是奇數時,原

HDU OJ 1677 Nested Dolls【二分,LIS】

原題串連:http://acm.hdu.edu.cn/showproblem.php?pid=1677題意:每組測試資料給n個硬幣,現在給你這n個硬幣的長和高,若一硬幣的長和高都小於另一個硬幣,則這來個硬幣可嵌套為一個硬幣。。求最後剩餘的最小硬幣數。思路:首先肯定能想到的是 貪心,不停遍曆,不停更新。。複雜度 n*n (逾時!!),然後又想到和以前做的題類似,有想到 二分圖匹配之最小路徑覆蓋。。這個題資料20000個點,鐵定逾時。。看了xiaod的部落格,看到一種牛叉的演算法。。首先 按照 長

ACM 訓練大綱【CSUST_ACM】

                        來源:彪神發的訓練文檔                                                                                                    ACM 訓練大綱                                                                                                          

HDU 2119 Matrix【二分圖之最小點集覆蓋】

原題串連:點擊開啟連結題意:給一個矩陣,矩陣點值為0或1,每次可以將矩陣的一行或一列 全變成0 ,問最少需要多少次,可以使矩陣的點全為0.思路:講矩陣點值為1的點的橫縱座標問邊建二分圖,求二分圖的最小點集覆蓋。          最小覆蓋要求用最少的點(X集合或Y集合的都行)讓每條邊都至少和其中一個點關聯。可以證明:最少的點(即覆蓋數)=最大匹配數 M簡單的證明如下:(1)M個是足夠的。只需要讓它們覆蓋最大匹配的M條邊,則其它邊一定被覆蓋(如果有邊e不被覆蓋,把e加入後得到一個更大的匹配)(2)

NYOJ 647 奮鬥小蝸牛在請客【類比】

原題連結:http://acm.nyist.net/JudgeOnline/problem.php?pid=647思路:沒啥說的,本想用java寫,沒找到double進位轉換的對應函數。。就該用c++,本想偷懶下,直接用string,然後找個string轉化double的函數,最後還是失敗了

HDU OJ 3829 Cat VS Dog 【二分圖之最大獨立集】

原題連結:點擊開啟連結題意:……思路:根據人物喜歡和不喜歡貓狗的編號來建立二分圖,若兩個人的喜歡,不喜歡

怎麼強制關閉QQ

看了下windows程式設計 ,做了個比較的垃圾的小玩意!代碼:#include <iostream>#include <stdio.h>#include <string>#include <windows.h>#include <tlhelp32.h>using namespace std;string str_exp="explorer.exe";string str_qq="QQ.exe";bool

HDU OJ 1350 Taxi Cab Scheme 【二分圖匹配之最小路徑覆蓋】

原題串連:點擊開啟連結題意:……思路:二分匹配的最小路徑覆蓋;在一個有向圖無環圖裡面,尋找最少的路徑去覆蓋所有的節點,每個節點僅能覆蓋一次。       

總頁數: 61357 1 .... 19223 19224 19225 19226 19227 .... 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.