Uva 12298 超級撲克2

2022-04-01 07:02:01 字數 1556 閱讀 8586

題意: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 6

7using

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 }

view code

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的誠意,受自身水平和眼界所限,這總結難免會有一些個人色彩和不正確的地方,大牛勿噴。另外我的文筆可能極其拙劣,將就著看吧。按照教主的進度安排,最理想的情況是寒假學完前八章,下學期開始學動態規劃 數學和圖論的基礎,為暑假集訓打下基礎。暑...