a
【问题描述】
        你是能看到第一题的 friends 呢。
                        ——hja
    怎么快速记单词呢?也许把单词分类再记单词是个不错的选择。何大爷给
  出了一种分单词的方法,何大爷认为两个单词是同一类的当这两个单词的各个
  字母的个数是一样的,如 dog 和 god。现在何大爷给了你?个单词,问这里总共
  有多少类单词。
【输入格式】
  第一行一个整数n代表单词的个数。
  接下来n行每行一个单词。
【输出格式】
  一行一个整数代表答案。
【样例输入】
  3
  AABAC
  CBAAA
  AAABB
【样例输出】
  2
【数据范围与规定】
  70%的数据,1 ≤ ? ≤ 100。
  对于100%的数据,1 ≤ ? ≤ 10000,所有单词由大写字母组成。
  P99 zhxb

思路:很简单,sort一下,set记录就好。

#include<set>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n;
string s;
set<string>s1;
using namespace std;
int main(){freopen("a.in","r",stdin);freopen("a.out","w",stdout);cin>>n;for(int i=1;i<=n;i++){cin>>s;sort(s.begin(),s.end());s1.insert(s);}cout<<s1.size();
}

View Code

b
【问题描述】
      你是能看到第二题的 friends 呢。
                      ——laekov
    长度为?的铁丝,你可以将其分成若干段,并把每段都折成一个三角形。你
  还需要保证三角形的边长都是正整数并且三角形两两相似,问有多少种不同的
  分法。
【输入格式】
  一行一个整数n。
【输出格式】
  一行一个整数代表答案对10 9 + 7取模之后的值。
【样例输入 1
  6
【样例输出 1】
  2
【样例输入 2】
  9
【样例输出 2】
  6
【样例解释 2】
  (1,1,1),(2,2,2);(2,2,2),(1,1,1)算两种方案。
【数据范围与规定】
  对于30%的数据,1≤n≤100。
  对于60%的数据,1 ≤n≤ 1000。
  对于100%的数据,1 ≤ n≤ 10^6 。
  P99 zhxc

思路:打表+

以下解题思路转自xxy大佬的博客

设分成的每段长为Li,g=gcd(Li)

那么一共有n/g 个单位

设f[g]表示以g为周长,且三边gcd为1 的三角形的个数

设h[n/g]表示把n/g个单位 分配给任意多个三角形的个数

那么 ans=Σ f[g]*h[n/g]   (g|n)

求f[g]:

设g=a+b+c,且a<=b<=c

对b和c的大小分两种情况讨论:

① b==c :

==> g=a+2b,那么b∈[ceil(g/3),floor((g-1)/2)]

所以f[g]=floor((g-1)/2)- ceil(g/3) +1

② b<c :

a,b,c 的每一种方案都可以看做由 a,b,c-1的每一种方案转移过来

但有一种除外:a+b=c,因为此时a,b,c-1 合法,a,b,c 不合法

当g为偶数时,a+b+a+b=g,g=2*(a+b),所以有floor(g/4)个

所以f[g]=f[g-1]+ (b&1)? 0 : -g/4

然后因为要求三边长互质,所以枚举g的每个因数k,f[g]-=f[k]

求h[i]:

把i个物品分成任意份的方案数=C(i-1,0)+C(i-1,1)+……+C(i-1,i-1)

= 2^(i-1)

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 1000010
#define mod 1000000007
using namespace std;
int n,ans;
int f[MAXN],dp[MAXN],more[MAXN];
void pre(){f[1]=0;f[2]=0;f[3]=1;f[4]=0;f[5]=1;f[6]=2;f[7]=2;f[8]=1;f[9]=6;f[10]=3;f[11]=4;f[12]=10;f[13]=5;f[14]=6;f[15]=25;f[16]=6;f[17]=8;f[18]=40;f[19]=10;f[20]=16;f[21]=81;f[22]=14;f[23]=14;f[24]=144;f[25]=31;f[26]=19;f[27]=280;f[28]=32;f[29]=21;f[30]=569;f[31]=24;f[32]=32;f[33]=1062;f[34]=32;f[35]=123;f[36]=2098;f[37]=33;f[38]=40;f[39]=4147;f[40]=188;f[41]=40;f[42]=8305;f[43]=44;f[44]=74;f[45]=16731;f[46]=58;f[47]=52;f[48]=32880;f[49]=182;f[50]=593;f[51]=65620;f[52]=100;f[53]=65;f[54]=131222;f[55]=1153;f[56]=408;f[57]=262248;f[58]=91;f[59]=80;f[60]=526534;f[61]=85;f[62]=104;f[63]=1049329;f[64]=256;f[65]=4266;f[66]=2097406;f[67]=102;f[68]=168;f[69]=4194453;f[70]=9435;f[71]=114;f[72]=8389356;f[73]=120;f[74]=147;f[75]=16793845;f[76]=210;f[77]=2431;f[78]=33554771;f[79]=140;f[80]=33664;f[81]=67109568;f[82]=180;f[83]=154;f[84]=134222278;f[85]=65816;f[86]=198;f[87]=268435687;f[88]=1764;f[89]=176;f[90]=537003715;f[91]=8689;f[92]=304;f[93]=73742080;f[94]=236;f[95]=262493;f[96]=147486386;f[97]=208;f[98]=16762;f[99]=294970616;f[100]=525236;f[101]=225;f[102]=589935100;f[103]=234;f[104]=5060;f[105]=180951179;f[106]=299;f[107]=252;f[108]=359743304;f[109]=261;f[110]=2100625;f[111]=719476629;f[112]=74624;f[113]=280;f[114]=438953217;f[115]=4194803;f[116]=476;f[117]=877914883;f[118]=370;f[119]=131884;f[120]=764219541;f[121]=4412;f[122]=395;f[123]=511620533;f[124]=544;f[125]=16777781;f[126]=23520200;f[127]=352;f[128]=33792;f[129]=46480812;f[130]=33561658;f[131]=374;f[132]=92971720;f[133]=525301;f[134]=476;f[135]=253064929;f[136]=67120;f[137]=408;f[138]=371843557;f[139]=420;f[140]=135276738;f[141]=743685675;f[142]=534;f[143]=21939;f[144]=487573369;f[145]=268436226;f[146]=564;f[147]=976838685;f[148]=768;f[149]=481;f[150]=486371819;f[151]=494;f[152]=264124;f[153]=899095103;f[154]=4230111;f[155]=73742696;f[156]=797942289;f[157]=533;f[158]=660;f[159]=595846044;f[160]=148044530;f[161]=8390048;f[162]=191955045;f[163]=574;f[164]=940;f[165]=678420224;f[166]=728;f[167]=602;f[168]=784611668;f[169]=21091;f[170]=590005152;f[171]=534052443;f[172]=1034;f[173]=645;f[174]=67051138;f[175]=213425504;f[176]=2234048;f[177]=134100040;f[178]=836;f[179]=690;f[180]=629164408;f[181]=705;f[182]=67159441;f[183]=536397479;f[184]=4197128;f[185]=719477490;f[186]=72794800;f[187]=271076;f[188]=1232;f[189]=281905179;f[190]=439221006;f[191]=784;f[192]=299637156;f[193]=800;f[194]=992;f[195]=460352967;f[196]=268453912;f[197]=833;f[198]=169414077;f[199]=850;f[200]=773118105;f[201]=329377190;f[202]=1075;f[203]=536873117;f[204]=658901564;f[205]=511621583;f[206]=1118;f[207]=325897438;f[208]=33737152;f[209]=1059738;f[210]=733120196;f[211]=954;f[212]=1560;f[213]=270017566;f[214]=1206;f[215]=46481967;f[216]=624195158;f[217]=147486152;f[218]=1251;f[219]=80066391;f[220]=97166226;f[221]=361480;f[222]=160132539;f[223]=1064;f[224]=429287396;f[225]=539823443;f[226]=1344;f[227]=1102;f[228]=641067392;f[229]=1121;f[230]=376045827;f[231]=875181021;f[232]=268439796;f[233]=1160;f[234]=629865643;f[235]=743687047;f[236]=1930;f[237]=124161904;f[238]=180068149;f[239]=1220;f[240]=282249196;f[241]=1240;f[242]=8396278;f[243]=630864590;f[244]=2060;f[245]=334482250;f[246]=993285370;f[247]=1352967;f[248]=73746777;f[249]=986566337;f[250]=966267700;f[251]=1344;f[252]=963458550;f[253]=16792899;f[254]=1696;f[255]=845680875;f[256]=147618802;f[257]=1408;f[258]=892519773;f[259]=438956020;f[260]=834130603;f[261]=321910893;f[262]=1804;f[263]=1474;f[264]=902808123;f[265]=595847773;f[266]=878514327;f[267]=140132997;f[268]=2482;f[269]=1541;f[270]=613538991;f[271]=1564;f[272]=590463176;f[273]=321617640;f[274]=1972;f[275]=450507987;f[276]=129468687;f[277]=1633;f[278]=2030;f[279]=389587111;f[280]=593581177;f[281]=1680;f[282]=484194447;f[283]=1704;f[284]=2784;f[285]=503383384;f[286]=144739395;f[287]=23244429;f[288]=608926200;f[289]=526056;f[290]=335498669;f[291]=873525635;f[292]=2940;f[293]=1825;f[294]=795703352;f[295]=134102175;f[296]=719483184;f[297]=352487218;f[298]=2331;f[299]=21030745;f[300]=829570449;f[301]=92965331;f[302]=2394;f[303]=976373910;f[304]=440334209;f[305]=536399754;f[306]=133930833;f[307]=2002;f[308]=727053010;f[309]=905487848;f[310]=146550417;f[311]=2054;f[312]=797987002;f[313]=2080;f[314]=2587;f[315]=504510638;f[316]=3440;f[317]=2133;f[318]=243886012;f[319]=73765456;f[320]=196774796;f[321]=487764748;f[322]=752192960;f[323]=2754708;f[324]=829784319;f[325]=666295098;f[326]=2788;f[327]=951050268;f[328]=511628523;f[329]=487375739;f[330]=519846041;f[331]=2324;f[332]=3794;f[333]=243152828;f[334]=2926;f[335]=329379927;f[336]=896160545;f[337]=2408;f[338]=167812001;f[339]=216758643;f[340]=253287221;f[341]=294994281;f[342]=313785635;f[343]=949486563;f[344]=46489602;f[345]=205731144;f[346]=3139;f[347]=2552;f[348]=270962932;f[349]=2581;f[350]=747536014;f[351]=559517020;f[352]=691504452;f[353]=2640;f[354]=936178016;f[355]=270020632;f[356]=4356;f[357]=679251333;f[358]=3360;f[359]=2730;f[360]=460748045;f[361]=2624190;f[362]=3435;f[363]=669268872;f[364]=334172790;f[365]=80069625;f[366]=978753869;f[367]=2852;f[368]=389086576;f[369]=980748370;f[370]=879627900;f[371]=191697606;f[372]=62528248;f[373]=2945;f[374]=376928566;f[375]=234374381;f[376]=743696112;f[377]=342266271;f[378]=229553181;f[379]=3040;f[380]=86304704;f[381]=319912198;f[382]=3824;f[383]=3104;f[384]=456014180;f[385]=767315472;f[386]=3904;f[387]=372608253;f[388]=5168;f[389]=3201;f[390]=851593334;f[391]=34475148;f[392]=776813524;f[393]=118533489;f[394]=4067;f[395]=124165684;f[396]=461120268;f[397]=3333;f[398]=4150;f[399]=554019519;f[400]=24380486;f[401]=3400;f[402]=948240916;f[403]=368810794;f[404]=5600;f[405]=100772050;f[406]=671149427;f[407]=877942283;f[408]=939442208;f[409]=3536;f[410]=504928656;f[411]=585867209;f[412]=5824;f[413]=268206895;f[414]=934037804;f[415]=986570502;f[416]=669929746;f[417]=343454580;f[418]=778379431;f[419]=3710;f[420]=335610456;f[421]=3745;f[422]=4664;f[423]=861186921;f[424]=595859187;f[425]=81465024;f[426]=747606243;f[427]=72802206;f[428]=6282;f[429]=481777696;f[430]=939025622;f[431]=3924;f[432]=179917090;f[433]=3960;f[434]=293274650;f[435]=108338739;f[436]=6516;f[437]=45617065;f[438]=961563981;f[439]=4070;f[440]=85432001;f[441]=173222533;f[442]=218768539;f[443]=4144;f[444]=285247559;f[445]=140137771;f[446]=5208;f[447]=692440708;f[448]=181485242;f[449]=4256;f[450]=503663955;f[451]=46525528;f[452]=7000;f[453]=769745987;f[454]=5396;f[455]=624680383;f[456]=36952570;f[457]=4408;f[458]=5491;f[459]=414821823;f[460]=525420403;f[461]=4485;f[462]=195576137;f[463]=4524;f[464]=141492500;f[465]=927048725;f[466]=5684;f[467]=4602;f[468]=917587263;f[469]=658763101;f[470]=227909764;f[471]=263377072;f[472]=134116266;f[473]=185971000;f[474]=526752805;f[475]=140092690;f[476]=572044619;f[477]=245196579;f[478]=5980;f[479]=4840;f[480]=251051250;f[481]=597521289;f[482]=6080;f[483]=901381976;f[484]=384464122;f[485]=873531291;f[486]=81799863;f[487]=5002;f[488]=536414764;f[489]=855737404;f[490]=351802543;f[491]=5084;f[492]=734795572;f[493]=148864986;f[494]=532754414;f[495]=902725507;f[496]=368561549;f[497]=540044894;f[498]=845857446;f[499]=5250;f[500]=46222437;f[501]=691697246;f[502]=6594;f[503]=5334;f[504]=531075295;f[505]=976380035;f[506]=541933468;f[507]=156419868;f[508]=8832;f[509]=5461;f[510]=630889204;f[511]=160143072;f[512]=881647212;f[513]=809398314;f[514]=6912;f[515]=905494218;f[516]=227148798;f[517]=974799163;f[518]=759494920;f[519]=268176839;f[520]=176474293;f[521]=5720;f[522]=746957132;f[523]=5764;f[524]=9394;f[525]=401665841;f[526]=7238;f[527]=591513220;f[528]=693257650;f[529]=58726138;f[530]=839769236;f[531]=558933992;f[532]=504447131;f[533]=558270181;f[534]=581429430;f[535]=487771615;f[536]=329397982;f[537]=162838617;f[538]=7571;f[539]=461110827;f[540]=760194731;f[541]=6165;f[542]=7684;f[543]=651330217;f[544]=199950520;f[545]=951057387;f[546]=610609693;f[547]=6302;f[548]=10268;f[549]=678110480;f[550]=215598287;f[551]=689865933;f[552]=422847279;f[553]=248335828;f[554]=8027;f[555]=823273101;f[556]=10570;f[557]=6533;f[558]=286028190;f[559]=232588345;f[560]=550616676;f[561]=641688027;f[562]=8260;f[563]=6674;f[564]=856694326;f[565]=216766287;f[566]=8378;f[567]=643650873;f[568]=270040853;f[569]=6816;f[570]=10575752;f[571]=6864;f[572]=876871637;f[573]=953622009;f[574]=10147215;f[575]=164828100;f[576]=103131694;f[577]=7008;f[578]=720533540;f[579]=814460419;f[580]=422754714;f[581]=973145904;f[582]=628918743;f[583]=383454843;f[584]=80090949;f[585]=210412823;f[586]=8979;f[587]=7252;f[588]=678691589;f[589]=743716893;f[590]=70323870;f[591]=31225166;f[592]=39137685;f[593]=7400;f[594]=777599332;f[595]=205603231;f[596]=12136;f[597]=124871317;f[598]=366855643;f[599]=7550;f[600]=748441320;f[601]=7600;f[602]=878370138;f[603]=158233051;f[604]=12464;f[605]=22977276;f[606]=998908369;f[607]=7752;f[608]=876039115;f[609]=5804546;f[610]=515200081;f[611]=718646208;f[612]=352050226;f[613]=7905;f[614]=9856;f[615]=507385951;f[616]=504944356;f[617]=8008;f[618]=982261152;f[619]=8060;f[620]=442860405;f[621]=606159688;f[622]=10114;f[623]=280281152;f[624]=380560125;f[625]=81648331;f[626]=10244;f[627]=947552966;f[628]=13468;f[629]=757981013;f[630]=407166986;f[631]=8374;f[632]=124190605;f[633]=431761439;f[634]=10507;f[635]=319921830;f[636]=55344476;f[637]=994990070;f[638]=922911884;f[639]=267073321;f[640]=96687145;f[641]=8640;f[642]=454021625;f[643]=8694;f[644]=915428148;f[645]=420773432;f[646]=416481261;f[647]=8802;f[648]=888624547;f[649]=536487196;f[650]=543527195;f[651]=805064391;f[652]=14514;f[653]=8965;f[654]=264040138;f[655]=118543730;f[656]=41099551;f[657]=688210286;f[658]=456196476;f[659]=9130;f[660]=788540947;f[661]=9185;f[662]=11454;f[663]=632455164;f[664]=986597957;f[665]=216673288;f[666]=426834782;f[667]=846186064;f[668]=15232;f[669]=448618719;f[670]=277676648;f[671]=145682417;f[672]=864781405;f[673]=9520;f[674]=11872;f[675]=536767859;f[676]=291790663;f[677]=9633;f[678]=588871703;f[679]=747069207;f[680]=994065097;f[681]=177710923;f[682]=784023935;f[683]=9804;f[684]=64193468;f[685]=585878395;f[686]=444036983;f[687]=710804765;f[688]=79908296;f[689]=979502647;f[690]=332920397;f[691]=10034;f[692]=16340;f[693]=653685751;f[694]=12586;f[695]=343466095;f[696]=929250733;f[697]=95592236;f[698]=12731;f[699]=372677413;f[700]=505554620;f[701]=10325;f[702]=484673687;f[703]=203423644;f[704]=26131550;f[705]=583750068;f[706]=13024;f[707]=952767238;f[708]=249696771;f[709]=10561;f[710]=17689299;f[711]=210988695;f[712]=140169231;f[713]=133059369;f[714]=142721121;f[715]=741851795;f[716]=17490;f[717]=850488986;f[718]=13470;f[719]=10860;f[720]=308702450;f[721]=810995891;f[722]=394781562;f[723]=401912787;f[724]=17880;f[725]=359648052;f[726]=278574349;f[727]=11102;f[728]=223324365;f[729]=674663557;f[730]=41699365;f[731]=374737300;f[732]=288178886;f[733]=11285;f[734]=14076;f[735]=119111885;f[736]=741314328;f[737]=317619815;f[738]=899077274;f[739]=11470;f[740]=340571402;f[741]=176555384;f[742]=680009780;f[743]=11594;f[744]=622059992;f[745]=692453917;f[746]=14539;f[747]=859093140;f[748]=953913486;f[749]=975551267;f[750]=462624064;f[751]=11844;f[752]=460669231;f[753]=543654149;f[754]=456025416;f[755]=769759553;f[756]=964948885;f[757]=12033;f[758]=15010;f[759]=666496731;f[760]=357067089;f[761]=12160;f[762]=349134363;f[763]=902123092;f[764]=19904;f[765]=655334128;f[766]=15328;f[767]=670835577;f[768]=180320395;f[769]=12416;f[770]=686482083;f[771]=792861970;f[772]=20320;f[773]=12545;f[774]=562467585;f[775]=824643127;f[776]=873568555;f[777]=289679775;f[778]=15811;f[779]=126699245;f[780]=517585453;f[781]=80194428;f[782]=302914607;f[783]=959897208;f[784]=9112574;f[785]=263391723;f[786]=371078861;f[787]=13002;f[788]=21168;f[789]=742114163;f[790]=650995270;f[791]=433541506;f[792]=724438873;f[793]=682343776;f[794]=16467;f[795]=2185994;f[796]=21600;f[797]=13333;f[798]=81385569;f[799]=952901881;f[800]=170768862;f[801]=153870972;f[802]=16800;f[803]=320396310;f[804]=406087068;f[805]=579427728;f[806]=833193940;f[807]=494205098;f[808]=976420385;f[809]=13736;f[810]=509535625;f[811]=13804;f[812]=642419509;f[813]=976765784;f[814]=26683670;f[815]=855753189;f[816]=576240377;f[817]=476351470;f[818]=17476;f[819]=626184202;f[820]=795515423;f[821]=14145;f[822]=814011073;f[823]=14214;f[824]=905536183;f[825]=43630219;f[826]=141227885;f[827]=14352;f[828]=736405228;f[829]=14421;f[830]=832512453;f[831]=511841099;f[832]=324425848;f[833]=546181775;f[834]=23677747;f[835]=691713808;f[836]=175324608;f[837]=322020648;f[838]=18340;f[839]=14770;f[840]=767314431;f[841]=637159360;f[842]=18515;f[843]=189167254;f[844]=24274;f[845]=678873291;f[846]=328298371;f[847]=103072287;f[848]=629436117;f[849]=756609450;f[850]=195474478;f[851]=211094749;f[852]=53481170;f[853]=15265;f[854]=31016620;f[855]=568345655;f[856]=487816850;f[857]=15408;f[858]=850175264;f[859]=15480;f[860]=328639424;f[861]=666978539;f[862]=19404;f[863]=15624;f[864]=324264527;f[865]=268194598;f[866]=19584;f[867]=616828971;f[868]=82189470;f[869]=496800197;f[870]=728037434;f[871]=647313682;f[872]=951104277;f[873]=433958153;f[874]=955530808;f[875]=883697445;f[876]=534090545;f[877]=16133;f[878]=20130;f[879]=747373447;f[880]=305347883;f[881]=16280;f[882]=739910174;f[883]=16354;f[884]=526496827;f[885]=951951571;f[886]=20498;f[887]=16502;f[888]=136131504;f[889]=639854892;f[890]=721663891;f[891]=128450027;f[892]=27104;f[893]=450498982;f[894]=915295756;f[895]=162857622;f[896]=456853444;f[897]=839130012;f[898]=21056;f[899]=991045957;f[900]=768095880;f[901]=771039188;f[902]=126859099;f[903]=345818228;f[904]=216816631;f[905]=651349642;f[906]=644141987;f[907]=17252;f[908]=28082;f[909]=241025460;f[910]=847370936;f[911]=17404;f[912]=988882810;f[913]=946433209;f[914]=21812;f[915]=441507462;f[916]=28576;f[917]=237099395;f[918]=862554513;f[919]=17710;f[920]=127568390;f[921]=611272228;f[922]=22195;f[923]=350565947;f[924]=29652432;f[925]=766970575;f[926]=22388;f[927]=256047019;f[928]=396024127;f[929]=18096;f[930]=35461180;f[931]=709833501;f[932]=29580;f[933]=779999326;f[934]=22776;f[935]=541127788;f[936]=796981924;f[937]=18408;f[938]=556093119;f[939]=119924357;f[940]=342870726;f[941]=18565;f[942]=239842981;f[943]=330471863;f[944]=475244359;f[945]=388140789;f[946]=941357867;f[947]=18802;f[948]=207849885;f[949]=400835301;f[950]=869128616;f[951]=918419448;f[952]=140326942;f[953]=19040;f[954]=716536167;f[955]=953643625;f[956]=31120;f[957]=913775800;f[958]=23960;f[959]=171769805;f[960]=365139645;f[961]=769822937;f[962]=383588360;f[963]=669918431;f[964]=31640;f[965]=814482483;f[966]=167763046;f[967]=19602;f[968]=390506098;f[969]=52884710;f[970]=502564403;f[971]=19764;f[972]=234634222;f[973]=686945595;f[974]=24766;f[975]=570319034;f[976]=127176969;f[977]=20008;f[978]=217817386;f[979]=560723938;f[980]=566226326;f[981]=337727721;f[982]=25174;f[983]=20254;f[984]=243933741;f[985]=31248147;f[986]=223225457;f[987]=237502017;f[988]=814899512;f[989]=835294271;f[990]=585935671;f[991]=20584;f[992]=927533220;f[993]=968676492;f[994]=36205524;f[995]=124894767;f[996]=910792481;f[997]=20833;f[998]=26000;f[999]=209273186;f[1000]=523080925;
}
void work(){dp[3]=1;for(int i=4;i<=n;i++){dp[i]=dp[i-1]+(i-1)/2-i/3+(i%3?0:1);if(i%2==0)    dp[i]-=i/4;dp[i]%=mod;if(dp[i]<0)    dp[i]+=mod;}more[1]=1;for(int i=2;i<=n;i++){more[i]=(more[i-1]*2)%mod;for(int j=2;i*j<=n;j++){dp[i*j]-=dp[i];if(dp[i*j]<0)    dp[i*j]+=mod;    }}return ;
}
int main(){freopen("b.in","r",stdin);freopen("b.out","w",stdout);pre();scanf("%d",&n);if(n<=1000){cout<<f[n];return 0;}else{work();for(int i=1;i*i<=n;i++){if(n%i!=0)    continue;ans=(ans+1ll*dp[i]*more[n/i])%mod;if(i*i!=n)ans=(ans+1ll*dp[n/i]*more[i])%mod;    }cout<<ans;}
}

View Code

c
【问题描述】
      你是能看到第三题的 friends 呢。
                      ——aoao
    在小学的时候,我们都学过正视图和左视图。现在何大爷用一些小方块摆了
  一个图形,并给出了你这个图形的左视图和正视图。现在何大爷希望知道,在给
  定正视图和左视图的情况下,原来的立体图形有多少种可能的情况?
【输入格式】
  第一行两个整数n,m,代表在左视图和正视图中分别有多少列。
  第二n个整数,代表在左视图中从左至右每一列的高度。
  第三行m个整数,代表在正视图中从左至有每一列的高度。
【输出格式】
  一行一个整数代表答案对10 9 + 9取模之后的值。
【样例输入 1】
  2 2
  1 1
  1 1
【样例输出 1】
  7
【样例输入 2】
  4 5
  5 2 4 1
  5 2 4 0 1
【样例输出 2】
  429287
【数据规模与约定】
  对于20%的数据,1 ≤ n,m ≤ 5,每列的最大高度不超过5。
  对于40%的数据,n + m ≤ 18。
  对于100%的数据,1 ≤ n,m ≤ 50,每列最大高度不超过10000。

以下解题思路转自xxy大佬的博客

思路:容斥原理

解决本题的关键:行交换。列交换对答案不影响

将左视图按从下往上递减,正视图从左往右递减排列

那整张图的高度从左下到右上呈阶梯状递减

这样所有高度相同的呈现倒‘L’形,如下图所示蓝色部分

如果我们按高度递减的顺序依次计算每个倒‘L’形的方案数,那么这些倒‘L’形相对独立

答案就是所有倒‘L’形答案的乘积

如何计算单个倒‘L’形的答案?——容斥原理

假设上图为已经按高度排好序的图

设当前正在处理高度为h的倒‘L’形

令nn表示当前有nn行的左视图高度为h,mm表示当前有mm列的主视图高度为h

n表示当前有n行的左视图高度>=h,m表示当前有m列的主视图高度>=h

定义性质pk表示 在这nn行mm列中,有k行/列不满足看到的高度为h

那根据容斥原理,

不具有任何一个性质p的方案和=

全集-Σ|pi|+Σ|pi∩pj|-Σ|pi∩pj∩pk|+…+(-1)^m*|p1∩p2∩…∩pm|

也就是所有方案-所有1行/列不满足条件的方案+所有2行/列不满足条件的方案-……

如何求有k行/列不满足条件的方案数?

设现在要求在倒‘L’形中,有i行j列不满足条件的方案数A,i+j=k

那么A分为两部分

① i行j列不能满足条件的部分:

当前高度为h,不能满足条件,每一个各自可以填[0,h-1],每个格子有h种方案

所以此时方案数=h^ (n*m-(n-i)*(m-j))

② 倒‘L’形中其他位置可以任意填的部分

当前高度为h,任意填就是可以填[0,h],每个各自有h+1种方案

所以此时的方案数=(h+1)^((n-i)*(m-j)-(n-nn)*(m-mm))

这是选定i行j列,所以还要乘上在nn行中选i行,在mm列中选j列的方案

终上所述,每个倒‘L’形 的答案为 (-1)^(i+j)* C(nn,i)* C(mm,j)* h^ (n*m-(n-i)*(m-j)) * (h+1)^((n-i)*(m-j)-(n-nn)*(m-mm))

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 10001
#define mod 1000000009
using namespace std;
int n,m;
int c[51][51];
int a[MAXN],b[MAXN];
void pre(int k){for(int i=0;i<=k;i++)    c[i][0]=1;for(int i=1;i<=k;i++)for(int j=1;j<=i;j++)c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
}
int pow(int a,int b){int res=1;for(;b;b>>=1,a=1ll*a*a%mod)if(b&1)    res=1ll*res*a%mod;return res;
}
int cal(int n,int m,int nn,int mm,int h){int res=0,tmp;for(int i=0;i<=nn;i++)for(int j=0;j<=mm;j++){tmp=1ll*pow(h,n*m-(n-i)*(m-j))*pow(h+1,(n-i)*(m-j)-(n-nn)*(m-mm))%mod*c[nn][i]%mod*c[mm][j]%mod;if((i+j)&1)    res=((res-tmp)%mod+mod)%mod;else res+=tmp,res%=mod;}return res;
}
int main(){freopen("c.in","r",stdin);freopen("c.out","w",stdout);scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){int x;scanf("%d",&x);a[x]++;}for(int i=1;i<=m;i++){int x;scanf("%d",&x);b[x]++; }pre(max(n,m));long long res=1;int nown=0,nowm=0;for(int i=10000;i>=0;i--)if(a[i]||b[i]){nown+=a[i];nowm+=b[i];res=1ll*res*cal(nown,nowm,a[i],b[i],i)%mod;}cout<<res;
}

View Code

转载于:https://www.cnblogs.com/cangT-Tlan/p/7642204.html

国庆 day 3 上午相关推荐

  1. 电子科技大学信息与软件工程学院考研初试时间规划和用书推荐

    背景 上个月底,电子科大软件学院的复试结果出来,笔者幸运地被录取为学硕.这两天心情平复下来后,趁着单位也没什么事儿,就想结合自己的考研经历,向后来考研人推荐一下初试的时间规划和复习用书,一家之言,仅供 ...

  2. 吉大400+计算机软件人工智能考研攻略

    转载(欢迎加入吉大计算机软件人工智能考研总群:669554247) 由于今年疫情影响,复试有可能推迟,因为自己上岸了,所以有很多学弟学妹来取经,花了些时间写一个攻略,供大家参考. 本人19上岸,考的吉 ...

  3. 国庆清北刷题冲刺班 Day3 上午

    a [问题描述] 你是能看到第一题的 friends 呢. --hja 怎么快速记单词呢?也许把单词分类再记单词是个不错的选择.何大爷给 出了一种分单词的方法,何大爷认为两个单词是同一类的当这两个单词 ...

  4. 国庆清北刷题冲刺班 Day6 上午

    1. 角谷猜想 (kakutani.pas/c/cpp) (kakutani.in/out) 时间限制:1s/空间限制:256M [题目描述] 某个名字末尾是 654321 的小 A 同学是个大家眼中 ...

  5. 国庆七天学Linux技能,休闲假期不负时光

    2019独角兽企业重金招聘Python工程师标准>>> 秋菊怒放迎风笑,山河雄壮国庆到;华夏神州欢声动,全国人民同庆贺.我们的祖国有着广阔的美好河山和悠久的文明历史.马上就要国庆长假 ...

  6. 国庆广州(羊城)之旅

    1号至3号上午,去广州玩了.时间虽然短暂,但游览效率坡高,据说游历"羊城八大景"之五,登上广州最高峰摩星岭,足迹遍布半个广州. [旅行缘由] 话说,国庆假期临近,正愁没有活动安排, ...

  7. 李国庆离开当当,广东消委会告长隆,智能校服提供定位功能,全球首个5G火车站来了,这就是今天的大新闻...

    今天是2月21日 农历正月十七 今天下雨 出门忘带雨伞 但是心情还是美丽的 因为我没被淋湿 下面是今天的大新闻 李国庆宣布离开一手创办的当当  (界面新闻)2月20日上午,当当联合创始人李国庆正式宣布 ...

  8. 国庆快乐,送3本Python书

    VOL 304 01 2021-10 今天距2022年92天 这是ITester软件测试小栈第304次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 0 ...

  9. 生活随记 - 国庆假期怎么过才有意义呢

    2020年的国庆节日,有8天假期,那是你们呢,看朋友圈,有一些公众号在讨论,怎么过中秋,才有意义?今年因为疫情,所以大家都特别谨慎,有小孩的家长,基本都接到了,尽量不让去高铁站和飞机场还有巴士站的通知 ...

最新文章

  1. 测一测你的blog魔症有多严重
  2. java如何调用js_java如何调用js方法
  3. gevent.hub.LoopExit: ('This operation would block forever'
  4. 关于 tsm 磁带槽位
  5. linux 记一次链路聚合
  6. 雷神开机logo更改_雷神911 pro-钛空版开售,陪你过一个不一样的520
  7. springboot创建项目 编写dao serviece 和controller 持久层用mybatis
  8. HTML 页面自动刷新
  9. Moss 2007 入门(1) - 功能概述【转】
  10. python系列九:python3迭代器和生成器
  11. 数据库系统概论-并发控制
  12. 大智慧加密指标源码恢复,指标破解工具
  13. 资格考试_第二章_证券投资基金概述
  14. 不懂面试官想要哪种数据分析师,简历写的再好也没用!文末有福利
  15. 怎么搜集家谱资料?四个内容两个方法,打造传世的精神财富
  16. Mac-----Tickeys模拟机械键盘音效软件使用
  17. 使用 Python 绘制 Log 函数图
  18. uniapp height高度 100% 无效的问题
  19. 微信小程序跳转公众号(引导关注)之 使用公众号消息
  20. element组件el-date-picker禁用当前时分秒之前的日期时间选择(代码最少)

热门文章

  1. 计算机三级数据库知识点汇总附思维导图
  2. 使用modbus4j通过串口解析modbus协议(java)
  3. 《Adobe Flash CS6中文版经典教程》——1.14 检查更新
  4. wps js宏实战案例:批量汇总订单数据、识别黑名单、自动统计业绩、每笔订单生成带条形码的发货单并输出为pdf文件用于打印
  5. 企业私有云Owncloud(1)--介绍
  6. OpenDDS内部关键的idl文件(RTPS)
  7. 装饰工程预结算教程电子书_工程造价专家是如何分析为什么工程预结算编制做不好...
  8. LCS(LKT)版权保护芯片方案说明(三)参数保护方案
  9. Linux基线安全加固操作实践
  10. 【微信小程序 四】二维码生成/扫描二维码