今天看了有關組合數學的一些內容。
首先,排列組合的**為:
ll c(ll n, ll m)
ll a(ll n, ll m)
一道組合數學
+位運算的題,
[hdoj4810]wall painting
題目大意:有一位畫家,有
n種顏料,給出
n種顏料的值。然後在1到
n天中,他每天都會選擇相應天數的顏料數進行混合,形成新的一種顏料。(所選的顏料的值全部取異或後得到的數即為新顏料的值)然後對應輸出每一天有可能合成顏料值的總和。
精簡題意:有
n個數,從中選
k個數,共有c(
n,k)種選擇,將每種選擇出的
k個數異或得到的數相加輸出。
思路;首先0和
1異或是不會影響結果的,只有1和
1異或且
1的個數是奇數的時候才會對結果產生影響,所以將每個數都轉換成二進位制,統計每一位上的
1的個數,再利用組合數學解決。
**如下:
#include
#include
#include
#include
#include
#include
#include
#include
#define mod 1000003//
題目要求
using namespace std;
int bit[33];
long long c[1010][1010];
void init()//
(數字金字塔)
for(inti=2;i<1010;i++)}}
int main()
num=max(num,cnt);//這n
個數的最大位數
}for(i=1;i<=n;i++)}}
}printf(i==n?"%d\n":"%d",ans);//[?:句式]
}}return0;
}今天一直在搜知識點,位運算中的挺多寫法之前沒怎麼見過,需要繼續熟悉。看的題也挺多水題沒必要整理,所以今天就寫這乙個題解吧。以上~
8 1 集訓日記
今天看了有關容斥原理的幾篇部落格。容斥原理的基本思想是 先不考慮重疊的情況,把所有物件的數目求出,然後再把計數時重複計算的數目排斥出去,使得計算的結果既無遺漏又無重複。首先是乙個經典的互素問題 hdoj 4135 co prime 題目大意是 給定a,b,n,求區間 a,b 中與n互素的數的個數。思...
8 9 集訓日記
今天才知道好像要發好幾十篇部落格之後才不用審核 今天把數論的課件看了看,算是再複習一遍,掌握的更好吧。都是之前學過的內容,只是有些記不清的,也沒什麼好寫的,這裡整理一下位運算的課件吧。位運算 一 位運算子及規則1 按位與 全真則真 一假則假2 按位或 一真則真3 按位異或 同則假 異則真4 左移5 ...
8 10 集訓日記
今天上午看了有關單調佇列的課件,明天一起整理。下午做了練習賽,在這兒寫一下ac的三道題。b題,很水的一道題,求數字金字塔中經過數字的最大和。ac 及註解如下 include using namespace std int a 351 351 int main for int i n 1 i 1 i ...