zoukankan      html  css  js  c++  java
  • The 2015 "Orz Panda" Cup Programming Contest

    The 2015 "Orz Panda" Cup Programming Contest

    集训后的第一次比较正式的组队赛,这次比之前的pk赛和省赛要好多了,之前真是一片狼藉,惨不忍睹啊。。

    比赛一开始,onlyAzha就发现了K题这个签到题,马上上去敲了,很快1A。接着是我的E题,矩阵快速幂,uva的原题,也很快就过了。看了一下榜,我们队两题遥遥领先,其他队还没出题。接着是onehxrn的H题,以为是个水题,交上去WA,然后我去调了一下也没过,于是我们决定先过J题,J题是判断点在三角形里,按onehxrn的思路叉积判断一下就行了,交上去WA了一次,队友帮调了一下,很快过了,这时我们队已经三题了,其他队最多才1题。然后是onehxrn在调H题,我和onlyAzha看别的题,我先看的B题,想了一下,没找到规律。onehxrn发现H题意看错了,onlyAzha也发现了F水题,很快我们过了F,刷了一下榜,我们队4题,还是rank1,但是很多队都过了G,于是我们决定开G题,开G题之前效率很高,每个人一题,很快就过了四题,到了G题真是一片混乱啊。。反而是开G题的过程中onehxrn居然过了H。。然后三个人一起写G题,G题是个dp,三个人调两份代码,WA了很多次之后给onlyAzha的代码随便加了排序,交上去居然过了。。。剩下一个 小时,三个人调C题调到比赛结束。结果还不错,6题rank1,比上一级的队多一题。

    K题:签到题,很多人直接o(n^2)过,其实记录下次数可以o(n)。

    #include<bits/stdc++.h>
    
    using namespace std;
    
    const int maxn=1000100;
    
    char s[maxn];
    int len;
    int cnt[maxn];
    
    int main()
    {
        while(~scanf("%s",s)){
            len=strlen(s);
            memset(cnt,0,sizeof(cnt));
            for(int i=0;i<len;i++) cnt[s[i]]++;
            int snd=-1,pos1=0;;
            for(int i=0;i<len;i++){
                cnt[s[i]]--;
                for(int j='9';j>s[i];j--){
                    if(cnt[j]){
                        //cout<<i<<" "<<j-'0'<<endl;
                        pos1=i;
                        snd=j;break;
                    }
                }
                if(~snd) break;
            }
            if(snd!=-1){
                int pos2=0;
                for(int i=len-1;i>=0;i--){
                    if(s[i]==snd){
                        pos2=i;break;
                    }
                }
                swap(s[pos1],s[pos2]);
            }
            printf("%s
    ",s);
        }
        return 0;
    }
    View Code

    E题:先找递推式,然后矩阵快速幂。

    #include<bits/stdc++.h>
    #define REP(i,a,b) for(int i=a;i<=b;i++)
    #define MS0(a) memset(a,0,sizeof(a))
     
    using namespace std;
     
    typedef long long ll;
    const int maxn=1000100;
    const ll mod=1000000007;
     
    struct Matrix
    {
        ll a[2][2];
        friend Matrix operator*(Matrix A,Matrix B)
        {
            Matrix C={0,0,0,0};
            REP(i,0,1){
                REP(j,0,1){
                    REP(k,0,1)
                        C.a[i][j]=(C.a[i][j]%mod+(A.a[i][k]*B.a[k][j])%mod+mod)%mod;
                }
            }
            return C;
        }
    };
    ll p,q;
    ll n;
     
    Matrix qpow(Matrix n,ll k)
    {
        Matrix res={1,0,0,1};
        while(k){
            if(k&1) res=res*n;
            n=n*n;
            k>>=1;
        }
        return res;
    }
     
    int main()
    {
        //freopen("in.txt","r",stdin);
        while(cin>>p>>q>>n){
            if(n==0) cout<<2<<endl;
            else{
                Matrix tmp={p,-q,1,0};
                tmp=qpow(tmp,n-1);
                cout<<((tmp.a[0][0]*p+mod)%mod+(tmp.a[0][1]*2)%mod)%mod<<endl;
            }
        }
        return 0;
    }
    View Code

     J题:简单的叉积,就不写了。

    F题:二分水题,也不写了。

    G,H,A,C这些必须补。

    今天先补A,线段树离线操作。

    没有AC不了的题,只有不努力的ACMER!
  • 相关阅读:
    warshall、
    简单的php单例再次理解
    windows操作系统,在phpstudy集成环境,安装redis扩展,并启用redis服务和客户端
    php单例模式相关知识
    jui结合ajax非表单提交刷新页面
    php截取想要的字符串
    xmlToArray和arrayToXml
    jquery时间戳转换成格式化时间
    腾讯地图调用获取经度纬度代码
    随机生成自定义位数英文字符串
  • 原文地址:https://www.cnblogs.com/--560/p/4759211.html
Copyright © 2011-2022 走看看