zoukankan      html  css  js  c++  java
  • 通化邀请赛题目重现解题报告

        今天做了一下通化邀请赛的题目重现,有些题都不会呢,想搜一下,感觉都搜不到...

        今天自己做了4题吧..我打代码的速度还是太慢了..

        先是1007的Canon,就是在中国象棋的棋盘里放炮,使得两两都不被吃,最多能放多少个.棋盘上可能原本就放了一些棋子(不是炮的),之前一直敲错,原来理解错了题意,注意是炮不被吃就可以了,原来的棋子是可以吃的.棋盘5*5,很小,搜一下就可以了,每次搜判断可不可以放就很容易过了的~.

        然后是1010Dice.学会写递推就好F(n)=F(n-1)+1/6+5/6*(F(n)) 解一下F(n)=(6^n-1)/5

                                                   H(n)=G(n-1)+1/6+5/6(1+F(n))      H(n)=6*(6^n-1)/5

                                                   G(m)=G(m-1)+G(1)                      G(m)=6m

       解不等式即可,G(m)>H(n)不难,G(m)>F(n)时两边除以6化简一下就会有  m>(6^(n-1)-1)/5+1/6 所以m=(6^(n-1)-1)/5+1

       算的时候要用下5的逆元

      

    #include<iostream>   
    #include<cstdio> 
    #include<algorithm>
    using namespace std;
    
    int b[5][5];
    int dx[4]={-1,1,0,0};  
    int dy[4]={0,0,-1,1};
    int n,m,q;
    int ans;
    
    void dfs(int idx,int tb[5][5],int cur)
    {
        ans=max(cur,ans);
        if(idx==n*m) {return;}
        int x=idx/m,y=idx%m;
        dfs(idx+1,tb,cur);
        if(tb[x][y]!=0){
            return;
        }
        int cb[5][5];memcpy(cb,tb,sizeof(cb));
        int tx=x,ty=y;
        for(int i=0;i<4;i++){
            x=tx;y=ty;
            while(x+dx[i]<n&&y+dy[i]<m&&x+dx[i]>=0&&y+dy[i]>=0){
                x+=dx[i];y+=dy[i];
                if(cb[x][y]>0) {break;}
            }
            while(x+dx[i]<n&&y+dy[i]<m&&x+dx[i]>=0&&y+dy[i]>=0){
                x+=dx[i];y+=dy[i];
                if(cb[x][y]==1) {break;}
                if(cb[x][y]==2) {return;}
            }
        }
        cb[tx][ty]=2;
        dfs(idx+1,cb,cur+1);
    }
    
    
    int main()
    {
        while(cin>>n>>m>>q)
        {
            memset(b,0,sizeof(b));
            int tx,ty;
            for(int i=0;i<q;i++){
                scanf("%d%d",&tx,&ty);
                b[tx][ty]=1;
            }
            ans=-1;
            dfs(0,b,0);
            printf("%d
    ",ans);
        }
        return 0;
    }
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<string>
    #include<cmath>
    #define ll long long
    #define mod 2011
    using namespace std;
    
    ll mod_pow(ll x,ll n,ll mmod=mod)
    {
        ll res=1;
        while(n>0){
            if(n&1) res=res*x%mod;
            x=x*x%mod;
            n>>=1;
        }
        return res;
    }
    
    ll n;
    ll inverse=1609;
    
    int main()
    {
        while(cin>>n&&n)
        {
            ll ans1=((mod_pow(6,n-1)-1)*inverse+1)%mod;
            ll ans2=((mod_pow(6,n)-1)*inverse)%mod;
            cout<<ans1<<" "<<ans2<<endl;
        }
        return 0;
    }
  • 相关阅读:
    POJ 1795 DNA Laboratory
    CodeForces 303B Rectangle Puzzle II
    HDU 2197 本源串
    HDU 5965 扫雷
    POJ 3099 Go Go Gorelians
    CodeForces 762D Maximum path
    CodeForces 731C Socks
    HDU 1231 最大连续子序列
    HDU 5650 so easy
    大话接口隐私与安全 转载
  • 原文地址:https://www.cnblogs.com/chanme/p/3279656.html
Copyright © 2011-2022 走看看