首页 数据库 mysql教程 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>
登录后复制


第二种方法是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>
登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

500internal server error什么意思 500internal server error什么意思 Feb 21, 2023 pm 03:39 PM

500internal server error的意思是HTTP 500内部服务器错误,表示服务器遇到意外情况,导致其无法履行请求,但它无法说明具体错误或发生错误的根本原因;当发生错误时,访问的网站会显示发生错误。

以太坊 (ETH) 价格恢复至 2,320 美元上方,但仍难以加快步伐 以太坊 (ETH) 价格恢复至 2,320 美元上方,但仍难以加快步伐 Sep 10, 2024 pm 03:20 PM

以太坊价格在 2,250 美元上方开始复苏浪潮。 ETH 能够清除 2,280 美元的阻力区域,进入积极区域,但与比特币相比,势头较弱。

敦促英国人在家检查是否有稀有的 50 便士硬币,可能价值 2,500 英镑 敦促英国人在家检查是否有稀有的 50 便士硬币,可能价值 2,500 英镑 Oct 28, 2024 pm 04:20 PM

据一位专家称,这枚 2011 年的作品是为庆祝 2012 年伦敦奥运会而铸造的

比特币 (BTC) 价格分析:BTC 开始大幅上涨,目标为 60,000 美元大关 比特币 (BTC) 价格分析:BTC 开始大幅上涨,目标为 60,000 美元大关 Sep 12, 2024 pm 06:35 PM

比特币已经开始大幅上涨,突破了 57,500 美元的阻力位,现在显示出可能达到 60,000 美元大关的良好迹象。

英国人敦促检查他们的 50 便士硬币,因为稀有版本可能价值 2500 英镑 英国人敦促检查他们的 50 便士硬币,因为稀有版本可能价值 2500 英镑 Oct 28, 2024 pm 04:24 PM

2011 年硬币是为庆祝 2012 年伦敦奥运会而铸造的,被称为“水上运动”设计,并带有游泳运动员的形象

BetMGM 密歇根州奖金代码 MLIVEMGM:获得 1,500 美元的首次投注优惠 BetMGM 密歇根州奖金代码 MLIVEMGM:获得 1,500 美元的首次投注优惠 Nov 18, 2024 am 03:36 AM

新玩家可以使用促销代码 MLIVEMGM 领取 BetMGM 欢迎奖金,并获得高达 1,500 美元的奖金投注返还。

Solana 价格可能达到 4,500 美元 Solana 价格可能达到 4,500 美元 Oct 22, 2024 am 06:42 AM

SOL 在其周线图上形成了杯柄形态,这表明 Solana 价格可能飙升 2,600%,升至 4,500 美元。

Rexas Finance (RXS):Solana (SOL) 和以太坊 (ETH) 的潜在竞争对手 Rexas Finance (RXS):Solana (SOL) 和以太坊 (ETH) 的潜在竞争对手 Nov 04, 2024 pm 06:44 PM

在这场永无休止的区块链技术竞赛中,有两项技术脱颖而出并吸引了投资者的注意:Solana (SOL) 和以太坊 (ETH)。

See all articles