zoukankan      html  css  js  c++  java
  • BZOJ1695 : [Usaco2007 Demo]Walk the Talk

    观察单词表可以发现:

    对于长度为3的单词,前两个字母相同的单词不超过7个

    对于长度为4的单词,前两个字母相同的单词不超过35个

    于是首先$O(26*26*nm)$预处理出

    s1[x][i][j]表示(i,j)右上角里面字母x的出现次数

    s2[x][y][i][j]表示(i,j)右上角里面单词xy的出现次数

    枚举一个点,计算长度为1的单词的出现次数

    枚举两个点,计算长度为2,3,4的单词的出现次数

    总时间复杂度为$O(kn^2m^2)$,k不超过43

    #include<cstdio>
    #include<string>
    using namespace std;
    const int N=35,M=2265,S=26;
    int n,m,i,j,x,y,a[N][N],ans,v1[S],v2[S][S],s1[S][N][N],f[S][S][N][N],s2[S][S][N][N];
    char ch[N];string d[M];
    struct E{int x,y;E*nxt;}*g3[S][S],*g4[S][S],pool[M],*cur=pool,*p;
    inline void add3(int a,int b,int x){p=cur++;p->x=x;p->nxt=g3[a][b];g3[a][b]=p;}
    inline void add4(int a,int b,int x,int y){p=cur++;p->x=x;p->y=y;p->nxt=g4[a][b];g4[a][b]=p;}
    int main(){
      d[0]="A";
      d[1]="AA";
      d[2]="AAA";
      d[3]="AAAA";
      d[4]="ABBE";
      d[5]="ABED";
      d[6]="ABET";
      d[7]="ABLE";
      d[8]="ABLY";
      d[9]="ABUT";
      d[10]="ACE";
      d[11]="ACES";
      d[12]="ACHE";
      d[13]="ACID";
      d[14]="ACME";
      d[15]="ACNE";
      d[16]="ACRE";
      d[17]="ACT";
      d[18]="AD";
      d[19]="ADD";
      d[20]="ADDS";
      d[21]="ADO";
      d[22]="ADS";
      d[23]="AFAR";
      d[24]="AFT";
      d[25]="AGAR";
      d[26]="AGE";
      d[27]="AGED";
      d[28]="AGER";
      d[29]="AGES";
      d[30]="AGO";
      d[31]="AGOG";
      d[32]="AGUE";
      d[33]="AH";
      d[34]="AID";
      d[35]="AIDE";
      d[36]="AIDS";
      d[37]="AIL";
      d[38]="AIM";
      d[39]="AIMS";
      d[40]="AIR";
      d[41]="AIRS";
      d[42]="AIRY";
      d[43]="AJAR";
      d[44]="AKIN";
      d[45]="ALAS";
      d[46]="ALBA";
      d[47]="ALE";
      d[48]="ALEE";
      d[49]="ALGA";
      d[50]="ALL";
      d[51]="ALLY";
      d[52]="ALMA";
      d[53]="ALMS";
      d[54]="ALOE";
      d[55]="ALSO";
      d[56]="ALUM";
      d[57]="AM";
      d[58]="AMEN";
      d[59]="AMID";
      d[60]="AMMO";
      d[61]="AMOK";
      d[62]="AMYL";
      d[63]="AN";
      d[64]="ANAL";
      d[65]="AND";
      d[66]="ANEW";
      d[67]="ANON";
      d[68]="ANT";
      d[69]="ANTE";
      d[70]="ANTI";
      d[71]="ANTS";
      d[72]="ANUS";
      d[73]="ANY";
      d[74]="APE";
      d[75]="APED";
      d[76]="APES";
      d[77]="APEX";
      d[78]="APSE";
      d[79]="APT";
      d[80]="AQUA";
      d[81]="ARC";
      d[82]="ARCH";
      d[83]="ARCS";
      d[84]="ARE";
      d[85]="AREA";
      d[86]="ARID";
      d[87]="ARK";
      d[88]="ARM";
      d[89]="ARMS";
      d[90]="ARMY";
      d[91]="ART";
      d[92]="ARTS";
      d[93]="AS";
      d[94]="ASH";
      d[95]="ASK";
      d[96]="ASKS";
      d[97]="ASP";
      d[98]="ASS";
      d[99]="AT";
      d[100]="ATE";
      d[101]="ATOM";
      d[102]="ATOP";
      d[103]="AUNT";
      d[104]="AURA";
      d[105]="AUTO";
      d[106]="AVER";
      d[107]="AVID";
      d[108]="AVOW";
      d[109]="AWAY";
      d[110]="AWE";
      d[111]="AWED";
      d[112]="AWL";
      d[113]="AWLS";
      d[114]="AWRY";
      d[115]="AX";
      d[116]="AXED";
      d[117]="AXER";
      d[118]="AXES";
      d[119]="AXIS";
      d[120]="AXLE";
      d[121]="AXON";
      d[122]="AYE";
      d[123]="AYES";
      d[124]="BABE";
      d[125]="BABY";
      d[126]="BACK";
      d[127]="BAD";
      d[128]="BADE";
      d[129]="BAG";
      d[130]="BAGS";
      d[131]="BAH";
      d[132]="BAIL";
      d[133]="BAIT";
      d[134]="BAKE";
      d[135]="BALD";
      d[136]="BALE";
      d[137]="BALK";
      d[138]="BALL";
      d[139]="BALM";
      d[140]="BAN";
      d[141]="BAND";
      d[142]="BANE";
      d[143]="BANG";
      d[144]="BANK";
      d[145]="BANS";
      d[146]="BAR";
      d[147]="BARB";
      d[148]="BARD";
      d[149]="BARE";
      d[150]="BARK";
      d[151]="BARN";
      d[152]="BARS";
      d[153]="BASE";
      d[154]="BASH";
      d[155]="BASK";
      d[156]="BASS";
      d[157]="BAT";
      d[158]="BATH";
      d[159]="BATS";
      d[160]="BAUD";
      d[161]="BAWL";
      d[162]="BAY";
      d[163]="BAYS";
      d[164]="BE";
      d[165]="BEAD";
      d[166]="BEAK";
      d[167]="BEAM";
      d[168]="BEAN";
      d[169]="BEAR";
      d[170]="BEAT";
      d[171]="BEAU";
      d[172]="BECK";
      d[173]="BED";
      d[174]="BEDS";
      d[175]="BEE";
      d[176]="BEEF";
      d[177]="BEEN";
      d[178]="BEEP";
      d[179]="BEER";
      d[180]="BEES";
      d[181]="BEET";
      d[182]="BEG";
      d[183]="BEGS";
      d[184]="BELL";
      d[185]="BELT";
      d[186]="BELY";
      d[187]="BEND";
      d[188]="BENT";
      d[189]="BEST";
      d[190]="BET";
      d[191]="BETA";
      d[192]="BETS";
      d[193]="BEVY";
      d[194]="BIAS";
      d[195]="BIB";
      d[196]="BIBS";
      d[197]="BID";
      d[198]="BIDE";
      d[199]="BIDS";
      d[200]="BIER";
      d[201]="BIG";
      d[202]="BIKE";
      d[203]="BILE";
      d[204]="BILK";
      d[205]="BILL";
      d[206]="BIN";
      d[207]="BIND";
      d[208]="BING";
      d[209]="BINS";
      d[210]="BIRD";
      d[211]="BIT";
      d[212]="BITE";
      d[213]="BITS";
      d[214]="BLAB";
      d[215]="BLED";
      d[216]="BLEW";
      d[217]="BLIP";
      d[218]="BLOB";
      d[219]="BLOC";
      d[220]="BLOT";
      d[221]="BLOW";
      d[222]="BLUE";
      d[223]="BLUR";
      d[224]="BOA";
      d[225]="BOAR";
      d[226]="BOAT";
      d[227]="BOB";
      d[228]="BOBS";
      d[229]="BODE";
      d[230]="BODY";
      d[231]="BOG";
      d[232]="BOGS";
      d[233]="BOIL";
      d[234]="BOLD";
      d[235]="BOLL";
      d[236]="BOLT";
      d[237]="BOMB";
      d[238]="BOND";
      d[239]="BONE";
      d[240]="BONG";
      d[241]="BONY";
      d[242]="BOO";
      d[243]="BOOB";
      d[244]="BOOK";
      d[245]="BOOM";
      d[246]="BOON";
      d[247]="BOOR";
      d[248]="BOOS";
      d[249]="BOOT";
      d[250]="BORE";
      d[251]="BORN";
      d[252]="BOSS";
      d[253]="BOTH";
      d[254]="BOUT";
      d[255]="BOW";
      d[256]="BOWL";
      d[257]="BOWS";
      d[258]="BOX";
      d[259]="BOY";
      d[260]="BOYS";
      d[261]="BRA";
      d[262]="BRAE";
      d[263]="BRAG";
      d[264]="BRAN";
      d[265]="BRAS";
      d[266]="BRAT";
      d[267]="BRAY";
      d[268]="BRED";
      d[269]="BREW";
      d[270]="BRIG";
      d[271]="BRIM";
      d[272]="BROW";
      d[273]="BUCK";
      d[274]="BUD";
      d[275]="BUDS";
      d[276]="BUFF";
      d[277]="BUG";
      d[278]="BUGS";
      d[279]="BULB";
      d[280]="BULK";
      d[281]="BULL";
      d[282]="BUM";
      d[283]="BUMP";
      d[284]="BUMS";
      d[285]="BUN";
      d[286]="BUNK";
      d[287]="BUNS";
      d[288]="BUNT";
      d[289]="BUOY";
      d[290]="BURL";
      d[291]="BURN";
      d[292]="BURP";
      d[293]="BURY";
      d[294]="BUS";
      d[295]="BUSH";
      d[296]="BUSS";
      d[297]="BUST";
      d[298]="BUSY";
      d[299]="BUT";
      d[300]="BUTT";
      d[301]="BUY";
      d[302]="BUYS";
      d[303]="BUZZ";
      d[304]="BY";
      d[305]="BYE";
      d[306]="BYTE";
      d[307]="CAB";
      d[308]="CABS";
      d[309]="CAFE";
      d[310]="CAGE";
      d[311]="CAKE";
      d[312]="CALF";
      d[313]="CALL";
      d[314]="CALM";
      d[315]="CAM";
      d[316]="CAME";
      d[317]="CAMP";
      d[318]="CAN";
      d[319]="CANE";
      d[320]="CANS";
      d[321]="CANT";
      d[322]="CAP";
      d[323]="CAPE";
      d[324]="CAPS";
      d[325]="CAR";
      d[326]="CARD";
      d[327]="CARE";
      d[328]="CARP";
      d[329]="CARS";
      d[330]="CART";
      d[331]="CASE";
      d[332]="CASH";
      d[333]="CASK";
      d[334]="CAST";
      d[335]="CAT";
      d[336]="CATS";
      d[337]="CAVE";
      d[338]="CAW";
      d[339]="CEDE";
      d[340]="CELL";
      d[341]="CENT";
      d[342]="CHAP";
      d[343]="CHAR";
      d[344]="CHAT";
      d[345]="CHEF";
      d[346]="CHEW";
      d[347]="CHIC";
      d[348]="CHIN";
      d[349]="CHIP";
      d[350]="CHIT";
      d[351]="CHOP";
      d[352]="CHUM";
      d[353]="CITE";
      d[354]="CITY";
      d[355]="CLAD";
      d[356]="CLAM";
      d[357]="CLAN";
      d[358]="CLAP";
      d[359]="CLAW";
      d[360]="CLAY";
      d[361]="CLIP";
      d[362]="CLOD";
      d[363]="CLOG";
      d[364]="CLOT";
      d[365]="CLUB";
      d[366]="CLUE";
      d[367]="COAL";
      d[368]="COAT";
      d[369]="COAX";
      d[370]="COCA";
      d[371]="COCK";
      d[372]="COCO";
      d[373]="COD";
      d[374]="CODE";
      d[375]="COED";
      d[376]="COG";
      d[377]="COGS";
      d[378]="COIL";
      d[379]="COIN";
      d[380]="COKE";
      d[381]="COLD";
      d[382]="COLT";
      d[383]="COMB";
      d[384]="COME";
      d[385]="CON";
      d[386]="CONE";
      d[387]="COO";
      d[388]="COOK";
      d[389]="COOL";
      d[390]="COON";
      d[391]="COOP";
      d[392]="COP";
      d[393]="COPE";
      d[394]="COPS";
      d[395]="COPY";
      d[396]="CORD";
      d[397]="CORE";
      d[398]="CORK";
      d[399]="CORN";
      d[400]="COST";
      d[401]="COSY";
      d[402]="COT";
      d[403]="COTS";
      d[404]="COVE";
      d[405]="COW";
      d[406]="COWL";
      d[407]="COWS";
      d[408]="COZY";
      d[409]="CRAB";
      d[410]="CRAG";
      d[411]="CRAM";
      d[412]="CREW";
      d[413]="CRIB";
      d[414]="CROP";
      d[415]="CROW";
      d[416]="CRUD";
      d[417]="CRUX";
      d[418]="CRY";
      d[419]="CUB";
      d[420]="CUBE";
      d[421]="CUBS";
      d[422]="CUE";
      d[423]="CUED";
      d[424]="CUES";
      d[425]="CUFF";
      d[426]="CULL";
      d[427]="CULT";
      d[428]="CUP";
      d[429]="CUPS";
      d[430]="CURB";
      d[431]="CURD";
      d[432]="CURE";
      d[433]="CURL";
      d[434]="CURS";
      d[435]="CURT";
      d[436]="CUSP";
      d[437]="CUT";
      d[438]="CUTE";
      d[439]="CUTS";
      d[440]="CYST";
      d[441]="CZAR";
      d[442]="DAD";
      d[443]="DADS";
      d[444]="DALE";
      d[445]="DAM";
      d[446]="DAME";
      d[447]="DAMN";
      d[448]="DAMP";
      d[449]="DAMS";
      d[450]="DARE";
      d[451]="DARK";
      d[452]="DARN";
      d[453]="DART";
      d[454]="DASH";
      d[455]="DATA";
      d[456]="DATE";
      d[457]="DAWN";
      d[458]="DAY";
      d[459]="DAYS";
      d[460]="DAZE";
      d[461]="DEAD";
      d[462]="DEAF";
      d[463]="DEAL";
      d[464]="DEAN";
      d[465]="DEAR";
      d[466]="DEBT";
      d[467]="DECK";
      d[468]="DEED";
      d[469]="DEEM";
      d[470]="DEEP";
      d[471]="DEER";
      d[472]="DEFY";
      d[473]="DELL";
      d[474]="DEMO";
      d[475]="DEN";
      d[476]="DENS";
      d[477]="DENT";
      d[478]="DENY";
      d[479]="DESK";
      d[480]="DEUS";
      d[481]="DEW";
      d[482]="DEWY";
      d[483]="DIAL";
      d[484]="DICE";
      d[485]="DID";
      d[486]="DIE";
      d[487]="DIED";
      d[488]="DIEM";
      d[489]="DIES";
      d[490]="DIET";
      d[491]="DIG";
      d[492]="DIGS";
      d[493]="DIKE";
      d[494]="DILL";
      d[495]="DIM";
      d[496]="DIME";
      d[497]="DIMS";
      d[498]="DIN";
      d[499]="DINE";
      d[500]="DING";
      d[501]="DINT";
      d[502]="DIP";
      d[503]="DIPS";
      d[504]="DIRE";
      d[505]="DIRT";
      d[506]="DISC";
      d[507]="DISH";
      d[508]="DISK";
      d[509]="DIVE";
      d[510]="DO";
      d[511]="DOCK";
      d[512]="DOE";
      d[513]="DOER";
      d[514]="DOES";
      d[515]="DOG";
      d[516]="DOGS";
      d[517]="DOLE";
      d[518]="DOLL";
      d[519]="DOME";
      d[520]="DON";
      d[521]="DONE";
      d[522]="DONS";
      d[523]="DOOM";
      d[524]="DOOR";
      d[525]="DOPE";
      d[526]="DOSE";
      d[527]="DOT";
      d[528]="DOTE";
      d[529]="DOTS";
      d[530]="DOVE";
      d[531]="DOWN";
      d[532]="DOZE";
      d[533]="DRAB";
      d[534]="DRAG";
      d[535]="DRAM";
      d[536]="DRAW";
      d[537]="DREW";
      d[538]="DRIP";
      d[539]="DROP";
      d[540]="DRUG";
      d[541]="DRUM";
      d[542]="DRY";
      d[543]="DUAL";
      d[544]="DUB";
      d[545]="DUBS";
      d[546]="DUCK";
      d[547]="DUCT";
      d[548]="DUD";
      d[549]="DUE";
      d[550]="DUEL";
      d[551]="DUES";
      d[552]="DUET";
      d[553]="DUG";
      d[554]="DUKE";
      d[555]="DULL";
      d[556]="DULY";
      d[557]="DUMB";
      d[558]="DUMP";
      d[559]="DUNE";
      d[560]="DUNG";
      d[561]="DUNK";
      d[562]="DUPE";
      d[563]="DUSK";
      d[564]="DUST";
      d[565]="DUTY";
      d[566]="DYAD";
      d[567]="DYE";
      d[568]="DYED";
      d[569]="DYER";
      d[570]="DYES";
      d[571]="DYNE";
      d[572]="EACH";
      d[573]="EAR";
      d[574]="EARL";
      d[575]="EARN";
      d[576]="EARS";
      d[577]="EASE";
      d[578]="EAST";
      d[579]="EASY";
      d[580]="EAT";
      d[581]="EATS";
      d[582]="EBB";
      d[583]="EBBS";
      d[584]="ECHO";
      d[585]="EDDY";
      d[586]="EDGE";
      d[587]="EDIT";
      d[588]="EEL";
      d[589]="EELS";
      d[590]="EGG";
      d[591]="EGGS";
      d[592]="EGO";
      d[593]="EGOS";
      d[594]="EKE";
      d[595]="EKED";
      d[596]="EKES";
      d[597]="ELF";
      d[598]="ELK";
      d[599]="ELKS";
      d[600]="ELM";
      d[601]="ELMS";
      d[602]="ELSE";
      d[603]="EM";
      d[604]="EMIT";
      d[605]="EN";
      d[606]="END";
      d[607]="ENDS";
      d[608]="ENVY";
      d[609]="EPIC";
      d[610]="ERA";
      d[611]="ERAS";
      d[612]="ERE";
      d[613]="ERG";
      d[614]="ERGO";
      d[615]="ERR";
      d[616]="ERRS";
      d[617]="ESPY";
      d[618]="ET";
      d[619]="ETCH";
      d[620]="EVEN";
      d[621]="EVER";
      d[622]="EVIL";
      d[623]="EWE";
      d[624]="EWES";
      d[625]="EX";
      d[626]="EXAM";
      d[627]="EXEC";
      d[628]="EXIT";
      d[629]="EYE";
      d[630]="EYED";
      d[631]="EYER";
      d[632]="EYES";
      d[633]="FACE";
      d[634]="FACT";
      d[635]="FADE";
      d[636]="FAG";
      d[637]="FAGS";
      d[638]="FAIL";
      d[639]="FAIN";
      d[640]="FAIR";
      d[641]="FAKE";
      d[642]="FALL";
      d[643]="FAME";
      d[644]="FAN";
      d[645]="FANG";
      d[646]="FANS";
      d[647]="FAR";
      d[648]="FARE";
      d[649]="FARM";
      d[650]="FAST";
      d[651]="FAT";
      d[652]="FATE";
      d[653]="FATS";
      d[654]="FAUN";
      d[655]="FAWN";
      d[656]="FAZE";
      d[657]="FEAR";
      d[658]="FEAT";
      d[659]="FED";
      d[660]="FEE";
      d[661]="FEED";
      d[662]="FEEL";
      d[663]="FEES";
      d[664]="FEET";
      d[665]="FELL";
      d[666]="FELT";
      d[667]="FEN";
      d[668]="FEND";
      d[669]="FERN";
      d[670]="FEUD";
      d[671]="FEW";
      d[672]="FIAT";
      d[673]="FIB";
      d[674]="FIEF";
      d[675]="FIFE";
      d[676]="FIG";
      d[677]="FIGS";
      d[678]="FILE";
      d[679]="FILL";
      d[680]="FILM";
      d[681]="FIN";
      d[682]="FIND";
      d[683]="FINE";
      d[684]="FINK";
      d[685]="FINS";
      d[686]="FIR";
      d[687]="FIRE";
      d[688]="FIRM";
      d[689]="FISH";
      d[690]="FIST";
      d[691]="FIT";
      d[692]="FITS";
      d[693]="FIVE";
      d[694]="FIX";
      d[695]="FLAG";
      d[696]="FLAK";
      d[697]="FLAM";
      d[698]="FLAP";
      d[699]="FLAT";
      d[700]="FLAW";
      d[701]="FLAX";
      d[702]="FLEA";
      d[703]="FLED";
      d[704]="FLEE";
      d[705]="FLEW";
      d[706]="FLEX";
      d[707]="FLIP";
      d[708]="FLIT";
      d[709]="FLOG";
      d[710]="FLOP";
      d[711]="FLOW";
      d[712]="FLU";
      d[713]="FLUE";
      d[714]="FLUX";
      d[715]="FLY";
      d[716]="FOAL";
      d[717]="FOAM";
      d[718]="FOB";
      d[719]="FOCI";
      d[720]="FOE";
      d[721]="FOES";
      d[722]="FOG";
      d[723]="FOGS";
      d[724]="FOGY";
      d[725]="FOIL";
      d[726]="FOLD";
      d[727]="FOLK";
      d[728]="FOND";
      d[729]="FONT";
      d[730]="FOOD";
      d[731]="FOOL";
      d[732]="FOOT";
      d[733]="FOR";
      d[734]="FORD";
      d[735]="FORE";
      d[736]="FORK";
      d[737]="FORM";
      d[738]="FORT";
      d[739]="FOUL";
      d[740]="FOUR";
      d[741]="FOWL";
      d[742]="FOX";
      d[743]="FRAY";
      d[744]="FREE";
      d[745]="FRET";
      d[746]="FRO";
      d[747]="FROG";
      d[748]="FROM";
      d[749]="FRY";
      d[750]="FUEL";
      d[751]="FULL";
      d[752]="FUME";
      d[753]="FUN";
      d[754]="FUND";
      d[755]="FUNK";
      d[756]="FUR";
      d[757]="FURS";
      d[758]="FURY";
      d[759]="FUSE";
      d[760]="FUSS";
      d[761]="FUZZ";
      d[762]="GAB";
      d[763]="GAD";
      d[764]="GAG";
      d[765]="GAGS";
      d[766]="GAIN";
      d[767]="GAIT";
      d[768]="GALE";
      d[769]="GALL";
      d[770]="GAME";
      d[771]="GANG";
      d[772]="GAP";
      d[773]="GAPE";
      d[774]="GAPS";
      d[775]="GARB";
      d[776]="GAS";
      d[777]="GASH";
      d[778]="GASP";
      d[779]="GATE";
      d[780]="GAVE";
      d[781]="GAWK";
      d[782]="GAY";
      d[783]="GAZE";
      d[784]="GEAR";
      d[785]="GEL";
      d[786]="GELD";
      d[787]="GELS";
      d[788]="GEM";
      d[789]="GEMS";
      d[790]="GENE";
      d[791]="GENT";
      d[792]="GERM";
      d[793]="GET";
      d[794]="GETS";
      d[795]="GIFT";
      d[796]="GIG";
      d[797]="GILD";
      d[798]="GILL";
      d[799]="GILT";
      d[800]="GIN";
      d[801]="GINS";
      d[802]="GIRD";
      d[803]="GIRL";
      d[804]="GIRT";
      d[805]="GIST";
      d[806]="GIVE";
      d[807]="GLAD";
      d[808]="GLEE";
      d[809]="GLEN";
      d[810]="GLOW";
      d[811]="GLUE";
      d[812]="GLUT";
      d[813]="GNAT";
      d[814]="GNAW";
      d[815]="GNU";
      d[816]="GO";
      d[817]="GOAD";
      d[818]="GOAL";
      d[819]="GOAT";
      d[820]="GOD";
      d[821]="GODS";
      d[822]="GOES";
      d[823]="GOLD";
      d[824]="GOLF";
      d[825]="GONE";
      d[826]="GONG";
      d[827]="GOOD";
      d[828]="GOOF";
      d[829]="GORE";
      d[830]="GORY";
      d[831]="GOSH";
      d[832]="GOT";
      d[833]="GOUT";
      d[834]="GOWN";
      d[835]="GRAB";
      d[836]="GRAD";
      d[837]="GRAM";
      d[838]="GRAY";
      d[839]="GREW";
      d[840]="GREY";
      d[841]="GRID";
      d[842]="GRIM";
      d[843]="GRIN";
      d[844]="GRIP";
      d[845]="GRIT";
      d[846]="GROW";
      d[847]="GRUB";
      d[848]="GULF";
      d[849]="GULL";
      d[850]="GULP";
      d[851]="GUM";
      d[852]="GUMS";
      d[853]="GUN";
      d[854]="GUNS";
      d[855]="GURU";
      d[856]="GUSH";
      d[857]="GUST";
      d[858]="GUT";
      d[859]="GUTS";
      d[860]="GUY";
      d[861]="GUYS";
      d[862]="GYRO";
      d[863]="HA";
      d[864]="HACK";
      d[865]="HAD";
      d[866]="HAG";
      d[867]="HAIL";
      d[868]="HAIR";
      d[869]="HALE";
      d[870]="HALF";
      d[871]="HALL";
      d[872]="HALT";
      d[873]="HAM";
      d[874]="HAMS";
      d[875]="HAND";
      d[876]="HANG";
      d[877]="HAP";
      d[878]="HARD";
      d[879]="HARE";
      d[880]="HARK";
      d[881]="HARM";
      d[882]="HARP";
      d[883]="HART";
      d[884]="HAS";
      d[885]="HASH";
      d[886]="HAT";
      d[887]="HATE";
      d[888]="HATS";
      d[889]="HAUL";
      d[890]="HAVE";
      d[891]="HAWK";
      d[892]="HAY";
      d[893]="HAZE";
      d[894]="HAZY";
      d[895]="HE";
      d[896]="HEAD";
      d[897]="HEAL";
      d[898]="HEAP";
      d[899]="HEAR";
      d[900]="HEAT";
      d[901]="HECK";
      d[902]="HEED";
      d[903]="HEEL";
      d[904]="HEIR";
      d[905]="HELD";
      d[906]="HELL";
      d[907]="HELM";
      d[908]="HELP";
      d[909]="HEM";
      d[910]="HEMP";
      d[911]="HEMS";
      d[912]="HEN";
      d[913]="HENS";
      d[914]="HER";
      d[915]="HERB";
      d[916]="HERD";
      d[917]="HERE";
      d[918]="HERO";
      d[919]="HERS";
      d[920]="HEW";
      d[921]="HEWS";
      d[922]="HEX";
      d[923]="HEY";
      d[924]="HI";
      d[925]="HICK";
      d[926]="HID";
      d[927]="HIDE";
      d[928]="HIGH";
      d[929]="HIKE";
      d[930]="HILL";
      d[931]="HILT";
      d[932]="HIM";
      d[933]="HIND";
      d[934]="HINT";
      d[935]="HIP";
      d[936]="HIPS";
      d[937]="HIRE";
      d[938]="HIS";
      d[939]="HISS";
      d[940]="HIT";
      d[941]="HITS";
      d[942]="HIVE";
      d[943]="HOAR";
      d[944]="HOE";
      d[945]="HOES";
      d[946]="HOG";
      d[947]="HOGS";
      d[948]="HOLD";
      d[949]="HOLE";
      d[950]="HOLY";
      d[951]="HOME";
      d[952]="HOMO";
      d[953]="HONE";
      d[954]="HOOD";
      d[955]="HOOF";
      d[956]="HOOK";
      d[957]="HOOP";
      d[958]="HOOT";
      d[959]="HOP";
      d[960]="HOPE";
      d[961]="HOPS";
      d[962]="HORN";
      d[963]="HOSE";
      d[964]="HOST";
      d[965]="HOT";
      d[966]="HOUR";
      d[967]="HOW";
      d[968]="HOWL";
      d[969]="HUB";
      d[970]="HUBS";
      d[971]="HUE";
      d[972]="HUES";
      d[973]="HUG";
      d[974]="HUGE";
      d[975]="HUH";
      d[976]="HULL";
      d[977]="HUM";
      d[978]="HUMP";
      d[979]="HUMS";
      d[980]="HUNG";
      d[981]="HUNK";
      d[982]="HUNT";
      d[983]="HURL";
      d[984]="HURT";
      d[985]="HUSH";
      d[986]="HUSK";
      d[987]="HUT";
      d[988]="HUTS";
      d[989]="HYMN";
      d[990]="IBEX";
      d[991]="IBID";
      d[992]="IBIS";
      d[993]="ICE";
      d[994]="ICED";
      d[995]="ICES";
      d[996]="ICON";
      d[997]="ICY";
      d[998]="IDEA";
      d[999]="IDEM";
      d[1000]="IDLE";
      d[1001]="IDLY";
      d[1002]="IDOL";
      d[1003]="IF";
      d[1004]="ILL";
      d[1005]="ILLS";
      d[1006]="ILLY";
      d[1007]="IMP";
      d[1008]="IMPS";
      d[1009]="IN";
      d[1010]="INCH";
      d[1011]="INK";
      d[1012]="INKS";
      d[1013]="INN";
      d[1014]="INNS";
      d[1015]="INTO";
      d[1016]="ION";
      d[1017]="IONS";
      d[1018]="IOTA";
      d[1019]="IRE";
      d[1020]="IRES";
      d[1021]="IRIS";
      d[1022]="IRK";
      d[1023]="IRKS";
      d[1024]="IRON";
      d[1025]="IS";
      d[1026]="ISLE";
      d[1027]="IT";
      d[1028]="ITCH";
      d[1029]="ITEM";
      d[1030]="ITS";
      d[1031]="IVY";
      d[1032]="JAB";
      d[1033]="JABS";
      d[1034]="JACK";
      d[1035]="JADE";
      d[1036]="JAIL";
      d[1037]="JAM";
      d[1038]="JAMS";
      d[1039]="JAR";
      d[1040]="JARS";
      d[1041]="JAW";
      d[1042]="JAWS";
      d[1043]="JAY";
      d[1044]="JAZZ";
      d[1045]="JEAN";
      d[1046]="JEEP";
      d[1047]="JEER";
      d[1048]="JERK";
      d[1049]="JEST";
      d[1050]="JET";
      d[1051]="JETS";
      d[1052]="JIG";
      d[1053]="JIGS";
      d[1054]="JOB";
      d[1055]="JOBS";
      d[1056]="JOG";
      d[1057]="JOGS";
      d[1058]="JOIN";
      d[1059]="JOKE";
      d[1060]="JOLT";
      d[1061]="JOT";
      d[1062]="JOTS";
      d[1063]="JOY";
      d[1064]="JOYS";
      d[1065]="JUDO";
      d[1066]="JUG";
      d[1067]="JUGS";
      d[1068]="JUMP";
      d[1069]="JUNK";
      d[1070]="JURE";
      d[1071]="JURY";
      d[1072]="JUST";
      d[1073]="JUT";
      d[1074]="KEEL";
      d[1075]="KEEN";
      d[1076]="KEEP";
      d[1077]="KEN";
      d[1078]="KEPT";
      d[1079]="KERN";
      d[1080]="KEY";
      d[1081]="KEYS";
      d[1082]="KICK";
      d[1083]="KID";
      d[1084]="KIDS";
      d[1085]="KILL";
      d[1086]="KIN";
      d[1087]="KIND";
      d[1088]="KING";
      d[1089]="KINK";
      d[1090]="KISS";
      d[1091]="KIT";
      d[1092]="KITE";
      d[1093]="KITS";
      d[1094]="KNEE";
      d[1095]="KNEW";
      d[1096]="KNIT";
      d[1097]="KNOB";
      d[1098]="KNOT";
      d[1099]="KNOW";
      d[1100]="KUDO";
      d[1101]="LAB";
      d[1102]="LABS";
      d[1103]="LACE";
      d[1104]="LACK";
      d[1105]="LACY";
      d[1106]="LAD";
      d[1107]="LADS";
      d[1108]="LADY";
      d[1109]="LAG";
      d[1110]="LAGS";
      d[1111]="LAID";
      d[1112]="LAIN";
      d[1113]="LAIR";
      d[1114]="LAKE";
      d[1115]="LAMB";
      d[1116]="LAME";
      d[1117]="LAMP";
      d[1118]="LAND";
      d[1119]="LANE";
      d[1120]="LAP";
      d[1121]="LAPS";
      d[1122]="LARD";
      d[1123]="LARK";
      d[1124]="LASH";
      d[1125]="LASS";
      d[1126]="LAST";
      d[1127]="LATE";
      d[1128]="LAVA";
      d[1129]="LAW";
      d[1130]="LAWN";
      d[1131]="LAWS";
      d[1132]="LAX";
      d[1133]="LAY";
      d[1134]="LAYS";
      d[1135]="LAZY";
      d[1136]="LEAD";
      d[1137]="LEAF";
      d[1138]="LEAK";
      d[1139]="LEAN";
      d[1140]="LEAP";
      d[1141]="LED";
      d[1142]="LEE";
      d[1143]="LEEK";
      d[1144]="LEER";
      d[1145]="LEES";
      d[1146]="LEFT";
      d[1147]="LEG";
      d[1148]="LEGS";
      d[1149]="LEND";
      d[1150]="LENS";
      d[1151]="LENT";
      d[1152]="LESS";
      d[1153]="LEST";
      d[1154]="LET";
      d[1155]="LETS";
      d[1156]="LEVY";
      d[1157]="LEWD";
      d[1158]="LIAR";
      d[1159]="LICE";
      d[1160]="LICK";
      d[1161]="LID";
      d[1162]="LIDS";
      d[1163]="LIE";
      d[1164]="LIED";
      d[1165]="LIEN";
      d[1166]="LIES";
      d[1167]="LIEU";
      d[1168]="LIFE";
      d[1169]="LIFT";
      d[1170]="LIKE";
      d[1171]="LILY";
      d[1172]="LIMB";
      d[1173]="LIME";
      d[1174]="LIMP";
      d[1175]="LINE";
      d[1176]="LINK";
      d[1177]="LINT";
      d[1178]="LION";
      d[1179]="LIP";
      d[1180]="LIPS";
      d[1181]="LISP";
      d[1182]="LIST";
      d[1183]="LIT";
      d[1184]="LIVE";
      d[1185]="LOAD";
      d[1186]="LOAF";
      d[1187]="LOAN";
      d[1188]="LOBE";
      d[1189]="LOCI";
      d[1190]="LOCK";
      d[1191]="LOFT";
      d[1192]="LOGO";
      d[1193]="LOGS";
      d[1194]="LOIN";
      d[1195]="LONE";
      d[1196]="LONG";
      d[1197]="LOOK";
      d[1198]="LOOM";
      d[1199]="LOON";
      d[1200]="LOOP";
      d[1201]="LOOT";
      d[1202]="LORD";
      d[1203]="LORE";
      d[1204]="LOSE";
      d[1205]="LOSS";
      d[1206]="LOST";
      d[1207]="LOT";
      d[1208]="LOTS";
      d[1209]="LOUD";
      d[1210]="LOUT";
      d[1211]="LOVE";
      d[1212]="LOW";
      d[1213]="LOWS";
      d[1214]="LUCK";
      d[1215]="LULL";
      d[1216]="LUMP";
      d[1217]="LUNG";
      d[1218]="LURE";
      d[1219]="LURK";
      d[1220]="LUSH";
      d[1221]="LUST";
      d[1222]="LUTE";
      d[1223]="LYNX";
      d[1224]="LYRE";
      d[1225]="MACE";
      d[1226]="MAD";
      d[1227]="MADE";
      d[1228]="MAID";
      d[1229]="MAIL";
      d[1230]="MAIM";
      d[1231]="MAIN";
      d[1232]="MAKE";
      d[1233]="MALE";
      d[1234]="MALL";
      d[1235]="MALT";
      d[1236]="MAMA";
      d[1237]="MAN";
      d[1238]="MANE";
      d[1239]="MANY";
      d[1240]="MAP";
      d[1241]="MAPS";
      d[1242]="MARE";
      d[1243]="MARK";
      d[1244]="MART";
      d[1245]="MASH";
      d[1246]="MASK";
      d[1247]="MASS";
      d[1248]="MAST";
      d[1249]="MAT";
      d[1250]="MATE";
      d[1251]="MATH";
      d[1252]="MATS";
      d[1253]="MAUL";
      d[1254]="MAZE";
      d[1255]="ME";
      d[1256]="MEAD";
      d[1257]="MEAL";
      d[1258]="MEAN";
      d[1259]="MEAT";
      d[1260]="MEEK";
      d[1261]="MEET";
      d[1262]="MELT";
      d[1263]="MEMO";
      d[1264]="MEN";
      d[1265]="MEND";
      d[1266]="MENS";
      d[1267]="MENU";
      d[1268]="MERE";
      d[1269]="MESH";
      d[1270]="MESS";
      d[1271]="MET";
      d[1272]="META";
      d[1273]="METE";
      d[1274]="METS";
      d[1275]="MEW";
      d[1276]="MEWS";
      d[1277]="MICA";
      d[1278]="MICE";
      d[1279]="MID";
      d[1280]="MIEN";
      d[1281]="MIKE";
      d[1282]="MILD";
      d[1283]="MILE";
      d[1284]="MILK";
      d[1285]="MILL";
      d[1286]="MIND";
      d[1287]="MINE";
      d[1288]="MINI";
      d[1289]="MINK";
      d[1290]="MINT";
      d[1291]="MIRE";
      d[1292]="MISS";
      d[1293]="MIST";
      d[1294]="MIX";
      d[1295]="MOAN";
      d[1296]="MOAT";
      d[1297]="MOB";
      d[1298]="MOBS";
      d[1299]="MOCK";
      d[1300]="MODE";
      d[1301]="MOLD";
      d[1302]="MOLE";
      d[1303]="MONK";
      d[1304]="MOO";
      d[1305]="MOOD";
      d[1306]="MOOT";
      d[1307]="MOP";
      d[1308]="MOPS";
      d[1309]="MORE";
      d[1310]="MORN";
      d[1311]="MOSS";
      d[1312]="MOST";
      d[1313]="MOTH";
      d[1314]="MOVE";
      d[1315]="MOW";
      d[1316]="MOWS";
      d[1317]="MU";
      d[1318]="MUCH";
      d[1319]="MUCK";
      d[1320]="MUD";
      d[1321]="MUFF";
      d[1322]="MUG";
      d[1323]="MUGS";
      d[1324]="MULE";
      d[1325]="MULL";
      d[1326]="MUNG";
      d[1327]="MUSE";
      d[1328]="MUSH";
      d[1329]="MUSK";
      d[1330]="MUST";
      d[1331]="MUTE";
      d[1332]="MUTT";
      d[1333]="MY";
      d[1334]="MYTH";
      d[1335]="NAB";
      d[1336]="NAG";
      d[1337]="NAGS";
      d[1338]="NAIL";
      d[1339]="NAME";
      d[1340]="NAP";
      d[1341]="NAPS";
      d[1342]="NARY";
      d[1343]="NAVY";
      d[1344]="NAY";
      d[1345]="NEAR";
      d[1346]="NEAT";
      d[1347]="NECK";
      d[1348]="NEED";
      d[1349]="NEON";
      d[1350]="NEST";
      d[1351]="NET";
      d[1352]="NETS";
      d[1353]="NEW";
      d[1354]="NEWT";
      d[1355]="NEXT";
      d[1356]="NICE";
      d[1357]="NICK";
      d[1358]="NIGH";
      d[1359]="NIL";
      d[1360]="NINE";
      d[1361]="NIP";
      d[1362]="NIPS";
      d[1363]="NO";
      d[1364]="NOD";
      d[1365]="NODE";
      d[1366]="NODS";
      d[1367]="NON";
      d[1368]="NONE";
      d[1369]="NOOK";
      d[1370]="NOON";
      d[1371]="NOR";
      d[1372]="NORM";
      d[1373]="NOSE";
      d[1374]="NOT";
      d[1375]="NOTE";
      d[1376]="NOUN";
      d[1377]="NOW";
      d[1378]="NU";
      d[1379]="NUDE";
      d[1380]="NULL";
      d[1381]="NUMB";
      d[1382]="NUN";
      d[1383]="NUNS";
      d[1384]="NUT";
      d[1385]="NUTS";
      d[1386]="OAF";
      d[1387]="OAK";
      d[1388]="OAKS";
      d[1389]="OAR";
      d[1390]="OARS";
      d[1391]="OAT";
      d[1392]="OATH";
      d[1393]="OATS";
      d[1394]="OBEY";
      d[1395]="OBOE";
      d[1396]="ODD";
      d[1397]="ODDS";
      d[1398]="ODE";
      d[1399]="ODES";
      d[1400]="ODOR";
      d[1401]="OF";
      d[1402]="OFF";
      d[1403]="OFFS";
      d[1404]="OFT";
      d[1405]="OH";
      d[1406]="OHM";
      d[1407]="OIL";
      d[1408]="OILS";
      d[1409]="OILY";
      d[1410]="OKAY";
      d[1411]="OLD";
      d[1412]="OLDY";
      d[1413]="OMEN";
      d[1414]="OMIT";
      d[1415]="ON";
      d[1416]="ONCE";
      d[1417]="ONE";
      d[1418]="ONES";
      d[1419]="ONLY";
      d[1420]="ONTO";
      d[1421]="ONUS";
      d[1422]="ONYX";
      d[1423]="OOZE";
      d[1424]="OPAL";
      d[1425]="OPEN";
      d[1426]="OPT";
      d[1427]="OPTS";
      d[1428]="OPUS";
      d[1429]="OR";
      d[1430]="ORAL";
      d[1431]="ORB";
      d[1432]="ORE";
      d[1433]="ORES";
      d[1434]="ORGY";
      d[1435]="OUCH";
      d[1436]="OUR";
      d[1437]="OURS";
      d[1438]="OUST";
      d[1439]="OUT";
      d[1440]="OUTS";
      d[1441]="OVAL";
      d[1442]="OVEN";
      d[1443]="OVER";
      d[1444]="OWE";
      d[1445]="OWED";
      d[1446]="OWES";
      d[1447]="OWL";
      d[1448]="OWLS";
      d[1449]="OWN";
      d[1450]="OWNS";
      d[1451]="OX";
      d[1452]="OXEN";
      d[1453]="PACE";
      d[1454]="PACK";
      d[1455]="PACT";
      d[1456]="PAD";
      d[1457]="PADS";
      d[1458]="PAGE";
      d[1459]="PAID";
      d[1460]="PAIL";
      d[1461]="PAIN";
      d[1462]="PAIR";
      d[1463]="PAL";
      d[1464]="PALE";
      d[1465]="PALL";
      d[1466]="PALM";
      d[1467]="PALS";
      d[1468]="PAN";
      d[1469]="PANE";
      d[1470]="PANG";
      d[1471]="PANS";
      d[1472]="PANT";
      d[1473]="PAPA";
      d[1474]="PAR";
      d[1475]="PARE";
      d[1476]="PARK";
      d[1477]="PARS";
      d[1478]="PART";
      d[1479]="PASS";
      d[1480]="PAST";
      d[1481]="PAT";
      d[1482]="PATE";
      d[1483]="PATH";
      d[1484]="PATS";
      d[1485]="PAVE";
      d[1486]="PAW";
      d[1487]="PAWN";
      d[1488]="PAWS";
      d[1489]="PAY";
      d[1490]="PAYS";
      d[1491]="PEA";
      d[1492]="PEAK";
      d[1493]="PEAL";
      d[1494]="PEAR";
      d[1495]="PEAS";
      d[1496]="PEAT";
      d[1497]="PECK";
      d[1498]="PEEK";
      d[1499]="PEEL";
      d[1500]="PEEP";
      d[1501]="PEER";
      d[1502]="PEG";
      d[1503]="PEGS";
      d[1504]="PELT";
      d[1505]="PEN";
      d[1506]="PEND";
      d[1507]="PENS";
      d[1508]="PENT";
      d[1509]="PEP";
      d[1510]="PER";
      d[1511]="PERK";
      d[1512]="PEST";
      d[1513]="PET";
      d[1514]="PETS";
      d[1515]="PEW";
      d[1516]="PEWS";
      d[1517]="PHI";
      d[1518]="PI";
      d[1519]="PICA";
      d[1520]="PICK";
      d[1521]="PIE";
      d[1522]="PIER";
      d[1523]="PIES";
      d[1524]="PIG";
      d[1525]="PIGS";
      d[1526]="PIKE";
      d[1527]="PILE";
      d[1528]="PILL";
      d[1529]="PIMP";
      d[1530]="PIN";
      d[1531]="PINE";
      d[1532]="PING";
      d[1533]="PINK";
      d[1534]="PINS";
      d[1535]="PINT";
      d[1536]="PION";
      d[1537]="PIP";
      d[1538]="PIPE";
      d[1539]="PISS";
      d[1540]="PIT";
      d[1541]="PITH";
      d[1542]="PITS";
      d[1543]="PITY";
      d[1544]="PLAN";
      d[1545]="PLAY";
      d[1546]="PLEA";
      d[1547]="PLOD";
      d[1548]="PLOT";
      d[1549]="PLOW";
      d[1550]="PLOY";
      d[1551]="PLUG";
      d[1552]="PLUM";
      d[1553]="PLUS";
      d[1554]="PLY";
      d[1555]="POD";
      d[1556]="PODS";
      d[1557]="POEM";
      d[1558]="POET";
      d[1559]="POGO";
      d[1560]="POKE";
      d[1561]="POLE";
      d[1562]="POLL";
      d[1563]="POLO";
      d[1564]="POMP";
      d[1565]="POND";
      d[1566]="PONG";
      d[1567]="PONY";
      d[1568]="POOL";
      d[1569]="POOR";
      d[1570]="POP";
      d[1571]="POPS";
      d[1572]="PORE";
      d[1573]="PORK";
      d[1574]="PORT";
      d[1575]="POSE";
      d[1576]="POSH";
      d[1577]="POST";
      d[1578]="POT";
      d[1579]="POTS";
      d[1580]="POUR";
      d[1581]="POUT";
      d[1582]="POX";
      d[1583]="PRAY";
      d[1584]="PREP";
      d[1585]="PREY";
      d[1586]="PRIM";
      d[1587]="PRO";
      d[1588]="PROD";
      d[1589]="PROP";
      d[1590]="PROS";
      d[1591]="PROW";
      d[1592]="PRY";
      d[1593]="PUB";
      d[1594]="PUBS";
      d[1595]="PUFF";
      d[1596]="PUKE";
      d[1597]="PULL";
      d[1598]="PULP";
      d[1599]="PUMA";
      d[1600]="PUMP";
      d[1601]="PUN";
      d[1602]="PUNS";
      d[1603]="PUNT";
      d[1604]="PUNY";
      d[1605]="PUP";
      d[1606]="PUPA";
      d[1607]="PUPS";
      d[1608]="PURE";
      d[1609]="PURR";
      d[1610]="PUS";
      d[1611]="PUSH";
      d[1612]="PUSS";
      d[1613]="PUT";
      d[1614]="PUTS";
      d[1615]="PUTT";
      d[1616]="PYRE";
      d[1617]="QUA";
      d[1618]="QUAD";
      d[1619]="QUAY";
      d[1620]="QUIP";
      d[1621]="QUIT";
      d[1622]="QUIZ";
      d[1623]="QUO";
      d[1624]="RACE";
      d[1625]="RACK";
      d[1626]="RAFT";
      d[1627]="RAG";
      d[1628]="RAGE";
      d[1629]="RAGS";
      d[1630]="RAID";
      d[1631]="RAIL";
      d[1632]="RAIN";
      d[1633]="RAKE";
      d[1634]="RAM";
      d[1635]="RAMP";
      d[1636]="RAMS";
      d[1637]="RAN";
      d[1638]="RANG";
      d[1639]="RANK";
      d[1640]="RANT";
      d[1641]="RAP";
      d[1642]="RAPE";
      d[1643]="RAPS";
      d[1644]="RAPT";
      d[1645]="RARE";
      d[1646]="RASH";
      d[1647]="RASP";
      d[1648]="RAT";
      d[1649]="RATE";
      d[1650]="RATS";
      d[1651]="RAVE";
      d[1652]="RAW";
      d[1653]="RAY";
      d[1654]="RAYS";
      d[1655]="RAZE";
      d[1656]="RE";
      d[1657]="READ";
      d[1658]="REAL";
      d[1659]="REAM";
      d[1660]="REAP";
      d[1661]="REAR";
      d[1662]="RED";
      d[1663]="REDO";
      d[1664]="REDS";
      d[1665]="REED";
      d[1666]="REEF";
      d[1667]="REEL";
      d[1668]="REIN";
      d[1669]="RELY";
      d[1670]="REND";
      d[1671]="RENT";
      d[1672]="REST";
      d[1673]="RHO";
      d[1674]="RIB";
      d[1675]="RIBS";
      d[1676]="RICE";
      d[1677]="RICH";
      d[1678]="RID";
      d[1679]="RIDE";
      d[1680]="RIDS";
      d[1681]="RIFT";
      d[1682]="RIG";
      d[1683]="RIGS";
      d[1684]="RILL";
      d[1685]="RIM";
      d[1686]="RIME";
      d[1687]="RIMS";
      d[1688]="RIND";
      d[1689]="RING";
      d[1690]="RINK";
      d[1691]="RIOT";
      d[1692]="RIP";
      d[1693]="RIPE";
      d[1694]="RIPS";
      d[1695]="RISE";
      d[1696]="RISK";
      d[1697]="RITE";
      d[1698]="ROAD";
      d[1699]="ROAM";
      d[1700]="ROAR";
      d[1701]="ROB";
      d[1702]="ROBE";
      d[1703]="ROBS";
      d[1704]="ROCK";
      d[1705]="ROD";
      d[1706]="RODE";
      d[1707]="RODS";
      d[1708]="ROE";
      d[1709]="ROLE";
      d[1710]="ROLL";
      d[1711]="ROMP";
      d[1712]="ROOF";
      d[1713]="ROOK";
      d[1714]="ROOM";
      d[1715]="ROOT";
      d[1716]="ROPE";
      d[1717]="ROSY";
      d[1718]="ROT";
      d[1719]="ROTS";
      d[1720]="ROUT";
      d[1721]="ROVE";
      d[1722]="ROW";
      d[1723]="ROWS";
      d[1724]="RUB";
      d[1725]="RUBS";
      d[1726]="RUBY";
      d[1727]="RUDE";
      d[1728]="RUE";
      d[1729]="RUG";
      d[1730]="RUGS";
      d[1731]="RUIN";
      d[1732]="RULE";
      d[1733]="RUM";
      d[1734]="RUMP";
      d[1735]="RUN";
      d[1736]="RUNG";
      d[1737]="RUNS";
      d[1738]="RUNT";
      d[1739]="RUSH";
      d[1740]="RUST";
      d[1741]="RUT";
      d[1742]="RUTS";
      d[1743]="RYE";
      d[1744]="SACK";
      d[1745]="SAD";
      d[1746]="SAFE";
      d[1747]="SAG";
      d[1748]="SAGA";
      d[1749]="SAGE";
      d[1750]="SAGS";
      d[1751]="SAID";
      d[1752]="SAIL";
      d[1753]="SAKE";
      d[1754]="SALE";
      d[1755]="SALT";
      d[1756]="SAME";
      d[1757]="SAND";
      d[1758]="SANE";
      d[1759]="SANG";
      d[1760]="SANK";
      d[1761]="SAP";
      d[1762]="SAPS";
      d[1763]="SARI";
      d[1764]="SASH";
      d[1765]="SAT";
      d[1766]="SATE";
      d[1767]="SAVE";
      d[1768]="SAW";
      d[1769]="SAWS";
      d[1770]="SAX";
      d[1771]="SAY";
      d[1772]="SAYS";
      d[1773]="SCAB";
      d[1774]="SCAN";
      d[1775]="SCAR";
      d[1776]="SCOW";
      d[1777]="SCUD";
      d[1778]="SEA";
      d[1779]="SEAL";
      d[1780]="SEAM";
      d[1781]="SEAR";
      d[1782]="SEAS";
      d[1783]="SEAT";
      d[1784]="SECT";
      d[1785]="SEE";
      d[1786]="SEED";
      d[1787]="SEEK";
      d[1788]="SEEM";
      d[1789]="SEEN";
      d[1790]="SEEP";
      d[1791]="SEER";
      d[1792]="SEES";
      d[1793]="SELF";
      d[1794]="SELL";
      d[1795]="SEMI";
      d[1796]="SEND";
      d[1797]="SENT";
      d[1798]="SEPT";
      d[1799]="SERF";
      d[1800]="SET";
      d[1801]="SETS";
      d[1802]="SEW";
      d[1803]="SEWS";
      d[1804]="SEX";
      d[1805]="SEXY";
      d[1806]="SHAM";
      d[1807]="SHE";
      d[1808]="SHED";
      d[1809]="SHIN";
      d[1810]="SHIP";
      d[1811]="SHIT";
      d[1812]="SHOD";
      d[1813]="SHOE";
      d[1814]="SHOP";
      d[1815]="SHOT";
      d[1816]="SHOW";
      d[1817]="SHUN";
      d[1818]="SHUT";
      d[1819]="SHY";
      d[1820]="SICK";
      d[1821]="SIDE";
      d[1822]="SIFT";
      d[1823]="SIGH";
      d[1824]="SIGN";
      d[1825]="SILK";
      d[1826]="SILL";
      d[1827]="SILO";
      d[1828]="SILT";
      d[1829]="SINE";
      d[1830]="SING";
      d[1831]="SINK";
      d[1832]="SINS";
      d[1833]="SIP";
      d[1834]="SIPS";
      d[1835]="SIR";
      d[1836]="SIRE";
      d[1837]="SIRS";
      d[1838]="SIT";
      d[1839]="SITE";
      d[1840]="SITS";
      d[1841]="SITU";
      d[1842]="SIX";
      d[1843]="SIZE";
      d[1844]="SKEW";
      d[1845]="SKI";
      d[1846]="SKID";
      d[1847]="SKIM";
      d[1848]="SKIN";
      d[1849]="SKIP";
      d[1850]="SKIS";
      d[1851]="SKIT";
      d[1852]="SKY";
      d[1853]="SLAB";
      d[1854]="SLAM";
      d[1855]="SLAP";
      d[1856]="SLAT";
      d[1857]="SLAY";
      d[1858]="SLED";
      d[1859]="SLEW";
      d[1860]="SLID";
      d[1861]="SLIM";
      d[1862]="SLIP";
      d[1863]="SLIT";
      d[1864]="SLOB";
      d[1865]="SLOP";
      d[1866]="SLOT";
      d[1867]="SLOW";
      d[1868]="SLUG";
      d[1869]="SLUM";
      d[1870]="SLUR";
      d[1871]="SLY";
      d[1872]="SMOG";
      d[1873]="SMUG";
      d[1874]="SMUT";
      d[1875]="SNAG";
      d[1876]="SNAP";
      d[1877]="SNIP";
      d[1878]="SNOB";
      d[1879]="SNOW";
      d[1880]="SNUB";
      d[1881]="SNUG";
      d[1882]="SO";
      d[1883]="SOAK";
      d[1884]="SOAP";
      d[1885]="SOAR";
      d[1886]="SOB";
      d[1887]="SOBS";
      d[1888]="SOCK";
      d[1889]="SOD";
      d[1890]="SODA";
      d[1891]="SODS";
      d[1892]="SOFA";
      d[1893]="SOFT";
      d[1894]="SOIL";
      d[1895]="SOLD";
      d[1896]="SOLE";
      d[1897]="SOLO";
      d[1898]="SOME";
      d[1899]="SON";
      d[1900]="SONG";
      d[1901]="SONS";
      d[1902]="SOON";
      d[1903]="SOOT";
      d[1904]="SORE";
      d[1905]="SORT";
      d[1906]="SOUL";
      d[1907]="SOUP";
      d[1908]="SOUR";
      d[1909]="SOW";
      d[1910]="SOWN";
      d[1911]="SOY";
      d[1912]="SOYA";
      d[1913]="SPA";
      d[1914]="SPAN";
      d[1915]="SPAT";
      d[1916]="SPEC";
      d[1917]="SPED";
      d[1918]="SPIN";
      d[1919]="SPIT";
      d[1920]="SPOT";
      d[1921]="SPUN";
      d[1922]="SPUR";
      d[1923]="SPY";
      d[1924]="STAB";
      d[1925]="STAG";
      d[1926]="STAR";
      d[1927]="STAY";
      d[1928]="STEM";
      d[1929]="STEP";
      d[1930]="STEW";
      d[1931]="STIR";
      d[1932]="STOP";
      d[1933]="STOW";
      d[1934]="STUB";
      d[1935]="STUD";
      d[1936]="STUN";
      d[1937]="SUB";
      d[1938]="SUBS";
      d[1939]="SUCH";
      d[1940]="SUCK";
      d[1941]="SUDS";
      d[1942]="SUE";
      d[1943]="SUED";
      d[1944]="SUES";
      d[1945]="SUIT";
      d[1946]="SULK";
      d[1947]="SUM";
      d[1948]="SUMS";
      d[1949]="SUN";
      d[1950]="SUNG";
      d[1951]="SUNK";
      d[1952]="SUNS";
      d[1953]="SURE";
      d[1954]="SURF";
      d[1955]="SWAB";
      d[1956]="SWAM";
      d[1957]="SWAN";
      d[1958]="SWAP";
      d[1959]="SWAT";
      d[1960]="SWAY";
      d[1961]="SWIM";
      d[1962]="SWUM";
      d[1963]="TAB";
      d[1964]="TABS";
      d[1965]="TACK";
      d[1966]="TACT";
      d[1967]="TAG";
      d[1968]="TAGS";
      d[1969]="TAIL";
      d[1970]="TAKE";
      d[1971]="TALE";
      d[1972]="TALK";
      d[1973]="TALL";
      d[1974]="TAME";
      d[1975]="TAN";
      d[1976]="TANG";
      d[1977]="TANK";
      d[1978]="TAP";
      d[1979]="TAPE";
      d[1980]="TAPS";
      d[1981]="TAR";
      d[1982]="TART";
      d[1983]="TASK";
      d[1984]="TAU";
      d[1985]="TAUT";
      d[1986]="TAX";
      d[1987]="TAXI";
      d[1988]="TEA";
      d[1989]="TEAM";
      d[1990]="TEAR";
      d[1991]="TEAS";
      d[1992]="TEEM";
      d[1993]="TEEN";
      d[1994]="TELL";
      d[1995]="TEN";
      d[1996]="TEND";
      d[1997]="TENS";
      d[1998]="TENT";
      d[1999]="TERM";
      d[2000]="TEST";
      d[2001]="TEXT";
      d[2002]="THAN";
      d[2003]="THAT";
      d[2004]="THAW";
      d[2005]="THE";
      d[2006]="THEM";
      d[2007]="THEN";
      d[2008]="THEY";
      d[2009]="THIN";
      d[2010]="THIS";
      d[2011]="THUD";
      d[2012]="THUG";
      d[2013]="THUS";
      d[2014]="TICK";
      d[2015]="TIDE";
      d[2016]="TIDY";
      d[2017]="TIE";
      d[2018]="TIED";
      d[2019]="TIER";
      d[2020]="TIES";
      d[2021]="TILE";
      d[2022]="TILL";
      d[2023]="TILT";
      d[2024]="TIME";
      d[2025]="TIN";
      d[2026]="TINS";
      d[2027]="TINT";
      d[2028]="TINY";
      d[2029]="TIP";
      d[2030]="TIPS";
      d[2031]="TIRE";
      d[2032]="TIT";
      d[2033]="TITS";
      d[2034]="TO";
      d[2035]="TOAD";
      d[2036]="TOE";
      d[2037]="TOES";
      d[2038]="TOIL";
      d[2039]="TOLD";
      d[2040]="TOLL";
      d[2041]="TOMB";
      d[2042]="TON";
      d[2043]="TONE";
      d[2044]="TONS";
      d[2045]="TOO";
      d[2046]="TOOK";
      d[2047]="TOOL";
      d[2048]="TOP";
      d[2049]="TOPS";
      d[2050]="TORE";
      d[2051]="TORN";
      d[2052]="TOSS";
      d[2053]="TOUR";
      d[2054]="TOW";
      d[2055]="TOWN";
      d[2056]="TOY";
      d[2057]="TOYS";
      d[2058]="TRAP";
      d[2059]="TRAY";
      d[2060]="TREE";
      d[2061]="TREK";
      d[2062]="TRIM";
      d[2063]="TRIO";
      d[2064]="TRIP";
      d[2065]="TROD";
      d[2066]="TROT";
      d[2067]="TRUE";
      d[2068]="TRY";
      d[2069]="TUB";
      d[2070]="TUBE";
      d[2071]="TUBS";
      d[2072]="TUCK";
      d[2073]="TUFT";
      d[2074]="TUG";
      d[2075]="TUGS";
      d[2076]="TUNE";
      d[2077]="TURF";
      d[2078]="TURN";
      d[2079]="TWAS";
      d[2080]="TWIG";
      d[2081]="TWIN";
      d[2082]="TWO";
      d[2083]="TWOS";
      d[2084]="TYPE";
      d[2085]="TYPO";
      d[2086]="UGH";
      d[2087]="UGLY";
      d[2088]="UNDO";
      d[2089]="UNIT";
      d[2090]="UNTO";
      d[2091]="UP";
      d[2092]="UPON";
      d[2093]="URGE";
      d[2094]="URN";
      d[2095]="URNS";
      d[2096]="US";
      d[2097]="USE";
      d[2098]="USED";
      d[2099]="USER";
      d[2100]="USES";
      d[2101]="VAIN";
      d[2102]="VALE";
      d[2103]="VAN";
      d[2104]="VANE";
      d[2105]="VANS";
      d[2106]="VARY";
      d[2107]="VASE";
      d[2108]="VAST";
      d[2109]="VAT";
      d[2110]="VATS";
      d[2111]="VEAL";
      d[2112]="VEER";
      d[2113]="VEIL";
      d[2114]="VEIN";
      d[2115]="VENT";
      d[2116]="VERB";
      d[2117]="VERY";
      d[2118]="VEST";
      d[2119]="VETO";
      d[2120]="VEX";
      d[2121]="VIA";
      d[2122]="VIAL";
      d[2123]="VICE";
      d[2124]="VIE";
      d[2125]="VIED";
      d[2126]="VIER";
      d[2127]="VIES";
      d[2128]="VIEW";
      d[2129]="VILE";
      d[2130]="VINE";
      d[2131]="VISA";
      d[2132]="VITA";
      d[2133]="VOID";
      d[2134]="VOLT";
      d[2135]="VOTE";
      d[2136]="VOW";
      d[2137]="VOWS";
      d[2138]="WADE";
      d[2139]="WAFT";
      d[2140]="WAG";
      d[2141]="WAGE";
      d[2142]="WAGS";
      d[2143]="WAIL";
      d[2144]="WAIT";
      d[2145]="WAKE";
      d[2146]="WALK";
      d[2147]="WALL";
      d[2148]="WAN";
      d[2149]="WAND";
      d[2150]="WANE";
      d[2151]="WANT";
      d[2152]="WAR";
      d[2153]="WARD";
      d[2154]="WARE";
      d[2155]="WARM";
      d[2156]="WARN";
      d[2157]="WARP";
      d[2158]="WARS";
      d[2159]="WART";
      d[2160]="WARY";
      d[2161]="WAS";
      d[2162]="WASH";
      d[2163]="WASP";
      d[2164]="WAVE";
      d[2165]="WAX";
      d[2166]="WAXY";
      d[2167]="WAY";
      d[2168]="WAYS";
      d[2169]="WE";
      d[2170]="WEAK";
      d[2171]="WEAN";
      d[2172]="WEAR";
      d[2173]="WEB";
      d[2174]="WEBS";
      d[2175]="WEDS";
      d[2176]="WEE";
      d[2177]="WEED";
      d[2178]="WEEK";
      d[2179]="WEEP";
      d[2180]="WELD";
      d[2181]="WELL";
      d[2182]="WENT";
      d[2183]="WEPT";
      d[2184]="WERE";
      d[2185]="WEST";
      d[2186]="WET";
      d[2187]="WETS";
      d[2188]="WHAT";
      d[2189]="WHEN";
      d[2190]="WHIM";
      d[2191]="WHIP";
      d[2192]="WHIT";
      d[2193]="WHIZ";
      d[2194]="WHO";
      d[2195]="WHOM";
      d[2196]="WHY";
      d[2197]="WICK";
      d[2198]="WIDE";
      d[2199]="WIFE";
      d[2200]="WIG";
      d[2201]="WIGS";
      d[2202]="WILD";
      d[2203]="WILE";
      d[2204]="WILL";
      d[2205]="WILT";
      d[2206]="WILY";
      d[2207]="WIN";
      d[2208]="WIND";
      d[2209]="WINE";
      d[2210]="WING";
      d[2211]="WINK";
      d[2212]="WINS";
      d[2213]="WIPE";
      d[2214]="WIRE";
      d[2215]="WIRY";
      d[2216]="WISE";
      d[2217]="WISH";
      d[2218]="WISP";
      d[2219]="WIT";
      d[2220]="WITH";
      d[2221]="WITS";
      d[2222]="WOE";
      d[2223]="WOKE";
      d[2224]="WOLF";
      d[2225]="WOMB";
      d[2226]="WON";
      d[2227]="WONT";
      d[2228]="WOO";
      d[2229]="WOOD";
      d[2230]="WOOF";
      d[2231]="WOOL";
      d[2232]="WOOS";
      d[2233]="WORD";
      d[2234]="WORE";
      d[2235]="WORK";
      d[2236]="WORM";
      d[2237]="WORN";
      d[2238]="WOVE";
      d[2239]="WRAP";
      d[2240]="WREN";
      d[2241]="WRIT";
      d[2242]="YANK";
      d[2243]="YARD";
      d[2244]="YARN";
      d[2245]="YAWN";
      d[2246]="YEA";
      d[2247]="YEAR";
      d[2248]="YEAS";
      d[2249]="YELL";
      d[2250]="YELP";
      d[2251]="YES";
      d[2252]="YET";
      d[2253]="YOKE";
      d[2254]="YON";
      d[2255]="YOU";
      d[2256]="YOUR";
      d[2257]="ZEAL";
      d[2258]="ZERO";
      d[2259]="ZEST";
      d[2260]="ZINC";
      d[2261]="ZONE";
      d[2262]="ZOO";
      d[2263]="ZOOM";
      d[2264]="ZOOS";
      for(i=0;i<M;i++){
        j=d[i].size();
        for(x=0;x<j;x++)d[i][x]-='A';
        if(j==1)v1[d[i][0]]=1;
        if(j==2)v2[d[i][0]][d[i][1]]=1;
        if(j==3)add3(d[i][0],d[i][1],d[i][2]);
        if(j==4)add4(d[i][0],d[i][1],d[i][2],d[i][3]);
      }
      for(scanf("%d%d",&n,&m),i=1;i<=n;i++)for(scanf("%s",ch+1),j=1;j<=m;j++)a[i][j]=ch[j]-'A';
      for(x=0;x<S;x++)for(i=1;i<=n;i++)for(j=m;j;j--){
        s1[x][i][j]=s1[x][i-1][j]+s1[x][i][j+1]-s1[x][i-1][j+1]+(a[i][j]==x);
        f[a[i][j]][x][i][j]=s1[x][i][j]-(a[i][j]==x);
      }
      for(x=0;x<S;x++)for(y=0;y<S;y++)for(i=1;i<=n;i++)for(j=m;j;j--)s2[x][y][i][j]=s2[x][y][i-1][j]+s2[x][y][i][j+1]-s2[x][y][i-1][j+1]+f[x][y][i][j];
      for(i=1;i<=n;i++)for(j=1;j<=m;j++){
        if(v1[a[i][j]])ans++;
        for(x=i;x;x--)for(y=x==i?j+1:j;y<=m;y++){
          if(v2[a[i][j]][a[x][y]])ans++;
          for(p=g3[a[i][j]][a[x][y]];p;p=p->nxt)ans+=s1[p->x][x][y]-(a[x][y]==p->x);
          for(p=g4[a[i][j]][a[x][y]];p;p=p->nxt)ans+=s2[p->x][p->y][x][y]-f[p->x][p->y][x][y];
        }
      }
      return printf("%d",ans),0;
    }
    

      

  • 相关阅读:
    【POJ 3162】 Walking Race (树形DP-求树上最长路径问题,+单调队列)
    【POJ 2152】 Fire (树形DP)
    【POJ 1741】 Tree (树的点分治)
    【POJ 2486】 Apple Tree (树形DP)
    【HDU 3810】 Magina (01背包,优先队列优化,并查集)
    【SGU 390】Tickets (数位DP)
    【SPOJ 2319】 BIGSEQ
    【SPOJ 1182】 SORTBIT
    【HDU 5456】 Matches Puzzle Game (数位DP)
    【HDU 3652】 B-number (数位DP)
  • 原文地址:https://www.cnblogs.com/clrs97/p/4590207.html
Copyright © 2011-2022 走看看