POJ 1945 暴搜+打表 (Or 暴搜+判重)
思路:
呃呃 暴搜+打表
暴搜的程序::稳稳的TLE+MLE (但是我们可以用来打表)
然后我们就可以打表过了 hiahiahia可以证明最小的那个数不会超过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\n",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\n",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;
}
}
}
坑爹搜索 跪一晚上,,,,,,
POJ 1945 暴搜+打表 (Or 暴搜+判重)的更多相关文章
- POJ3087 Shuffle'm Up —— 打表找规律 / map判重
题目链接:http://poj.org/problem?id=3087 Shuffle'm Up Time Limit: 1000MS Memory Limit: 65536K Total Sub ...
- BZOJ_1224_[HNOI2002]彩票_爆搜+打表
BZOJ_1224_[HNOI2002]彩票_爆搜+打表 Description 某地发行一套彩票.彩票上写有1到M这M个自然数.彩民可以在这M个数中任意选取N个不同的数打圈.每个彩民只能买一张彩票, ...
- HDU--杭电--1195--Open the Lock--深搜--都用双向广搜,弱爆了,看题了没?语文没过关吧?暴力深搜难道我会害羞?
这个题我看了,都是推荐的神马双向广搜,难道这个深搜你们都木有发现?还是特意留个机会给我装逼? Open the Lock Time Limit: 2000/1000 MS (Java/Others) ...
- poj 1564 Sum It Up | zoj 1711 | hdu 1548 (dfs + 剪枝 or 判重)
Sum It Up Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Sub ...
- 使用spark对hive表中的多列数据判重
本文处理的场景如下,hive表中的数据,对其中的多列进行判重deduplicate. 1.先解决依赖,spark相关的所有包,pom.xml spark-hive是我们进行hive表spark处理的关 ...
- poj 3131 双向搜索+hash判重
题意: 初始状态固定(朝上的全是W,空格位置输入给出),输入初始状态的空格位置,和最终状态朝上的位置,输出要多少步才能移动到,超过30步输出-1. 简析: 每一个格子有6种状态,分别是 0WRB, 1 ...
- POJ 2458 DFS+判重
题意: 思路: 搜+判重 嗯搞定 (听说有好多人用7个for写得-.) //By SiriusRen #include <bitset> #include <cstdio>0 ...
- BFS以及hash表判重的应用~
主要还是讲下hash判重的问题吧 这道题目用的是除法求余散列方式 前几天看了下算法导论 由于我们用的是线性再寻址的方式来解决冲突问题 所以hash表的大小(余数的范围)要包含我们要求的范围 对mod的 ...
- 逆向bfs搜索打表+康拓判重
HDU 1043八数码问题 八数码,就是1~8加上一个空格的九宫格,这道题以及这个游戏的目标就是把九宫格还原到从左到右从上到下是1~8然后最后是空格. 没了解康托展开之前,这道题怎么想都觉得很棘手,直 ...
随机推荐
- hdoj--3440--House Man(差分约束)
House Man Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 【SDOI 2016】 排列计数
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4517 [算法] 有m个数在原来的位置上,说明有(n-m)个数不再原来的位置上 那么, ...
- Android PullToRrefresh 自定义下拉刷新动画 (listview、scrollview等)
PullToRefreshScrollView 自定义下拉刷新动画,只需改一处. 以下部分转载自http://blog.csdn.net/superjunjin/article/details/450 ...
- 玩转 sublime3 第一弹 文件介绍
安装 官网下载地址:http://www.sublimetext.com/3 本文将以Windows 64 bit 进行讲解. 目录介绍 sublime默认安装之后会生成一个安装目录和数据目录: C: ...
- nginx 日志配置不生效的问题
log_format 有个默认的日志格式: log_format combined '$remote_addr - $remote_user [$time_local] ' ' "$requ ...
- luogu P4245 【模板】任意模数NTT MTT
Code: #include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) # ...
- 04 SqlServer
数据库的注释 –(两个横线) 主键表 外键表 主键,组合主键 SqlServer 使用附加 权限 主文件mdf 日志文件ldf 数据类型 char varchar nchar nvarchar cha ...
- Vue双向绑定原理(源码解析)---getter setter
Vue双向绑定原理 大部分都知道Vue是采用的是对象的get 和set方法来实现数据的双向绑定的过程,本章将讨论他是怎么利用他实现的. vue双向绑定其实是采用的观察者模式,get和s ...
- Python 绘图与可视化 matplotlib 制作Gif动图
参考链接:https://blog.csdn.net/theonegis/article/details/51037850 官方文档:https://matplotlib.org/3.1.0/api/ ...
- CRM系统 - 总结 (二) stark组件
介绍: stark组件,是一个帮助开发者快速实现数据库表的增删改查+的组件.目标: 10s 中完成一张表的增删改查. 前戏: django项目启动时,自定义执行某个py文件. django启动时,且在 ...