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--5240--Exam()
Exam Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- oracle init.ora常用配置详解
参考网上整理了重要的配置文件 db_name = "51cto" 一个数据库标识符,应与CREATE DATABASE 语句中指定的名称相对应. instance_name = ...
- Java类的根Object
一.Object类介绍 Object全名java.lang.Object,java.lang包在使用的时候无需显示导入,编译时由编译器自动导入.Object类是类层次结构的根,Java中所有的类从根本 ...
- QT-helloworld-Qt设计师编写
前言:Qt设计师界面类就是C++类和ui文件的结合,它将这两个文件一起生成了,而不用再逐一添加. 目标:在对话框中显示出“helloworld”字样. 一.新建项目 1.1 选择项目模板 文件→新建文 ...
- POJ 3764 DFS+trie树
题意: 给你一棵树,求树中最长的xor路径.(n<=100000) 思路: 首先我们知道 A xor B =(A xor C) xor (B xor C) 我们可以随便选一个点DFS 顺便做出与 ...
- js 数据类型判断
判断type类型 isString (o) { //是否字符串 return Object.prototype.toString.call(o).slice(8, -1) === 'String' } ...
- function——函数声明头的提升和预解析
函数: 即function语句的集合,就是将多个语句封装到一起: 函数的执行要会自己遍历,遇见函数 a():执行语句,就要移交控制权,函数执行完毕之后,控制权又移交回来了! 函数的参数要罗列在func ...
- hdu 5375 Gray code 【 dp 】
dp[i][j]表示第i位取j的时候取得的最大的分数 然后分s[i]是不是问号,s[i-1]是不是问号这大的四种情况讨论 #include<cstdio> #include<cstr ...
- GCD与dispatch_group总结
GCD 可以看作是集合类的操作: 集合是queue,元素是block: 集合只能添加对象,删除对象由系统完成. 同理,NSOperationQueue也可以看作是一个集合管理器. dispatch_g ...
- 动态库连接器–动态库链接信息(Mach-O文件格式和程序从加载到执行过程)
section cmd 说明 举例 __text 主程序代码 __stubs 用于动态库链接的桩 __stub_helper 用于动态库链接的桩 __cstring 常亮字符串符号表描述信 ...