Topcoder srm 653 div.2 500
题意: 两个人玩石头剪刀布,你知道对方每次要出什么,有n(1~2000)局, 每局如果你赢了得1分,否则不得分,问你拿到某个分 score (0~2000)的方案数有多少。 0:石头, 1:布, 2:剪刀. 思路: 一开始想到的是组合数学的方法.每一局得分的情况只有一个,但是不得分的
题意:
两个人玩石头剪刀布,你知道对方每次要出什么,有n(1~2000)局, 每局如果你赢了得1分,否则不得分,问你拿到某个分值score(0~2000)的方案数有多少。0:石头, 1:布, 2:剪刀.
思路:
一开始想到的是组合数学的方法.每一局得分的情况只有一个,但是不得分的情况有两个,所以是任选score局*2...
但是要mod(1e9+7), 除数用mod, 要用逆元..
AC.
#line 7 "RockPaperScissorsMagicEasy.cpp" #include <cstdlib> #include <cctype> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <string> #include <iostream> #include <sstream> #include <map> #include <set> #include <queue> #include <stack> #include <fstream> #include <numeric> #include <iomanip> #include <bitset> #include <list> #include <stdexcept> #include <functional> #include <utility> #include <ctime> using namespace std; #define PB push_back #define MP make_pair #define REP(i,n) for(i=0;i=(l);--i) typedef vector<int> VI; typedef vector<string> VS; typedef vector<double> VD; typedef int LL; typedef pair<int> PII; typedef long long ll; class RockPaperScissorsMagicEasy { public: ll fact[2005]; const int mod = 1e9+7; RockPaperScissorsMagicEasy() { fact[0]=1; for(int i=1;i e2+e3) return 0; return a1*mod_inverse(a2*a3%p,p)%p; } ll extgcd(ll a,ll b,ll &x,ll &y) { ll d=a; if(b) { d=extgcd(b,a%b,y,x); y-=(a/b)*x; } else { x=1;y=0; } return d; } ll mod_inverse(ll a,ll m) { ll x,y; extgcd(a,m,x,y); return (m+x%m)%m; } ll mod_pow(ll a,ll n) { ll ans=1,b=a; while(n) { if(n&1) ans=ans*b%mod; n>>=1; b=b*b%mod; } return ans; } int count(vector <int> card, int score) { int t = card.size(); //printf("%d\n", t); if(score > t) return 0; if(score == t) return 1; if(score == 0) { return t*2; } int ans=modc(t,score,mod)*mod_pow(2,t-score)%mod; return ans; }</int></int></double></string></int></ctime></utility></functional></stdexcept></list></bitset></iomanip></numeric></fstream></stack></queue></set></map></sstream></iostream></string></vector></algorithm></cmath></cstdio></cstring></cctype></cstdlib>
第二种方法是DP.
dp[i][j]: 表示第i局中有j局得分的方案数. dp[i][j] = (dp[i-1][j] + dp[i-1][j-1]) % mod
AC.
#line 7 "RockPaperScissorsMagicEasy.cpp" #include <cstdlib> #include <cctype> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <string> #include <iostream> #include <sstream> #include <map> #include <set> #include <queue> #include <stack> #include <fstream> #include <numeric> #include <iomanip> #include <bitset> #include <list> #include <stdexcept> #include <functional> #include <utility> #include <ctime> using namespace std; #define PB push_back #define MP make_pair #define REP(i,n) for(i=0;i=(l);--i) typedef vector<int> VI; typedef vector<string> VS; typedef vector<double> VD; typedef long long ll; typedef pair<int> PII; class RockPaperScissorsMagicEasy { public: ll dp[2005][2005]; ll cal(ll a, ll n, ll mod) { ll s = 1; while(n > 0) { if(n&1) s = s*a%mod; a = a*a%mod; n >>= 1; } return s; } int count(vector <int> card, int score) { int len = card.size(); ll mod = 1e9+7; if(len <br> <br> </int></int></double></string></int></ctime></utility></functional></stdexcept></list></bitset></iomanip></numeric></fstream></stack></queue></set></map></sstream></iostream></string></vector></algorithm></cmath></cstdio></cstring></cctype></cstdlib>

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Ralat pelayan dalaman 500 bermaksud ralat pelayan dalaman HTTP 500, yang bermaksud bahawa pelayan menghadapi situasi yang tidak dijangka yang menyebabkan ia tidak dapat memenuhi permintaan, tetapi ia tidak dapat menjelaskan ralat khusus atau punca ralat apabila ralat berlaku; laman web yang dilawati akan memaparkan ralat .

Harga Ethereum memulakan gelombang pemulihan di atas paras $2,250. ETH dapat mengosongkan zon rintangan $2,280 untuk bergerak ke zon positif, tetapi momentum adalah lemah berbanding Bitcoin.

Bitcoin telah memulakan pergerakan menaik yang ketara, melepasi paras rintangan $57,500 dan kini menunjukkan tanda-tanda menjanjikan yang berpotensi mencapai paras $60,000.

Menurut seorang pakar, karya 2011 itu dicetak untuk meraikan Sukan Olimpik London pada 2012.

Pemain baharu boleh menuntut bonus alu-aluan BetMGM dan mendapat sehingga $1,500 dibayar balik dalam pertaruhan bonus dengan menggunakan kod promo MLIVEMGM.

SOL telah membentuk corak cawan dan pemegang pada carta mingguannya, yang menunjukkan bahawa harga Solana boleh melonjak sebanyak 2,600% dan meningkat kepada $4,500.

Syiling 2011, yang ditempa sempena sambutan Sukan Olimpik London pada 2012, dikenali sebagai reka bentuk "akuatik" dan menampilkan imej seorang perenang

Dalam perlumbaan teknologi blockchain yang tidak berkesudahan ini, dua telah berjaya menonjol dan menarik perhatian pelabur - Solana (SOL) dan Ethereum (ETH).
