zoukankan      html  css  js  c++  java
  • POJ 1945 暴搜+打表 (Or 暴搜+判重)

    思路:

    1. 呃呃 暴搜+打表
      暴搜的程序::稳稳的TLE+MLE (但是我们可以用来打表)
      然后我们就可以打表过了 hiahiahia

    2. 可以证明最小的那个数不会超过200(怎么证明的我也不知道),然后就直接判重就好了
      打表:
      打表的程序:

    // by SiriusRen
    #include <queue>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    queue<pair<int,int> >q;
    int mod=100000007,vis[100000070],cnt=0,v[20005];
    int gcd(int x,int y){return y?gcd(y,x%y):x;}
    int main()
    {
        freopen("data.txt","w",stdout);
        vis[10008]=1;
        q.push(make_pair(1,1));
        while(!q.empty())
        {
            pair<int,int>t=q.front();q.pop();
            int rec=vis[(t.first*10007+t.second)%mod];
            if(!v[t.first])v[t.first]=rec,cnt++;
            if(!v[t.second])v[t.second]=rec,cnt++;
            if(cnt==20000)goto e;
            //first+second  &  first
            if(t.first+t.second<=20000&&!vis[((t.first+t.second)*10007+t.first)%mod])
            {
                vis[((t.first+t.second)*10007+t.first)%mod]=rec+1;
                q.push(make_pair(t.first+t.second,t.first));
            }
    
            //first+second  &   second
            if(t.first+t.second<=20000&&!vis[((t.first+t.second)*10007+t.second)%mod])
            {
                vis[((t.first+t.second)*10007+t.second)%mod]=rec+1;
                q.push(make_pair(t.first+t.second,t.second));
            }
    
            //fisrt-second  &  first
            if(t.first-t.second>t.first&&!vis[((t.first-t.second)*10007+t.first)%mod])
            {
                vis[((t.first-t.second)*10007+t.first)%mod]=rec+1;
                q.push(make_pair(t.first-t.second,t.first));
            }
            if(t.first-t.second<t.first&&t.first-t.second>0&&!vis[(t.first*10007+t.first-t.second)%mod])
            {
                vis[(t.first*10007+t.first-t.second)%mod]=rec+1;
                q.push(make_pair(t.first,t.first-t.second));
            }
    
            //first-second  &  second
            if(t.first-t.second>t.second&&!vis[((t.first-t.second)*10007+t.second)%mod])
            {
                vis[((t.first-t.second)*10007+t.second)%mod]=rec+1;
                q.push(make_pair(t.first-t.second,t.second));
            }
            if(t.first-t.second<t.second&&t.first-t.second>0&&!vis[(t.second*10007+t.first-t.second)%mod])
            {
                vis[(t.second*10007+t.first-t.second)%mod]=rec+1;
                q.push(make_pair(t.second,t.first-t.second));
            }
    
    
            //first+first  &  first
            if((t.first*2)<=20000&&!vis[(t.first*2*10007+t.first)%mod])
            {
                vis[(t.first*2*10007+t.first)%mod]=rec+1;
                q.push(make_pair(t.first+t.first,t.first));
            }
    
            //first+first  &  second
            if((t.first*2)<=20000&&!vis[(t.first*2*10007+t.second)%mod])
            {
                vis[(t.first*2*10007+t.second)%mod]=rec+1;
                q.push(make_pair(t.first+t.first,t.second));
            }
    
            //second+second  &  first
            if((t.second*2)<=20000&&t.second*2>=t.first&&!vis[(t.second*2*10007+t.first)%mod])
            {
                vis[(t.second*2*10007+t.first)%mod]=rec+1;
                q.push(make_pair(t.second<<1,t.first));
            }
            if((t.second*2)<=20000&&t.second*2<t.first&&!vis[(t.first*10007+t.second*2)%mod])
            {
                vis[(t.first*10007+t.second*2)%mod]=rec+1;
                q.push(make_pair(t.first,t.second*2));
            }
        }
        e:for(int i=0;i<=20000;i++)
        {
            printf("%c",v[i]+'A');
        }
    }

    大概十几秒打完了表。

    // by SiriusRen
    #include <cstdio>
    int p;
    char ans[]={"ABCDDEEFEFFGFGGGFGGHGHHHGHHHHIHHGHHIHIIIHIIIIIIIHIIIIJIJIJJJIJIIHIIJIJJJIJJJJJJJIJJJJJJKJKJKJJJJIJJJJKJKJKKKJKKKJKKKKKKKJKKKJKJJIJJKJKKKJKKKKKKKJKKKKKKLKKKKKKKKJKKKKKKLKLKLKLLLKLLLKLLLKLKLKKKKJKKKKLKLKLLLKLLLKLLLLLLLKLLLLLLLKLLLLLLLLLLLLLLLKLLLLLLLKLLLKLKKJKKLKLLLKLLMLMLLKLLMLMLLLLLLLLLLKLLLLLLMLLLMLMMMLMLMLMLMLMLLLLLLKLLLLLLMLMLMLMMMLMMMLMMMLMMMMMMMLMMMMMMMLMMMMMMMLMMMLMMMLMLMLLLLKLLLLMLMLMMMLMMMLMMMMMMMLMMMMMMMLMMMMMMMMMMMMMMMLMMMMMMMMMMMMMMMLMMMMMMMMMMMMNMNMMMNMNMMMMMMMMMMLMMMMMMMMMMNMNMMLMMNMNMMLMMMLMLLKLLMLMMMLMMNMNMMLMMNMNNMMNNNMNMMLMMNMNNNMMNNMNMNMMMNMNMMMNMMMMMMLMMMMMMNMMMNMNNNMNMNMNNNMNNNNNNNMNNNMNNNMNNNMNNNMNNNMNMNMNMMMMMMLMMMMMMNMNMNMNNNMNNNMNNNMNNNNNNNMNNNNNNNMNNNNNNNMNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNMNNNNNNNMNNNNNNNMNNNMNNNMNMNMMMMLMMMMNMNMNNNMNNNMNNNNNNNMNNNNNNNMNNNNNNNNNNONNNNMNNNNONNNNNNNNNNMNNNNNNNNNNNNNNONNNONONNNONNNNNNMNNNNNNONNNONONNNONONONNNNNNNNNNMNNNNNNNNNNONONONONONONONOOONOOONONONOOONOOONONONNNONONNNNNNNNNNMNNNNNNNNNNONONNNNNONOOONOOONONNMNNONOOONOOONONNMNNONONNMNNNMNMMLMMNMNNNMNNONONNMNNONOOONOOONONNMNNONOOONOOOOONNNNOOOOONNOOONONNMNNONOOONNOOOOOONNNOOOOONOOONOOONONONOOONOOONONONOOONONNNONNNNNNMNNNNNNONNNONOOONONONOOONOOOOOOONOOONOOONOOOOOOONOOOOOOOOOOOOOOONOOOOOOONOOOOOOONOOOOOOONOOOOOOONOOOOOOONOOONOOONOOONONONONNNNNNMNNNNNNONONONOOONOOONOOONOOOOOOONOOOOOOONOOOOOOONOOOOOOOOOOOOOOONOOOOOOOOOOOOOOONOOOOOOOOOOOOOOPNOOOOPOPOOOOOPOPOOOOOOOOOOOOOOOONOOOOOOOOOOOOOOOOOOPOPOOOOOOOOOONOOOOOOOOOOPOPOOOOOOOOOOOOOOOOOONOOOOOOOOOOOOOOONOOOOPOOOPOPOPOONOOPOOOONOOOOPOONOOONOOONONONNNNMNNNNONONOOONOOONOOPOOOONOOOOPOONOOPOPOOOPOPOOOONOOOOPOOOOOOOOOONOOOOOOPOOOPOOOOOOOPOPPOOOOPOOOONOOOOPOPOOPPOPOOOOOOOPOOOOOOOOOONOOOOOOOOOOPOOOPOOOOOPOPOPOPOPPPOPOPOOPPOPPPOPOPOOPPOPOOOPOOOOOONOOOOOOPOOOPOPPOOPOPOPPPOPPOOPOPOPPPOPPPOPPPOPOPOPOPOPOOOOOOOOOONOOOOOOOOOOPOPOPOPOPOPPPOPPPOPPPOPPPOPPPOPPPOPPPOPPPPPPPOPPPPPPPOPPPOPPPOPPPPPPPOPPPPPPPOPPPOPPPOPOPOPPPOPPPOPOPOOOPOPOOOOOOOOOONOOOOOOOOOOPOPOOOPOPOPPPOPPPOPOPOOOPOPPPOPPPPPPPOOPPPPPPOPPPOPOONOOPOPPPOPPPPPPOOPPPPPPPOPPPOPOONOOPOPPPOPPPOPOONOOPOPOONOOONONNMNNONOOONOOPOPOONOOPOPPPOPPPOPOONOOPOPPPOPPPPPPOOPPPPPPPOPPPOPOONOOPOPPPOPPPPPPPOOPPPPPPPPPPOPOPOOOPPPPPPPPPPPOOOPPPPPPOOPPPOPOONOOPOPPPOOPPPPPPOOOPPPPPPPPPPPPPOPOPOPPPPPPPPPPPOPPPPPPPOPPPPPPPOPPPOPPPOPPPPPPPOPPPPPPPOPPPOPPPOPPPPPPPOPPPOPOPOPPPOPOOOPOOOOOONOOOOOOPOOOPOPPPOPOPOPPPOPPPPQPPOPPPOPPPOPPPPPPPOPPPPQPPPPPPPPPPOPPPPPPPOPPPPPPPOPPPPPPPPPPPPPPPOPPPPPPPPPPQPPPPPPPPPPPPPPPPPPPPOPPPPPPPPPPPPPPPOPPPPPPPPPPPPPPQOPPPPPPQPPPPPPPPOPPPPPPPPPPPPPPPOPPPPPPPPPPPPPPPOPPPPPPPOPPPPPPPOPPQPPPPOPPPOPPPOPPPOPOPOPOOOOOONOOOOOOPOPOPOPPPOPPPOPPPOPPPPPPPOPPPPPPPOPPPPPPPOPPPPPPPPPPPPQPPOPPQPPPQPPPPPPPPOPPPPPPPPPPQPPPQOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPOPPPPPPPPPPPPPPPPPPQPPPPPPPPPPPPOPPPPPPQPPPQPQPPPPPPPQPPPQPPPPQQOQPPPQPQPPQQPPQQPPPPPQPPPQPQPQQQPQPQPQPQPQPPPQPQPPPPPPPPPPPPPPPPOPPPPPPPPPPPPPPPPQPPPQPQPQPQPQPQPQPQPPQPPQQPPQPQPPPQPQPPPPPPPPPPOPPPPPPPPPPQPQPPPQPQPPQQPPQPPQPQPPPQPQPQPPPQPPPQPPPPPPPPPPPPPPPPOPPPPPPPPPPPPPPPPPPQPQPPPQPQPPPPOPPPPQPQPPQQPQPPPPQQPQQQPQQQPQPPOPPQPQQQPQPQPPPPOPPPPQPPPQQQPQPPOPPQPPPPOPPPPQPPOPPPOPPPOPOPOOOONOOOOPOPOPPPOPPPOPPQPPPPOPPPPQPPOPPQPQQPPQPQPPPPOPPPPQPQPQQQPQPPOPPQPQQQPQQQPQPPPPQQPQQQPPPQPPPPOPPPPQPPPQQQPQPPPPPPPQPPPQPPPPPPOPPPPPPQPPPQPPQPPPPPPQQQPPPQPQPQPPPQPPQQPQQQQQPPPQPQPQQPPQPQPPPPOPPPPQPQPPQQPQQQPPPQQQQQPQQPPQPQPQPQPQPQPQQQPQPPPQPPPQPPPPPPPPPPOPPPPPPPPPPQPPPQPPPQPQQQPQPQPQQQPQPQPQPQPQQQPQQQPQQQPQQQPQQQQQQQPQQQPQQQPQPQQQQQPQQQQQQQPQQQPQQQPQPQQPQQPQQQPQPQPPQQPQPPPQPPPPPPOPPPPPPQPPPQPQQPPQPQPQQQPQQPQQPQPQQQPQQQPQQQQQQQPQQQQQPQPQQQPQQQPQQQQQQQPQQQQQQQPQQQQQQQPQQQPQQQPQQQPQQQPQQQPQPQPQPQPQPPPPPPPPPPOPPPPPPPPPPQPQPQPQPQPQQQPQQQPQQQPQQQPQQQPQQQQQQQPQQQQQQQPQQQQQQQPQQQQQQQPQQQQQQQPQQQQQQQPQQQQQQQPQQQQQQQQQQQQQQQPQQQQQQQQQQQQQQQPQQQQQQQPQQQQQQQPQQQQQQQQQQQQQQQPQQQQQQQQQQQQQQQPQQQQQQQPQQQQQQQPQQQPQQQPQQQQQQQPQQQQQQQPQQQPQQQPQPQPQQQPQQQPQPQPPPQPQPPPPPPPPPPOPPPPPPPPPPQPQPPPQPQPQQQPQQQPQPQPQQQPQQQPQQQQQQQPQQQQQQQPQQQPQQQPQPQPQQQPQQQQQQQPQQQQQQQQQQQQQQQPPPQQQQQQQQQQQQQPPQQQQQQPQQQPQPPOPPQPQQQPQQQQQQPPQQQQQQQQQQQQQPPPPQQQQQQQQQQQQQQPQQQQQQQPQQQPQPPOPPQPQQQPQQQQQQQPQQQQQQQPQQQPQPPOPPQPQQQPQQQPQPPOPPQPQPPOPPPOPOONOOPOPPPOPPQPQPPOPPQPQQQPQQQPQPPOPPQPQQQPQQQQQQQPQQQQRQQPQQQPQPPOPPQPQQQPQQQQQQQPQQQQQQQQQQQQQPPPPQQQQQQQQQQQQQPPQQQQQQQPQQQPQPPOPPQPQQQPQQQQQQQPPQQQQQQQQQQQQQQPPPQQQQQQQQQQQQQQQQQQRQRPQQQPQQQPQPQPQQQQRQQQQQRQQQQQQQQQQQQPQPQPQQQQQQQQQQQQRPPPQQQQQQPPQQQPQPPOPPQPQQQPPQQQQQQPPPQQQQQQQQQQQQQPQPQPQQQQQQQQQQQQQQQQQQQQQQQQQQQPQQQPQQQPQQQQQQQQQQQQQQQQRQQQQQQPQQQQQQQQQQQQQQQPQQQQQQQQQQQQQQQPQQQQQQQPQQQQQQQPQQQQQQQQQQQQQQQPQQQQRQRQQQQQQQQPQQQQQQQPQQQQQQQPQQRQRQQQRQRQQQQPQQQQRQQPQQQPQQQPQQQQQQQPQQQPQPQPQQQPQPPPQPPPPPPOPPPPPPQPPPQPQQQPQPQPQQQPQQQQRQQPQQQPQQQPQQRQQQQPQQQQRQQQRRQQRQQPQQQQQQQPQQQQQQQPQQQQQQRQQQQQQQQPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQQQQQQQQQQQQQQQPQQQQQQQQQQQQQQQPQQRQQQQQQQQQRQQQQQQQRQQQQQQQQQQPQQQQQQQQQQQQQQQQQQRQQQRQQQQQRQRQQQQQQQQQQQRQQQRQQQQQQQQQQQQQQQQPQQQQQQQQQQQQQQQQRQQQQQQQQQQQQQQPQQQQQQRQQQRQRQRQQQQQQQQQRQQQQRRPQQQQQQRQQQRQQRQQQQQQRQRQQQQQQQQPQQQQQQRQQQQQQQQQQQQQQQQQQQQQQQQPQQQQQQQQQQRQQQQQQQQQQQQQQQQQQQQPRQQQRQQQRQQQQQQPQQQQQQRQQQRQQQQPQQRQRRRQRQRQQQQPRQQQQQQPQQQQQQQPQQRQQQQPQQQPQQQPQQQPQPQPQPPPPPPOPPPPPPQPQPQPQQQPQQQPQQQPQQQQRQQPQQQQQQQPQQQQQQQPQQQQRQQQRQQQQQQPQQQQQQRQQQQQQQQPQQQQQQQQQQQQQQQPRQQQRQQQQQQQQQRQQQRQRQQQRRQQRQQPQQRQQRRQQQRQRQQQQQRQQQQQQQQQQQQPQQQQQQRQQQRQRQQQQQQQRRRQRQRQQRRPQQQQRQRQRQRQRQRQQQQQRQRQRQRQRQRQQQRQQQQQRQQQRQQQQQQQQQQQQQQQQQQPQQQQQQQQQQQQQQQQQQQQQQRQQQQQRQRQRQRQQRRQRQRQRQQQRQRQRQQQRQQQQQQPQQQQQQRQQQRQRRRQQQRQQRRQRRQQRQRQRQRQRQRQQRRQQQQQRRQQRQQQRQRRQRRPRRQQRQRQQRRQRRRQQQRQQRQQRQRRRRRQRQRQRQRQRRQQRQRQRRRQRRRQRRRRRRRQRRRQRRRQRRRQRRRQRRRQRQRQRRRQRRRQRQRQRQRQRQRQRQRQQQQQQQQQQQQQQQQPQQQQQQQQQQQQQQQQRQRQRQRQRQRQRQRQRRRQRQRQRRRQRRRQRRRQRRRQRRRQRRRQRRRQRRRQRQRRRQRQRRQRRQRQRRRQRRRQRQRQQRQQRRQQRQRQQQRQRQQQQQQQQQQPQQQQQQQQQQRQRQQQRQRQQRRQQRQQRQRQRRRQRRRQRQRRQRRQRQRRRQRQRRRQRRRQRQRQRRRQRRRQRRRQRQRQRRRQRQRQRRRQQQQQRQRQQQRQRQRQQQQQQQQQQQQQQQQPQQQQQQQQQQQQQQQQRQQQRQQQRQRQRQQQQQRQRRRQRRRQRQRQQRRQRRRQRQRQQQQPQQQQRQRQRRRQRRQQQQRRRRRQRRRQRQQQQQRRRRRQQRRRQRRQQRRRRRRQRRRQRQQPQQRQRRRQRRRRRRQQQRRQRRQQRQRQQQQPQQQQRQRQRRRQRQQQRRRRRRRQRRRQRQQPQQRQRRRQRQRQQQQPQQQQRQRQRRRQRQQPQQRQQQQPQQQQRQQPQQQPQQQPQPQPPPPOPPPPQPQPQQQPQQQPQQRQQQQPQQQQRQQPQQRQRRRQRQRQQQQPQQQQRQRQRRRQRQQPQQRQRRRQRRRRRQQQRRRQRRRQRQRQQQQPQQQQRQQQRRRQRRQQQRRRRRRQRRRQRQQPQQRQRRRQRRRRQRRQQRRRRRRQQRRQRQQQQQRRRRRQRRRRRRQQQQRQRRRQRQRQQQQPQQQQRQRQRRRQRQRQQRRRRRRQRRRQRQQQQQRQRQQQRRRQRQQQQRQQRQQQRQQQQQQPQQQQQQRQQQRQQRQQQQRQRRRQQQRRRQRQQQQQRQRQRRRRRRRQRQRQRRRQRRRQRRRQRQRQRRRQRQRRQRRQRRRRRRRRRRRQRQRQRRRQQRRQRRRRRQQQRRRQRRQQRQRQQQQPQQQQRQRQQRRQRRRQQQRRRRRQRRQRRRRQRQRQRRRRRRRRRRRQRRQRRQRQRRRQRRRQRRRQRRRQRRRQRRRQRRRRRRRQRRRQRQRQRRRQRQRQRRRQRQQQRQQQRQQQQQQQQQQPQQQQQQQQQQRQQQRQQQRQRRRQRQRQRRRQRQRQRRRQRRRRRRRQRRRQRRRQRRRRRRRQRRRQRRRQRRRQRRRQRRRRRRRQRRRRRRRQRRRRRRRQRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRQRRRRRRRQRRRQRRRRRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRQRRRRRRRQRRRQRRRRRQRRRRRQRRRRRRRQRRRQRRRQRQRRQRRQRRRQRQRQQRRQRQQQRQQQQQQPQQQQQQRQQQRQRRQQRQRQRRRQRRQRRQRQRRRQRRRQRRRRRRRQRRRRRQRRRRRQRRRQRRRRRRRQRRRRRRRQRRRRSRRRRRRRRRRQRRRRRRRRRRRQRRRQRRRRRRRQRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRQRRRRRRRQRRRRRRRQRRRRRRRQRRRRRRRQRRRQRRRQRRRQRRRQRRRQRQRQRQRQRQQQQQQQQQQPQQQQQQQQQQRQRQRQRQRQRRRQRRRQRRRQRRRQRRRQRRRRRRRQRRRRRRRQRRRRRRRQRRRRRRRQRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQRRRRRRRRRRSRRRRRRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRQRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRQRRRRRRRQRRRQRRRQRRRRRRRQRRRRRRRQRRRQRRRQRQRQRRRQRRRQRQRQQQRQRQQQQQQQQQQPQQQQQQQQQQRQRQQQRQRQRRRQRRRQRQRQRRRQRRRQRRRRRRRQRRRRRRRQRRRQRRRQRRRRRRRQRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRSRRRRRRRRQRRRRRRRQRRRRRRRQRRRQRRRQRRSRRRRQRRRRRRRRRRRRRRRQRRRRRRRRRRRRSRSRRRRRRRRRRRRRRRRQRQRQRRSRRRSRRRRRRRRRRRRRRRRRRRRQQQRRRRRRRRRRRRRQQRRRRRRQRRRQRQQPQQRQRRRQRRRRRRQQRRRRRRRRRRSRRQQQRRRRRRRRRRSRRRRRRRRRRRRRSRRQRQRQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQRRRRRRRRRRRRRRQRRRRRRRQRRRQRQQPQQRQRRRQRRRRRRRQRRSRRRRRRRRRRRQQRRRRSRRRSRRRRRRQRRRRRRRQRRRQRQQPQQRQRRRQRRRRRRRQRRRRSRRQRRRQRQQPQQRQRRRQRRRQRQQPQQRQRQQPQQQPQPPOPPQPQQQPQQRQRQQPQQRQRRRQRRRQRQQPQQRQRRRQRRRRRRRQRRRRRRRQRRRQRQQPQQRQRRRQRRRRRRRQRRRRRRRRRRRRRRQQRRRRRRRRRSRRSRRQRRRRSRRQRRRQRQQPQQRQRRRQRRSRRRRQRRSRRRRRRRRRRRRQQRRRRRRRSRRRRRSRRRRRSRSRSRRQRQRQQQRRSRSRSRSRRRRRRRRRRRRRRRSRSQQQRRRRRRRRRRRRRRQQRRRRRRRQRRRQRQQPQQRQRRRQRRRRRRRQQRRRRRRRRRRRSRRQQQRRRRRRRRRRRRSRRRRRSRSRRRRRRRRQRQRQRRSRSRSRSRSRRRRRRRSRRRRRRRRRRRRRSRRRSSRRSSRQSRRRRRRQRRRRRRRQRRRQRRRQRRSRSRRRRSRRRRRRRRSRRRRRRRRRRRRRRRRRSRRRRRRRSRRQRRRQRRRQRRRRRRRRRRSRRRRRRRRRRRSRRRRQRQRQRRRRRRRRRRRRRQQQRRRRRRQQRRRQRQQPQQRQRRRQQRRRRRRQQQSRRRRRRRRRSRRQRQRQSRSRRRRRRRSRRRRRRRRRSRRRSRRQRRRQRRRQRRSRRRSRRRRRRRSRRRRRRRRRRRSRRRRRRRRRSRRRRRRRRRRRRRRRRRRQRRRRRRRQRRRRRRRQRRSRRRRRRRRRSRRRRRRRRRRRRRRRRRSRRRRRSRSRSRRRSRSQRRRRRRSRRRSRSRRRRRRRRRRRSRRRRRRQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRQRRRRRRRRRRRRSRSQRRRRSRSRRRRRRRRRRRSRSRSRRRSRRRRQRRRRSRSRSSRRSRRRRRSRSRRRRRRRRRRQRRSRRRRRRRRRRRRQRRRRRRSRRRRRSRRQRRSRRSRRSSSRSRRRRSSRSSRRSRSRRRRQRRRRSRRRRSRRSRRQRRRRRRRQRRRRRRRQRRSRSRRRSRSRRRRQRRRRSRRQRRRQRRRQRRSRRRRQRRRQRQRQRRRQRQQQRQQQQQQPQQQQQQRQQQRQRRRQRQRQRRRQRRRRSRRQRRRQRRRQRRSRRRRQRRRRSRRRRSSRSRRQRRRRRRRQRRRRRRRQRRSRRSRRSRRRRRRQRRRRSRRRSSSRSRRRRSSSRRRRSSRRSRRQRRSRSRRRRRRRRRRQRRRRRRSRRRRRSRRQRRSRRRRRRRRRSRRRRRSRSRSRRRSRRRRQRRRRSRSRRRRRSRRRRRSRSRSRRRRRSRSRRRSRSRRRRRRRRRRRRRRRSRRRRRRRRRRQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQRRRRRRSRRRSRSRRRRRSRRRSRSRRRSRSQRRRRRSSRSRSRRRSRRRRRSRSRRSSRRRRRSRSRRRRRSSRRSRRRRRRRRRRRRRRRRRRQRRRRRRRRRRSRRRRRRRRRRRSRRRRRSRSRRRRRSSRRSRSRRSSRSRRRSRSRRSSRSSSRSRSRRRSRSRRRSRSRSRSRRRSRSRSRSRSRSRRRSRRRRRRRRRRRRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRRSRRRSRRRRRSRSRSRSRSRRRSRSRSRSRRRSRRRSRRRSRRRRRRQRRRRRRSRRRSRSSSRRRSRRSRRSSRRSRSRRRRRSRSRSRSRRRSRRSRRRRRRSRRSRSSQSRRRRRSRRRSRSSRRRRRRRSSRSRSSSRRRRRRRRRSRRSRRSRSRRRSRSRSRSRRRRRRQRRRRRRSRSRSRRSRRRRSRSRSRRRSRSRRRRRSRRRSRRRRRRRRRRRRRSRRRRRRRRRRQRRRRRRRRRRRRRRRRRRRRRSRRSRRRRRRRRRSRSRRRSRSRSRRRRRRRSRSRSRSRRRSQRSRRSRSRSSSRSRSRRSSRSRSRRRRRRRRQRRRRRRSRSRSRSSSRRRSRSSSRSRSRSRRQRRSRSSSRSSSSRSRRSSSRSSSRSRSRRRRQRSRRSRRRSRRRRRRQRRRRRRSRSRSRRRRQRRSRSSSRSRSRRRRQSRRRRRRQRRRRRRRQRRSRRRRQRRRQRRRQRRRQRQRQRQQQQQQPQQQQQQRQRQRQRRRQRRRQRRRQRRRRRRRQRRRRRRRQRRRRRRRQSRRRSRSRSSSRRRRQRRSRSRSRSRRRRRRQRRRRRRRRSRSRRRRQRRRRRRRRSSSRRRRRRSSRSRRRSRRRRRRQRRRRRRSRRRSRSSRRRRSRSRSRRRRRRRRQRRRRRRSRRRSRRRSRRRSRSRSRSRSRRRSQRSRRSRSRSSSRSRRRRRSRSRRRSRSRRSRRRRSRSSRRRSRRSRSRSSSSSRRRSSRRSRRQRRRRRSSRRRSSRSSRSRRRRSRRRSSRSRRRRRSRSSSRRRSRRRRRRRSRSRSRSRRRRRRQRRRRRRSRSRSRSRSRRRSRRSSRSSSRSRRRRRRRSRSRSSSSSSRRSSRRSSSRSRSSRSSQSRRRSRSRSSSRSSSRRSSRRSSRSSSRSSSRRRRRSRSRSSRRSSSRSRSRSSSRSSSRSSSRSRSRSSSRSRSRSRSRSSRRSRSRSSSRSRSRSRSRRRRRSRRRSRRRRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRRRRSRRRSRRRRRSRSRSRSRSRSRSRRRSSSRSRSRSRSRSSSRSSSRSSSRSSSRSRSSRSSRSSRRSSSRSSSRSRSRSSSRRSSRSSSRSRRRSSSRSRRRSRRRRRRQRRRRRRSRRRSRSSSRRRSRSSSRSSRSSSSRSRSRSSSRSRSSRSSRSSRSSRSRSSSRSSSRSSSRSSSRSSSRSSSRSRSSRSSRSRSRSRSRSSSSSRSRRSSRSRRRSSSRSSRSSRSSRSSQSSRSSRSRRSSRSSSRRRSRSSRRSRSSSSSRSRSRSSSRSRRSSRSRSSSRSSSSSSSSSSSRSSSRSSSRSSSRSSSRSSSSSRSRSSSRSSSRSSSSSSSRSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSRSSSRSSSSSSSRSSSSSSSRSSSRSSSRSSSRSSSRSSSRSSSRSSSRSSSRSRSRSRSRSRSRSRSRRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRRSRSRSRSRSRSRSRSRSSSRSSSRSSSRSSSRSSSRSSSRSSSRSSSRSSSSSSSRSSSRSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSRSSSSSSSRSSSRSSSSSRSSSSSRSSSRSSSSSSSRSSSSSSSRSSSRSSSRSRSSSRSRSSRSSRSRSSSRSSSRSRSRRSRRSSRRSRSRRRSRSRRRRRRRRRRQRRRRRRRRRRSRSRRRSRSRRSSRRSRRSRSRSSSRSSSRSRSSRSSRSRSSSRSRSSSRSSSRSSSSSSSRSSSSSSSRSSSRSSSSSRSSSSSRSSSRSSSSSSSRSSSRSSSSSSSRSSSSSSSRSSSRSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSRSSSRSSSSSSSRSSSRSSSRSSSSSSSRSRSRSRSRSSSRSSSRSRSRSSSRSSSRSSSRRRSRSRSRRRSRSRSRRRRRRRRRRRRRRRRQRRRRRRRRRRRRRRRRSRSRSRRRSRSRSRRRSSRRSRSRSSSRSRSRSSSRSSSRSSSRSRSRSRSRSSSRSSSSSSSRSSRSSSSRSSSRSSSRRRSSSSSRSSSSSSSRRSSRSSSRSRSRRRRQRRRRSRSRSSSRSSRRSSSSSSSRSSSSSRRRSRSRSSSSSSSSRSSRSSSSSSSRSSSRSRSRRRSRSSSSSSSSSSSRRRSSSSSSSRSSRSSRRRRSSSSRRSSSSSSRRSSSSSSRSSSRSRRQRRSRSSSRSSSSSSRRSSSSSSRRSSSSSRRRRRSSSSSRSSSSSRRRSSSRSSSRSRSRRRRQRRRRSRSRSSSRSSSRRSSSSSSRSSSRSRRRRSSSSSSSSSSSSSSRSSSSSSSRSSSRSRRQRRSRSSSRSSSSSSSRSSSRSSSRSRSRRRRQRRRRSRSRSSSRSSRRSSSSSSSRSSSRSRRQRRSRSSSRSRSRRRRQRRRRSRSRSSSRSRRQRRSRRRRQRRRRSRRQRRRQRRRQRQRQQQQPQQQQRQRQRRRQRRRQRRSRRRRQRRRRSRRQRRSRSSSRSRSRRRRQRRRRSRSRSSSRSRRQRRSRSSSRSSSSSSRRSSSRSSSRSRSRRRRQRRRRSRSRSSSRSSSRSSSSSSSRSSSRSRRQRRSRSSSRSSSSSSSRSSSSSSSSSSSRSRRRRSSSSSSRSSSSSSSRRSSRSSSRSRSRRRRQRRRRSRSRSSSRSRRRSSSSSSSRSSSSSRRRRRSSSSRRSSSSSSRRSSSSSSSRSSSRSRRQRRSRSSSRSSSSSSSRRSSSSSSRRRSSRSSRRRRSSSSSSSSSSSSRRRSSSSSRSSSRSRSRRRSRSSSSSSSSRSSRSSSSSSSSSSSSSRRRSRSRSSSRSSSSSSRRSSSRSSSRSRSRRRRQRRRRSRSRSSSRSSSRRSSSSSSRSSSRSSSRRRSSSSSSSSSSSSSRSSRSSSSRSSSRSRSRSRSRSSSRSSSRSRSRSSSSSSSRSSSRSRRRSRRSSRRRSSSRSRRRRSRRSRRRSRRRRRRQRRRRRRSRRRSRRSRRRRSRSSSRRRSSSRSRRRSRSSSRSSSSSSSRSRSRSSSSSSSRSSSRSRSRSRSRSSSRSSSRSSSSSSSSSSSSSSSRSSSRSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSRSSSRSSSSSSSRSSTRSSSSSRSSSSSRSSSSSSSSSSSSSSSSSSSSSSSRSSSRSSSRSSSSSSSRSRSSRSSRSSSSSSSSSSSRSRSRSSSSRSSRSSSSSRRRSSSRSSRRSRSRRRRQRRRRSRSRRSSRSSSRRRSSSSSRSSRSSSSRSRSRSSSSSSSSSSSRSSRSSRSSSSSSSSSRSSSRSSSRSSSSSSSSSSSSSSSSSSSSSSSRSSSSSRSSSSSRSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSRSSSRSSSRSSSSSSSRSSSRSSSRSSSSSSSRSSSRSRSRSSSRSRSRSSSRSRRRSRRRSRRRRRRRRRRQRRRRRRRRRRSRRRSRRRSRSSSRSRSRSSSRSRSRSSSRSSSSSSSRSSSRSSSRSSSSSSSRSSSRSSSRSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSRSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSSTSSRSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSTRSSSSSSSSSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSTSSSSSSSSSSSTSSSTRTSSSTSSSTSSSSSSRSSSSSSTSSSSSSSSRTSSSSSSRTSSSSSSSSSSRSSSSSSSSSSSRSSSSSSSSSSTSSSSRSSSSSSSRSSSSSSSRSSSRTSSSSRSSSSSRSSSSTSSRSSSRSSSRSRSSRSSRSSSRSRSRRSSRSRRRSRRRRRRQRRRRRRSRRRSRSSRRSRSRSSSRSSRSTRSRSSSRSSSRSSSSSSSRSSSSTRSSSSSRSSSRSSSSSSSRSSSSSSSRSSSSSSSSSSSSSSSRSSSSTSSSSSTRSSSSSSSSSSSRTSSSSSTRTSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSSRSSSSSSSSSSSSTSSSSSSSSSSRSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSRSSTSSSSSSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSSTSSSSSSRSSSSSSSRSSSSTSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSRSSSRSSSRSSSRSSSRSRSRSRSRSRRRRRRRRRRQRRRRRRRRRRSRSRSRSRSRSSSRSSSRSSSRSSSRSSSRTSSSSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSSSSSSRSSTSSSSSSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSSSSTSSSSRSSTSTSSSSSSSSSSRSSTSSSSSSSSSTSSRSSSSSSTSSSTSTSSSSSSSSSSSSSSSSSSRTSSSTSSSTSSSSSSSSSSSTSSSSSSSSSSRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRSSSSSSSSSSTSSSTSSSSSSSTSSSSSTSSRSSSSSSSSSSSSSSSSSSSSTSSSSSTSSSSRSSSSSSSSSSSSTSSSSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSSTSTSSSSSSSTSSSSSSSSSSSSRSSSSSSSSSSSSTSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRSSSSSSSSSSSSTSSSSSSSTSSSSSSSSSSRSSSSTSSSSSTSSSSSSSSSTSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRSSSSSSSSSSTSSSSSSSSSSTSSSSSSTSSSSSSSSSSSSSTSSSSSSSSSTSTSSSSSSSSRSSSSSSTSTSSSSSSSSSSSSSSSSSSSSSSRSSSSSSSSSSTSSSSSSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSSSSSSTSSSSSSSSSSRSSSSSSSSSSTSSSSSSSSSTSTSSSSSSSSRSSSSSSSSSSTSSSSRSSSSTSSSSSSSSSSRSSSSSSSRSSSSSSSRSSTSTSSSTSSSSSSRSSSSTSSSTSSSSSSRSSSSSSSRTSSSSSSRSSSRSSSRSSSSSSSRSSSSSSSRSSSRSSSRSRSRSSSRSSSRSRSRRRSRSRRRRRRRRRRQRRRRRRRRRRSRSRRRSRSRSSSRSSSRSRSRSSSRSSSRSSSSSSSRSSSSSSSRSSSRSSSRSSSSSSSRTSSSSSSRSSSSSSSSTSTSSSSRSSSSTSSSSSTSSSSRSSSSSSSRSSSSSSSRSSTSTSSSSSTSSSSRSSSSTSSSSSSSSSSRSSSSSSTSSSTSSSSSSSTSTSSSSSTSSSSRSSSSSSTSSSTSSTSSSSTSTSSSSSSSSSSRSSSSTSSSSSSSSSSRSSSSSSSSSSSSSSSRSSSSSSSRSSSSSSSRSSSSSTSSTSTSSSSRSSSSSSSSSSTSSSSSSSSSSSTSTSSSSSSRSSSSSSSSSSTSSSSSSSSSSSSSSTTSTTSSSSSSSSSSSSSSTSTSSSSSSSSSSSSSSSSRSSSRSSTRSSSSTTSSTSSSSTSSSSSSTSSSSSSSTSTSSSSSSSSSSSSSSSSSSSSSSSSRSRSRSSSSSSSSSSSSSSSSTSSSSSSSSSSRRRSSSSSSSSSSSSSRRSSSSSSRSSSRSRRQRRSRSSSRSSSSSSRRSSSSSSSSSSTSSRRRSSSSSSSSSSSSSSSSTSSSSTSSSSSRSRSRSSSSSSSSSSSSSSTSSSSSTTSSSSTSSSSSSSSSSSSSSSSSSSSSSSSSTSSRSSSRSSSRSRSRSSSSSSSSSSSSSSSSTSTSSSSSTSSSSSSSTSSSTSTSSSSSSSSSSSSSSSSSSSSRRRSSSSSSTSSSSSSSSSSSSSSSSSTSSSSRRSSSSSSSSSSSTSSRSSSSSSSRSSSRSRRQRRSRSSSRSSSSSSSRSSTSSSSSSSSSTSRRSSSSSSSSTSSSSSSSTSSSTSTSSSSSSRRRRSSSSSTSSTSSTSSSSTSSTSTSTSSSSSSRSSTSSSSSTSSSTSSRSSTSTSSRSSSRSRRQRRSRSSSRSSTSSSSRSSSSTSSSTSSSSSSRSSSSSSTSTTSSTSSRSSTSSSSRSSSRSRRQRRSRSSSRSSTSSSSRSSSSTSSRSSSRSRRQRRSRSSSRSSSRSRRQRRSRSRRQRRRQRQQPQQRQRRRQRRSRSRRQRRSRSSSRSSSRSRRQRRSRSSSRSSTSSSSRSSSSTSSRSSSRSRRQRRSRSSSRSSSSSSSRSSTSSSTSSSSSSSSRSSSSSSTSSSTSTSSRSSTSTSSRSSSRSRRQRRSRSSSRSSTSTSSRSSTSTSSSSSSSSSSRSSTSSSTSTSSSTSSSTSSSTSTSSSSSSRRRRSSSSSTSSSTSSSSSSSSTTSSSSTSSSSRRSSTSSSSSTTSSTSSRSSSSTSSRSSSRSRRQRRSRSSSRSSTSSSSRSSTSSTSSSSSSTSSRRSSSSTSSSSTSSSTSSSSSSSSSSSSSSSSRRRSSSSTSTSTSTSSSSTTSSSTSSSSSTTSSSSSSTSSSTTSSTTTSTTTSTSTRTSSRSSSRSRSRTSTSSTTSSTTSTTTSTTTSTSTSSSTSSSSSSSTSTSSSSSTSSSTSTTSSSTSRSRSRSSSSSSSSSSTSSSSSSSSSSSSSSSTSTRRRSSSSSSSSSSSSSSRRSSSSSSSRSSSRSRRQRRSRSSSRSSSSSSSRRSSSSSSSSSSSTSSRRRTSSSSSSSSSSSTSSSSSTSSSTTSSSSSRSRSRSSSSSSSSTSTSTSSSSSTSTSTSTTSSTSSSTSSSTTTSTTTSTSSSTSSSTSSSTSSRSSSRSSTRTSTSTTTSTTTSSTTSSTTSTTTSSSTSSSTSTSTSTTTSSSTSTSTSTSTSSSTSSSSSSSSSSTTSTSTSSTSTTSSSTTSSSSSRSSTSTSSSSSTSTSSRSSTSTSSSSSSSSSSRSSSSSSSRSSTSTSSRSSTSTTTSSTTSTSSSSSSSSSTSSSTSTSSSSSTSSTTSSSTSSSTSSSSSTSTSSSTSTSTSTSSSTSTSTTTSSSTSTSTSSSSSTTSSTSSRSSTSTSSRSSSSSSSRSSSSSSSSSSTSTSSSTSTSSTTSSSSSTSTSTSSSTSTSTSSSSTSSSSSSTSSRTSSRSSSRSSSSSSSSTSSSSSSSSSSSSSTSTSTRSRSRSSTSSSSSSSSSTRRRSSSSSSRRSSSRSRRQRRSRSSSRRSSSSSSRRRTSSSSSSSSSTSSRSRSRTSTSTSSSSSSSSSSSTSSSTTSSTSSRSSSRSSSRTTTSSTSSSSTSSSTSTSTSTTTSTSTSTSTSTSTSTSTSTTTSTSSSTTTSTSSRSSTSTSSRSSTSTSTRSSTSTTTSSSTSTTTSTSSSTSTSSSTSTTTSTSTSTSTSTSSSTSTSTSTSSTTSSSTSTSSSSSSSSSTSSTSSSSSSSSTSSSTSSSSSTSSSSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSRSSTSSSSSSSSSTSSRSSSSSTSSSSSSSSTSSSSSTSTSSTTSSSTSSSTSSSTSTSTSTSTSSSTSTSTSTSTSSTTSTSSSTSTSTTTSTTTSSTTSSSTSTTSSTTTRTSTSSSSSTSTSTTSSTSSSTTTSTTTSTSTSSSTSSSTSTSSSTSSSSSTSTSSSTSSSSSSRSSSSSSTSSSTSSSSSSSSSTSTSTSTSSSSSTSTSSSSSSSSSSSSSSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRSSSSTSTSSSTSSSSSSSTSSSSSSTSSTSTRSSTSSSSSSTTSTSTSSSSSTSTSTSSSTSTSSSTSTTTSSTTSTTTSSSTSTTTSTSTSSSSRSSSSTSTSTTTSTTSSTTTSTSSSTTTSTSSSSSTSTTTSTTTSSSSSTSSSTSTSSSSSTSSRSSTSSTTSTSTSTSTSSSTSSSSSSSSSSSSRSSSSSSTSSSTSTTTSSSTSTSTSSTTSTSSRSSTSTTSSTSTTSSTSSTTTTTSSTTTSTSSSSSSSTTSSTTTTTSSSSTTSTTTSSSTSSSSRSSSSTSSSSTSSTSTSSSTTTSTSSTSSSSSRSSTSSSSSTSSSSSSRSSSSSSTSSSSSTSSRSSTSTTTSTTTSTSSSTTTSTTTSTSTSSSSRSSSSTSSSTTSSTSSRTSSSSSSRSSSSSSSRSSTSTTSSTSTSSSSRSSSSTSSRSSSRSSSRSSTSSSSRSSSRSRSRSSSRSRRRSRRRRRRQRRRRRRSRRRSRSSSRSRSRSSSRSSSSTSSRSSSRSSSRSSTSSSSRSSSSTSSSTTTSTSSRSSSSSSSRSSSSSSSRSSTSSTTSTSTSSSSRSSSSTSTSTTTSTSSSTSTTTTSSTTSSTSSRSSTSTSSSSSSSSSSRSSSSSSTSSSSSSSSRSSTSSTTSTSSTTSTSSTTSTSSSTSTSSSSRSSSSTSTSSTTSSSSSSTTTTTSSSTSSTSSSSSTTTTSSTSTSSSTSSTTTTSSSTTTSTSSRSSTSTTTSSTTSTSTSSSTSTSSSSSSSSSSRSSSSSSTSSSTSTTTSSSTSSSTSTTSSTSSRSSTSSTTSSSTSSSSSTSSSTSTSTTTSTSSSSSTSTTSSTTTSTTSSTSTSTTTSTSTSSSSRSSSSTSTSTTTSTTTSSSTSTSTSSTSSTSTSSSTSTTSSTTTSTSTSSSSSTSTSTTTSTSTSSSTSSTTSTTSSTSSSTSTSSSTSTSSSSSTSTSSSTSSSSSSSSSSSSSSSTSSSSSSSSSSRSSSSSSSSSSTSSSSSSSSSSSSSSSTSTSSSTSTSSSTSTSTSSSSSSSSSTSSSTSSSSSSRSSSSSSTSSSTSTTTSSSTSTTTSTTTSTSTSSSTSSTTSTSTSTTSSTTSSTSTSTTSSTTTRTSTSSSTSTSTTTTTSSTTSSTTSTSTSSTTSTSSSTSTSTTTSTTTSTSTTSTTSTSTSTSTSTSTSTTTSTSTSSSTSTTSTTSTSSTTSSSSSTSTSSSSSTSSSTSSSSSSSTSSSSSSSSSSRSSSSSSSSSSTSSSSSSSTSSTTSSSSSTSTSSSSSTSSSTSTSSTTSTSSSTSTSTTTSTTTSTSTSTSTSTTSTTSTSTTTSTTTSTSTTTTTSTTSSTSTSSTTSTTTSTSTTTTTSTTTTTTTSTTTSTTTSTSTSTTTSTTTSTSTSTTTSTTTSTTTSTTTSTSTSTTTSTTTSTTTSTTTSTTTSTTTSTSTSTTTSTSTSTSTSTSTSTSTSTSTSTSTSTSSSSSTSSSTSSSSSSSSSSSSSSSSRSSSSSSSSSSSSSSSSTSSSTSSSSSTSTSTSTSTSTSTSTSSSTSSSTSTSTTTSTTTSTTTSTTTSTTTSTSTSSTTSTTSSTTTSTTTSTSTSTTTSSSTSTTTSTSSSTTTSTSSSTSSSSSSRSSSSSSTSSSTSTTTSSSTSTTTSTTSTTTTSTSTSTTTSTSTTSSTSTTSTTSTSTTTSTTTSTSTSTSTSTTTSTTTSSSTSSTSSTSSSTSTSSSTTSSTSTSTSTSTSSTTSTSSTTSSTSTTRTTSSSSTSSSTSTTSSTSTSTTTSSTTTTSSSTSSSSSTSSSSTTSTSTTTSSTTTTTTSTSTSTSTSTSTSTSTSSTTSTSSTTSTSTTTSTTTSSSTSTTTSTTTSTTTSSTTSTSTSTSSSSSSRSSSSSSTSTSTSTTSSTTTSTTTSTSTTTSSSTSTSTTTSTTTSSTTSTSTSTTTSTTTSTSTSTSTSTTTSTSSSSTTSSSTSTSTSSSTSSSTSSSSSSSTSSTSSSSSSSSSSTSSSSSSSSSSRSSSSSSSSSSTSSSSSSSSSSSSSTSSSTSSS"};
    int main()
    {
        scanf("%d",&p);
        printf("%d",ans[p]-'A'-1);
    }

    然后就可以A此题了……
    (转换成char类型可以少写无数逗号,省code length) Code length有30000B的限制

    正解:

    // by SiriusRen
    #include <queue>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    queue<pair<int,int> >q;
    char vis[20005][205];
    int p;
    int gcd(int x,int y){return y?gcd(y,x%y):x;}
    int main()
    {
        vis[1][1]=1;
        scanf("%d",&p);
        q.push(make_pair(1,1));
        while(!q.empty())
        {
            pair<int,int>t=q.front();q.pop();
            int rec=vis[t.first][t.second]+1,mul=t.first<<1,mul2=t.second<<1,sum=t.first+t.second,minu=t.first-t.second;
            if(p%(gcd(t.first,t.second)))continue;
            if(t.first==p||t.second==p){printf("%d
    ",rec-2);return 0;}
            //first+second  &  first
            if(t.first<=200&&sum<=20000&&!vis[sum][t.first])
            {
                vis[sum][t.first]=rec;
                q.push(make_pair(sum,t.first));
            }
    
            //first+second  &   second
            if(sum<=20000&&!vis[sum][t.second])
            {
                vis[sum][t.second]=rec;
                q.push(make_pair(sum,t.second));
            }
    
            //fisrt-second  &  first
            if(t.first<=200&&minu>t.first&&!vis[minu][t.first])
            {
                vis[minu][t.first]=rec;
                q.push(make_pair(minu,t.first));
            }
            else if(minu<=200&&minu<t.first&&minu>0&&!vis[t.first][minu])
            {
                vis[t.first][t.first-t.second]=rec;
                q.push(make_pair(t.first,t.first-t.second));
            }
    
            //first-second  &  second
            if(t.first-t.second>t.second&&!vis[t.first-t.second][t.second])
            {
                vis[t.first-t.second][t.second]=rec;
                q.push(make_pair(t.first-t.second,t.second));
            }
            else if(t.first-t.second<t.second&&t.first-t.second>0&&!vis[t.second][t.first-t.second])
            {
                vis[t.second][t.first-t.second]=rec;
                q.push(make_pair(t.second,t.first-t.second));
            }
    
    
            //first+first  &  first
            if(t.first<=200&&(mul)<=20000&&!vis[mul][t.first])
            {
                vis[mul][t.first]=rec;
                q.push(make_pair(mul,t.first));
            }
    
            //first+first  &  second
            if((mul)<=20000&&!vis[mul][t.second])
            {
                vis[mul][t.second]=rec;
                q.push(make_pair(mul,t.second));
            }
    
            //second+second  &  first
            if(t.first<=200&&(mul2)<=20000&&mul2>=t.first&&!vis[mul2][t.first])
            {
                vis[mul2][t.first]=rec;
                q.push(make_pair(t.second<<1,t.first));
            }
            else if(mul2<=200&&(mul2)<=20000&&mul2<t.first&&!vis[t.first][mul2])
            {
                vis[t.first][mul2]=rec;
                q.push(make_pair(t.first,mul2));
            }
        }
    }

    (STL毁一生… 本地秒出结果 POJ挂得特惨)

    改成手写的队列……

    // by SiriusRen
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    char vis[20005][205];
    int p,q1[5000000],q2[5000000],l=0,r=1;
    int main()
    {
        scanf("%d",&p);
        vis[1][1]=1;
        q1[0]=q2[0]=1;
        while(l<r)
        {
            int t1=q1[l];
            int t2=q2[l++];
            int rec=vis[t1][t2]+1,mul=t1<<1,mul2=t2<<1,sum=t1+t2,minu=t1-t2;
            if(t1==p||t2==p){printf("%d
    ",rec-2);return 0;}
    
            //first+second  &  first
            if(t1<=200&&sum<=20000&&!vis[sum][t1])
            {
                vis[sum][t1]=rec;
                r++;q1[r]=sum;q2[r]=t1;
            }
    
            //first+second  &   second
            if(sum<=20000&&!vis[sum][t2])
            {
                vis[sum][t2]=rec;
                r++;q1[r]=sum;q2[r]=t2;
            }
    
            //first-second  &  first
            if(t1<=200&&minu>t1&&!vis[minu][t1])
            {
                vis[minu][t1]=rec;
                r++;q1[r]=minu;q2[r]=t1;
            }
            else if(minu<=200&&minu<t1&&minu>0&&!vis[t1][minu])
            {
                vis[t1][minu]=rec;
                r++;q1[r]=t1;q2[r]=minu;
            }
    
            //first-second  &  second
            if(minu>t2&&!vis[minu][t2])
            {
                vis[minu][t2]=rec;
                r++;q1[r]=minu;q2[r]=t2;
            }
            else if(minu<t2&&minu>0&&!vis[t2][minu])
            {
                vis[t2][minu]=rec;
                r++;q1[r]=t2;q2[r]=minu;
            }
    
    
            //first+first  &  first
            if(t1<=200&&mul<=20000&&!vis[mul][t1])
            {
                vis[mul][t1]=rec;
                r++;q1[r]=mul;q2[r]=t1;
            }
    
            //first+first  &  second
            if(mul<=20000&&!vis[mul][t2])
            {
                vis[mul][t2]=rec;
                r++;q1[r]=mul;q2[r]=t2;
            }
    
            //second+second  &  first
            if(t1<=200&&mul2<=20000&&mul2>=t1&&!vis[mul2][t1])
            {
                vis[mul2][t1]=rec;
                r++;q1[r]=mul2;q2[r]=t1;
            }
            else if(mul2<=200&&mul2<=20000&&mul2<t1&&!vis[t1][mul2])
            {
                vis[t1][mul2]=rec;
                r++;q1[r]=t1;q2[r]=mul2;
            }
        }
    }

    坑爹搜索 跪一晚上,,,,,,

    这里写图片描述
    这里写图片描述

  • 相关阅读:
    006_linux驱动之_ioremap函数使用
    004_linux驱动之_class_create创建一个设备类
    003_linux驱动之_file_operations函数
    002_linux驱动之_register_chrdev注册字符设备
    001_linux驱动之_驱动的加载和卸载
    007_linuxC++之_构造函数的初级应用
    006_linuxC++之_引用
    005_linuxC++之_指针的引入
    004_linuxC++之_函数的重载
    003_linuxC++之_namespace使用
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532342.html
Copyright © 2011-2022 走看看