題意:1、超級撲克,每種花色有無數張牌,但是,這些牌都是合數;比如黑桃:4,6,8,9,10,,,,
2、現在拿走了一些牌;
3、從每種花色裡面抽取一張牌,和為 n ,有多少種方案;
4、現在 和 n 是乙個區間,a到b;
分析:
四種花色,每種取一張,有多少種方案?
和 為 n ,即 將4個多項式乘起來,指數為 n ,就得到了和為 n 的一種方案,那麼方案種數就是他的係數;
將這些多項式相乘使用fft
模板是lrj大神的;哈哈;
1 #include 2 #include 3 #include 4 #include 5 #include 6view code7using
namespace
std;89
const
long
double pi = acos(0.0)*2.0
;10 typedef complexcd;
1112
13//
cooley-tukey的fft演算法,迭代實現。inverse = false時計算逆fft
14 inline void fft(vector&a, bool
inverse)
2324
double pi = inverse ? -pi : pi;
25for(int step = 1; step < n; step <<= 1
) 41}42
}4344if
(inverse)
45for(int i = 0; i < n; i++) a[i] /=n;46}
4748 inline vector operator * (const vector& v1,const vector&v2)
6364
65const
int maxn = 50000 + 10;66
intcomposite[maxn];
6768
void sieve(int
n) 76}77
78const
char* suites = "
shcd";
79int idx(char
suit)
8283
int lost[4][maxn]; //
4張花色是否丟了
84int
main()
9596 vector ans(1,1
),poly;
97for(int s=0; s<4; s++)
105for(int i=a; i<=b; i++)
106 printf("
%0.lf\n
",fabs(ans[i]));
107 puts(""
);108
}109
110return0;
111 }
UVA 木塊問題 101
uva 木塊問題 101,好開森好開森。雖然花了很長時間,不過能一次就ac也是蠻開心的,用c 寫效率就是不錯 疊木塊其實是乙個二維空間,每個木塊都有縱橫座標 include include includeusing namespace std block用於記錄木塊所在位置,x是位於哪一疊木塊,y是...
UVA 非常可樂
include include include include include using namespace std struct node int vis 205 205 注意vis陣列用於 int s,n,m int cup left 3 記錄三個杯子中每個杯子的剩餘狀態 int bfs fo...
UVa百題總結
總算刷夠 演算法競賽入門經典 100題了,就像教主所說,有了練acm的誠意,受自身水平和眼界所限,這總結難免會有一些個人色彩和不正確的地方,大牛勿噴。另外我的文筆可能極其拙劣,將就著看吧。按照教主的進度安排,最理想的情況是寒假學完前八章,下學期開始學動態規劃 數學和圖論的基礎,為暑假集訓打下基礎。暑...