本來準備來數學題專題訓練的,不過這次的題目都沒太大思維量,沒起到很好的效果。。。
在rqnoj的數論/數值 標籤裡看的題。。。基本成了高精度專題練習了。。。
題目一:wikioi1252 fib詞鏈
這個嘛。。。假設g[n]為fib[n]包含的原單詞數。。。其實g[n]就等於g[n-1]+g[n-2]+拼接後增加的部分。。。
然後就是怎麼算這個增加部分了。。。假設要查詢的串長度為len,其實只需要知道f[n-1]的後len-1個與f[n-2]的前len-1個字母。。。。所以每次都記下f[x]的前後一部分就好了。。。這個字串處理還是比較麻煩。。。可以看下**
#include#include#include#include#include#includeusing namespace std;
int p=10000;
struct bign
bign operator=(int x)
if(len==0)len=1;
return *this;
} bign operator +(int x) };
struct e
}f[200+10];
int len;
char s[30+10];
int n;
char temp[60+10];
int getnum(int x)
int main()
cout<
題目三:rqnoj 難題
這題還真是難(shui)啊。。。。就是裸的可重組合:公式c(n+m-1,n-1)...
然後用邊乘邊除的高精度從c(n+m-1,0)遞推過來 (但實際資料範圍比較小。。。不需要高精)
有個讓我比較不解的地方就是算c(n+m-1,n-1)會掛一組。。。要算c(n+m-1,m)才對。。。明明都是一樣的啊。。。有沒有神牛給我解釋下啊
#include#include#include#include#include#includeusing namespace std;
int n,m;
int p=1000;
struct bign
bign operator =(int x)
if(len==0)len=1;
return *this;
} bign operator *(int x)
}while(c.len&&c.num[c.len-1]==0)c.len--;
if(c.len==0)c.len=1;
return c;
} void print() };
void c(int d,int c)
x.print();
}int main()
題目四:rqnoj 愚蠢的組合數
就是判斷組合數的奇偶性。。。學到了乙個很重要的性質:當n&k==k時 c(n,k)為奇數,否則為偶數。。。
#include#include#include#include#include#includeusing namespace std;
int t,n,k;
int main()
return 0;
}
數學專題訓練3
這次是概率專練 選的題都比較基礎。因為我對概率的感覺很不到位啊啊啊啊 題目一 wikioi計算概率 這個就是古典概型嘛。先列舉選的第一根。然後再求出第選二根後和小於等於l的方案個數。然後答案很自然就是 這些方案個數的和 n n 1 了。考慮到n稍大。求方案數不能直接暴力。可以選擇二分來求 要注意選的...
數學專題訓練4
這次是矩陣與行列式 題目一 bzoj1013 我看到這題時反正沒什麼感覺。其實對於球來說。其上每乙個點到球心的距離都是相等的。於是就可以根據這個來列方程 設球心為 x1,x2,對於點 a1,a2,b1,b2,有 ai xi 2 bi xi 2 看起來很麻煩。因為方程有二次項 但其實這個式子是可以開啟...
10 3其他數學專題
10.3.1遞推 漢諾塔問題。分析 當n稍微大一點時,手工移動就開始變得困難起來,下面直接給出遞迴解法 首先,把前n 1個圓盤放到c軸 接下來把n號圓盤放到c軸 接下來把n號圓盤放到b軸 最後,再把前n 1個盤子放到b軸。斐波那契數列。走樓梯問題 f n f n 1 f n 2 養兔子問題 f n ...