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然后最后是空格. 没了解康托展开之前,这道题怎么想都觉得很棘手,直 ...
随机推荐
- python黏包现象
#黏包:发送端发送数据,接收端不知道应如何去接收造成的一种数据混乱现象. #关于分包和黏包: #黏包:发送端发送两个字符串"hello"和"word",接收方却 ...
- QT-helloworld-Qt设计师编写
前言:Qt设计师界面类就是C++类和ui文件的结合,它将这两个文件一起生成了,而不用再逐一添加. 目标:在对话框中显示出“helloworld”字样. 一.新建项目 1.1 选择项目模板 文件→新建文 ...
- POJ 2392 DP
题目大意:有一头奶牛要上太空,他有很多种石头,每种石头的高度是hi,但是不能放到ai之上的高度,并且这种石头有ci个 将这些石头叠加起来,问能够达到的最高高度. 题意转载自:http://blog.c ...
- 本地PC安裝Centos 6.5 操作手冊
http://www.xlgps.com/article/130038.html 一.准备工作 1.下载Centos6.5 ISO文件 我在官网上下的6.5版本CentOS-6.5-x86_64-bi ...
- git工具的安装和使用
啰嗦几句: 世界上本没有后悔药,但软件开发提供了后悔药,那就是代码管理工具.它可以让你的代码穿越回以前的状态,甚至可以指定某一个时刻,而且还可以穿越回来. 当下流行的代码管理工具有 SVN 和 GIT ...
- PHP 导出excel 数据量大时
public function ceshiexcel1(){ set_time_limit(0); $filename = '病毒日志'; header('Content-Type: applicat ...
- 微信小程序中获取高度及设备的方法
由于js中可以采用操纵dom的方法来获取页面元素的高度,可是在微信小程序中不能操纵dom,经过查找之后发现仅仅只有以下几个方法可以获取到高度 wx.getSystemInfoSync().window ...
- c++ sort函数的用法
C++ sort函数用法 FROM:http://hi.baidu.com/blackdemonfish/blog/item/e2c1d655d702a45ed0090652%2Ehtml 最近算法作 ...
- Linux常见后缀缩写含义
ctl: control rc: run control (A run-control file is a file of declarations or commands associated wi ...
- 搭建svn服务器(ubuntu)
ubuntu搭建svn服务器 环境:ubuntu 12.04.5 apt-get install subversion 找个目录作为svn的仓库 mkdir svn svnadmin create s ...