原创 數論常用內容——歐拉函數

今天博主來稍微介紹一點歐拉函數的知識 歐拉函數 在數論中,對正整數n,歐拉函數是小於n的正整數中與n互質的數的數目(記作φ(n),其中φ(1)=1) 注意,歐拉函數是一種積性函數,它並不是完全積性的,它只滿足:對於正整數n的一個

原创 數論常用內容——反素數

提到反素數,大家可能比較陌生,這裏博主我對反素數的瞭解也不是很深刻,希望能借此機會來總結一下並和大家交流 概念 對於任何正整數n,其約數個數爲f(n),如果某個正整數n滿足:對任意正整數i(0 性質 性質1、一個反素數的所有質

原创 UVA 10601 Cubes (Polya定理+Burnside引理)

本題歸根結底就是爲了求等價類的個數,這裏我們需要用到組合數學的知識來解決。 首先介紹一下polya定理和Burnside引理: Burnside定理: 設G={a1,a2,…ag}是目標集[1,n]上的置換羣。每個置換都寫成不相

原创 UVA 11426 GCD - Extreme (II)(歐幾里得定理+歐拉函數)

解這道題,需要以下幾步: 1.建立遞推關係,s(n)=s(n-1)+gcd(1,n)+gcd(2,n)+……+gcd(n-1,n); 2.設f(n)=gcd(1,n)+gcd(2,n)+……+gcd(n-1,n)。 gcd(x,n

原创 UVA 10881 Piotr's Ants

這是一道非常有意思的題目,乍一看題目描述的過程非常的複雜,直接模擬怕是要出梗。 但是,仔細在紙上進行演示和推導後,把兩隻螞蟻的相撞看作是兩隻螞蟻交換穿過對方並且交換編號即可。 不說很難,但是非常有意思,所以在這裏做個記錄 代碼如下

原创 算數基本定理——素因數分解序列生成

純粹的質因數分解生成示例程序,之前某次比賽的時候的代碼,這裏給大家介紹一下算數基本定理吧 算術基本定理:任何一個大於1的自然數 N,如果N不爲質數,那麼N可以唯一分解成有限個質數的乘積 #include<iostream> #i

原创 數論常用內容——階乘

在競賽中,階乘也被經常提及,而且總是不那麼好處理,下面我就給大家介紹一點關於階乘常用的內容 1、階乘近似公式(斯特靈公式) N!=sqrt(2*PI*N)*(N/e)^N 2、求階乘的位數 Digit = (int)(log10(

原创 HDU 2084 數塔(基礎dp)

這題是一個基礎動態規劃,入門題目,思路很簡單,就是從下往上找一條最優路徑即可,轉移公式也很簡單,就是挑最大的情況進行存儲。 這裏博主使用了最基礎的二維數組來處理這題,其實這題還可以用一維滾動數組來優化空間,但是鑑於二維數組比較好理

原创 矩陣快速冪的應用——優化遞推過程

矩陣快速冪可用來優化遞推 矩陣快速冪的實現及一些詳細介紹可以參考我的另一篇文章: 數論常用內容——矩陣快速冪 首先,需要先構造合適的初始狀態(第一個矩陣)然後,利用此矩陣和矩陣乘法的性質,使用快速冪的手段求出之後的狀態 構造矩陣

原创 hihocoder 1066 無間道(基礎並查集)

基礎並查集題目,拿來當做並查集上手不錯 #include<cstdio> #include<iostream> #include<string> #include<map> using namespace std; int par

原创 POJ 3233 Matrix Power Series(矩陣等比數列求和)

題意就是一個等比數列求和的意思,只不過每一項都是矩陣 這裏需要進行一下轉移矩陣的構造,形成一個遞推累加的效果: 設 B = (A,I;0,I) 則B^(k + 1) = (A^(k + 1),I + A + A^2 + A^3 +

原创 數論常用內容——矩陣快速冪

在數論題以及一些非數論題中,經常出現遞推的情況,如果找不到規律,強行迭代遞推的話不是一個明智的選擇,今天我就來給大家介紹一個適用於這種情形的方法——矩陣快速冪 矩陣快速冪是如何優化遞推的呢? 首先,需要先構造合適的初始狀態(第一個

原创 數論常用內容——整除

說到整除,我們應該先來明確一下整除的定義: 若整數a除以非零整數b,商爲整數,且餘數爲零, 我們就說a能被b整除(或說b能整除a),即b∣a,讀作“b整除a”或“a能被b整除”。a叫做b的倍數,b叫做a的約數(或因數)。 然後

原创 C++編程必備神器STL——容器篇

STL是C++內置的標準模板庫,其中內置了很多我們常用的數據結構和算法,如果能在日常編程和競賽編程中合理使用,將會大大提升我們的編程效率,今天博主就來簡單介紹一下我們最常用的STL容器及其內部包含的常用方法 stl容器共通操作 C

原创 HDU 2037 今年暑假不AC (結構體排序示例題)

本題用到的一個很重要的知識就是結構體排序,對結構體進行排序在競賽中的使用範圍非常的廣泛,希望大家可以熟練掌握這項技巧 結構體排序有兩種寫法,詳情請看代碼 #include<stdio.h> #include<algorithm>