Heim Datenbank MySQL-Tutorial Topcoder srm 653 div.2 500

Topcoder srm 653 div.2 500

Jun 07, 2016 pm 03:44 PM
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>
Nach dem Login kopieren


第二种方法是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>
Nach dem Login kopieren
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1663
14
PHP-Tutorial
1264
29
C#-Tutorial
1237
24
Was bedeutet 500interner Serverfehler? Was bedeutet 500interner Serverfehler? Feb 21, 2023 pm 03:39 PM

500interner Serverfehler bedeutet HTTP 500 interner Serverfehler, was bedeutet, dass der Server auf eine unerwartete Situation gestoßen ist, die dazu geführt hat, dass er die Anforderung nicht erfüllen konnte, aber den spezifischen Fehler oder die Grundursache des Fehlers nicht erklären kann; Auf der besuchten Website wird ein Fehler angezeigt.

Die Briten werden dringend gebeten, zu Hause nach einer seltenen 50-Pence-Münze zu suchen, die einen Wert von 2.500 £ haben könnte Die Briten werden dringend gebeten, zu Hause nach einer seltenen 50-Pence-Münze zu suchen, die einen Wert von 2.500 £ haben könnte Oct 28, 2024 pm 04:20 PM

Einem Experten zufolge wurde das Stück aus dem Jahr 2011 zur Feier der Olympischen Spiele 2012 in London geprägt

Der Preis von Ethereum (ETH) erholt sich über 2.320 US-Dollar, hat aber Schwierigkeiten, an Tempo zu gewinnen Der Preis von Ethereum (ETH) erholt sich über 2.320 US-Dollar, hat aber Schwierigkeiten, an Tempo zu gewinnen Sep 10, 2024 pm 03:20 PM

Der Ethereum-Preis startete eine Erholungswelle oberhalb der 2.250-Dollar-Marke. ETH konnte die Widerstandszone von 2.280 $ überwinden und sich in eine positive Zone bewegen, aber die Dynamik war im Vergleich zu Bitcoin schwach.

BetMGM Michigan-Bonuscode MLIVEMGM: Holen Sie sich ein Angebot für die erste Wette im Wert von 1.500 $ BetMGM Michigan-Bonuscode MLIVEMGM: Holen Sie sich ein Angebot für die erste Wette im Wert von 1.500 $ Nov 18, 2024 am 03:36 AM

Neue Spieler können den BetMGM-Willkommensbonus beanspruchen und bis zu 1.500 $ an Bonuswetten zurückgezahlt bekommen, indem sie den Aktionscode MLIVEMGM verwenden.

Bitcoin (BTC)-Preisanalyse: BTC startet deutliche Aufwärtsbewegung und strebt die 60.000-Dollar-Marke an Bitcoin (BTC)-Preisanalyse: BTC startet deutliche Aufwärtsbewegung und strebt die 60.000-Dollar-Marke an Sep 12, 2024 pm 06:35 PM

Bitcoin hat eine deutliche Aufwärtsbewegung eingeleitet, die Widerstandsmarke von 57.500 US-Dollar überschritten und zeigt nun vielversprechende Anzeichen für ein mögliches Erreichen der 60.000-Dollar-Marke.

Die Briten werden dringend gebeten, ihre 50-Pence-Münzen zu überprüfen, da die seltene Version einen riesigen Wert von 2,5.000 £ haben könnte Die Briten werden dringend gebeten, ihre 50-Pence-Münzen zu überprüfen, da die seltene Version einen riesigen Wert von 2,5.000 £ haben könnte Oct 28, 2024 pm 04:24 PM

Die Münze aus dem Jahr 2011, die anlässlich der Olympischen Spiele 2012 in London geprägt wurde, ist als „Wassersport“-Design bekannt und zeigt das Bild eines Schwimmers

Rexas Finance (RXS): Ein potenzieller Konkurrent von Solana (SOL) und Ethereum (ETH) Rexas Finance (RXS): Ein potenzieller Konkurrent von Solana (SOL) und Ethereum (ETH) Nov 04, 2024 pm 06:44 PM

In diesem nie endenden Wettlauf der Blockchain-Technologie haben es zwei geschafft, herauszustechen und die Aufmerksamkeit der Anleger zu erregen – Solana (SOL) und Ethereum (ETH).

Der Solana-Preis kann 4.500 US-Dollar erreichen Der Solana-Preis kann 4.500 US-Dollar erreichen Oct 22, 2024 am 06:42 AM

SOL hat auf seinem Wochenchart ein Cup-and-Henkel-Muster gebildet, das zeigt, dass der Solana-Preis um 2.600 % steigen und auf 4.500 $ steigen kann.

See all articles