HZOI2019建造游乐园(play)组合数学,欧拉图

题目:https://www.cnblogs.com/Juve/articles/11186805.html(密码是我的一个oj用户名)

solution:

反正我是想不出来。。。

题目大意就是要求出有多少个图删除一条边或加上一条边后成为一个连通的欧拉图

实际上答案等于有n个点的带标号连通的欧拉图数量*$C_{n}^{2}$,也就是我先数出所有的欧拉图数量,在这个欧拉图上删一条边或是加一条边得到合法方案,那么其实每一条边只会对应删或加,及$C_{n}^{2}$中选择。

数连通欧拉图则可以用容斥原理解决。

设连同欧拉图个数为fi,所有点度数均为偶数的图(不一定连通)为gi

则          gi=2$C_{i-1}^{2}$;

            fi=gi-$sum limits_{j=1}^{i-1}$fi*gi-j*$C_{i-1}^{j-1}$;

组合数可以杨辉三角也可以求逆元

复杂度n2

杨辉三角版:

#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
#define mod 1000000007
#define MAXN 4002
using namespace std;
ll n,g[MAXN],f[MAXN],C[MAXN][MAXN];
ll q_pow(ll a,ll b,ll p){
	ll ans=1;
	for(;b;b>>=1){
		if(b&1) ans=ans*a%p;
		a=a*a%p;
	}
	return ans%mod;
}
int main(){
	scanf("%lld",&n);
	for(ll i=0;i<=n+1;i++){
		C[i][0]=1;
		for(ll j=1;j<=i;j++)
			C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;
	}
	//for(ll i=1;i<=n;i++)
	//	for(ll j=1;j<i;j++)
	//		cout<<C[i][j]<<endl;
	for(ll i=1;i<=n;i++){
		f[i]=g[i]=q_pow(2,C[i-1][2],mod)%mod;
		for(ll j=1;j<i;j++){
			f[i]=(f[i]-f[j]*g[i-j]%mod*C[i-1][j-1]%mod+mod)%mod;
		}
	}
	printf("%lld
",f[n]*C[n][2]%mod);
	return 0;
}

逆元版:

 1 #include<cstdio>
 2 #define p 1000000007
 3 using namespace std;
 4 int n;
 5 long long g[2005],f[2005],fac[2005];
 6 inline long long qpow(long long a,long long b){register long long ans=1;a%=p;while(b){if(b&1)ans=ans*a%p;a=a*a%p;b>>=1;}return ans;}
 7 inline long long C(long long nn,long long k){if(k>nn)return 0;else return fac[nn]*(qpow(fac[k]*fac[nn-k]%p,p-2))%p;}
 8 inline long long Lucas(long long a,long long b){if(b==0) return 1;return C(a%p,b%p)*Lucas(a/p,b/p)%p;}
 9 inline void getchart(){fac[1]=fac[0]=1;for(register long long i=2;i<=n;i++) fac[i]=(fac[i-1]*i)%p;return ;}
10 int main()
11 {
12     scanf("%d",&n);getchart();
13     for(register int i=1;i<=n;++i)g[i]=qpow(2,Lucas(i-1,2))%p;
14     for(register int i=1;i<=n;++i)
15     {
16         long long ll=0;
17         for(register int j=1;j<=i;++j)
18             ll=(ll+((f[j]*g[i-j]%p)*Lucas(i-1,j-1)%p))%p;
19         f[i]=((g[i]-ll)%p+p)%p;
20     }
21     long long ans=f[n]*Lucas(n,2)%p;
22     printf("%lld",ans);
23     return 0;
24 }
Joe太巨了

当然你可以打表:

 1 #include<cstdio>
 2 const long long L=1<<20|1;
 3 char buffer[L],*S,*TT;
 4 #define getchar() ((S==TT&&(TT=(S=buffer)+fread(buffer,1,L,stdin),S==TT))?EOF:*S++)
 5 inline int read()
 6 {
 7     register int a=0,b=1;
 8     register char ch=getchar();
 9     while(ch<'0'||ch>'9')b=(ch=='-')?-1:1,ch=getchar();
10     while(ch>='0'&&ch<='9')a=(a<<3)+(a<<1)+(ch^48),ch=getchar();
11     return a*b;
12 }
13 int ans[2001]={0,0,0,3,18,380,10800,558894,52027416,21124449,486681575,704694707,358155953,203597911,460665510,886439192,988927751,733376292,34193202,501087611,870344504,51243400,826289084,286257691,301699744,334117440,504811630,480540877,807081711,786671192,130800185,839019460,640087842,971518205,934407072,643922887,922086327,218841715,364493854,28534180,242565546,870695592,915287932,662998747,949114074,981932858,114106712,652775879,382778315,88491882,56703922,282518978,403678752,15029051,502938342,195827336,204944448,609253690,947286876,433654466,166010560,487854169,413648807,429374148,120966129,830928142,958993004,530025556,456866897,773396193,666960014,20061935,878049837,249791236,807224984,634235609,463326233,609425283,28685685,210937573,171389970,588434995,816425947,898449526,845071659,520738336,165243039,755277609,63573897,723932216,67545829,235067402,383731888,368197448,290192458,319059732,452872174,585379901,930280608,415647730,997646203,737501838,599986076,16883260,574382078,549561065,560474646,7850205,633541447,638579556,772804435,156763755,146976323,16413788,710819770,217352984,569960447,977150345,673433056,336079143,760962765,896817022,49054409,652161900,534332350,630677389,681025070,134696357,464481863,660833836,717497608,96516005,267820218,586070679,109659001,844421233,29015597,979509690,808945187,108734502,881278656,168469216,956344090,235034067,708558640,862033231,574176538,224055339,807545943,195283360,248509197,138515128,453902,935658368,534816180,238914198,268427203,612402532,749501557,920345643,446201462,826055791,795513823,815805296,453518989,202718900,547003911,439024411,218221984,864608856,544956633,242091024,607761642,243811311,290087675,825953246,409543119,388436799,446676624,73282611,968139795,854140599,413854869,802938510,697172274,552560215,418198369,580649613,743745431,847237090,128276116,38859493,412210885,204588642,618505837,921082666,585230435,100921418,366702059,706358081,64411006,162904817,966784048,914139106,501408385,436374992,138317296,811309380,347596303,830279383,917507232,548376155,534605135,765400806,817128952,439587494,954325901,845940283,487740950,344140448,890621600,346345651,610122015,525508146,916900318,554117607,801967608,190218717,171120638,113684094,515147362,932105343,446257668,314320566,145501045,366409471,864010909,870126777,462080756,14859961,627124291,715858298,981496889,482386151,374268886,750388814,86259093,286718681,592427509,426874193,558468265,556975865,332834853,815563260,909760832,151745202,939905888,521663074,525571512,957811613,150426168,989648817,246302815,947414175,38200551,165035779,616929424,406424460,767215738,883179893,578928319,359272106,568628858,446643140,841721460,985860200,526113010,410356294,749326246,363965013,673239084,274964712,876847528,552040090,517617265,956602639,987655839,945569314,120427067,345737105,397994917,997075475,783321821,505738432,244512999,91739394,72364916,694620234,5534983,875181,547216413,596082334,593262577,784964269,249626099,754854580,467493462,478436502,99227191,528437788,919950845,700096165,956617218,935260843,924762768,777525000,386412888,710368771,377533899,240954193,418171379,476425416,528744549,302120438,915630247,36000699,608339736,834807823,645199283,958455528,11154367,616095007,781434728,116499471,332434788,710906154,858934448,33884865,37550019,269660730,561000231,156907390,100829485,726710997,316259223,728395646,191587793,497100772,8024421,580491075,474727038,30237852,217871187,439806993,218511557,293679386,369968680,531641806,26219327,886899344,159550912,206467831,841103045,66626225,58531480,855900344,533506858,311288790,782651024,280626506,588694019,542250916,691854917,834251710,240644248,123343341,752441845,176962003,608660814,246852903,208901817,39449724,49421843,385157028,638633176,549940499,812160144,399883038,558437490,924672459,411861657,185176843,404290529,27591258,24566821,464432954,776050786,787717363,606757067,882341381,575124309,602466613,269928106,82356395,792422795,844920314,875958170,882720038,580069309,943205567,311433472,955092516,931168045,566623331,399915766,31612802,941636754,683028530,694907790,765466333,239835737,357962512,674670310,717118444,739707715,916773452,151322763,205720593,310370257,824112512,873432593,354338436,948403980,844466641,941215109,272263005,685382091,140173212,758785493,433573060,342056992,670149848,860159381,983232007,826428709,763277692,207907336,980713192,360968816,484591021,899675016,726439407,632396105,208191893,665758236,351229274,109436707,913160920,315711880,178049961,506749561,408826999,3005208,66058790,189362613,596004784,455656010,931104996,712405668,235289100,85774590,402651910,275671923,715079991,520711149,927079772,140188681,177627514,794253712,70598369,613997223,424738916,396295441,695577596,998985614,171910992,945251764,417875103,365178369,379674568,628842342,852393952,367428498,941550785,161553074,110054463,169464789,262753067,224309786,311255965,587983980,429897055,153592496,148765325,117447202,687977781,740886031,53208709,595137380,955414385,609322209,729816885,481192837,562065334,427818631,749135461,250412637,116120732,957532013,152733819,384323962,879332046,667184672,715281145,971959593,557686856,958787345,891174325,298396422,789899121,952576042,746526616,217920522,639849570,530283833,538535038,747021334,508939917,334649861,566608947,956167960,209200713,241562289,637664479,97798430,536348711,961352339,707534130,593508718,637198332,75451326,413835815,99551294,698814167,601569224,475212713,124241938,703592342,710023388,374217363,445300859,437258636,706748606,282549708,326787876,683150184,696724528,834930107,549432371,184544405,394084732,869414527,117271666,88521417,452680857,354183961,480988200,423797122,302369230,330180132,160949429,593093198,496008048,745078679,669125816,850682011,733795247,49137994,846047665,668530872,389299916,200034824,267742178,813714149,351713960,848159433,688126038,697579261,781314678,815713453,348798856,152509595,105892453,615883157,831947533,194081164,467630676,815997335,871319231,145234126,900549145,3069062,487028872,665934873,823183656,216759064,486419963,724044452,732885983,416344308,936323583,46265555,61792684,915787681,988176424,912676341,21747961,573017401,982902217,988495538,990851114,574752400,756480310,744637762,259957808,234819155,540837277,58456834,675452280,951022597,402716023,538694701,552891743,823427053,770381845,924638728,852942852,84082714,171625957,444230254,496800371,124405928,524364055,199359068,218757866,666419772,845607373,974697737,743933980,180454864,408519623,325781774,957335506,805908235,440085735,710577089,875996709,101841479,269728251,832601762,427213508,724702311,531244651,432964304,891927298,266315934,647769027,472863069,938807782,203265743,699802631,941373007,801175070,483646419,121943283,506998537,26660810,272751573,2364238,192144690,423610130,568618929,852002755,888917342,429720835,134394439,515404159,938756925,795038105,243449653,187799443,696063207,142948641,992987396,250645945,43319374,160175527,46848904,942065920,460760016,844837075,902041724,500901714,155274761,145425217,328594938,151407567,42431967,500393859,264737085,342504342,293942177,136204874,897621956,723421435,88179916,15217618,217149641,597675442,678371934,991504195,356919449,18646634,356060662,838043806,751967997,855263858,818632732,893680088,827177007,503562776,271471096,521781219,724400646,281073921,252778562,267590443,10577092,728860095,88261063,387929986,345125881,453137396,55977401,762733774,970944029,868480076,50479967,295249039,110030152,674597364,802660007,505536876,481198392,742427425,391839326,391864411,939002337,446107199,624839622,115801230,214048243,305322501,52272372,29888493,992425829,40393867,851842034,179456753,347553866,180282820,817281188,956384888,320842896,694073560,32270744,135418069,537941963,747498675,377487695,207478701,316845663,607541604,903161505,691370244,963356211,16175093,92952888,796783063,857442642,2004724,453850736,614928368,338012925,774981157,95005590,50431592,700985718,863155580,30396405,219040273,17690338,756936654,650232968,959233096,658576733,903308746,462963273,967325189,15207744,280595138,83170698,473890197,88829212,998624275,470166868,47666716,345946004,80397656,615766310,628063384,37790659,519718091,523874948,282408730,506033286,873222086,985150079,165799587,893112181,336036908,892345689,832087458,927555483,633022742,791785230,226842862,113880945,984155390,8439459,738175849,846967587,562928116,445602516,734370741,557368690,877012151,93809274,961313069,516456845,858224944,959690453,257409145,898039391,948425871,713819489,128305786,554985015,747293820,361818139,854428434,738056429,127513948,939663178,230189056,584922045,651951769,311783219,770549153,21744687,886768733,164189799,452736370,41519797,658054657,780472243,744432418,449806890,858232444,25909506,458192686,228399854,875573903,140292178,669340007,134847925,83445482,971697378,820862017,596912404,137315206,392980523,410180603,998266224,455112271,31496674,634504827,437506140,198508749,332443270,60648379,558873702,827838377,659592872,227857922,976325050,873218318,430041538,373389954,982672024,870922236,432641359,206312367,4156658,640662412,551898509,322166105,976773048,212535117,66608462,712236267,140740712,828094460,903494355,459838086,930828803,642596355,127257352,22838830,150404247,725255870,820902076,880778027,165015509,440939035,764203597,777354703,932673107,248533451,869018198,570542693,748919848,165611030,471112992,419363576,442949793,878680694,889421759,297275043,383675087,917847800,280294180,286321052,196816642,247174490,84173129,468043592,709539603,882922478,870291271,819152541,874663263,568111535,629646805,462872215,499373916,934840240,264232026,736952243,799920056,825333134,716881373,296775408,690423318,878934206,399550227,698797174,100292321,471619008,155317882,333579698,171711784,624840964,805443591,606667839,860893755,527614382,500326085,132177891,915799257,744755819,171288087,967625120,869570074,368721300,871078175,576621377,501573606,351389696,798376576,55308831,844254124,161686452,82893072,814563792,345030302,536240802,403043965,445429650,56915473,478960231,303888628,872012145,853823669,106293604,679237733,392598788,728209023,266301118,877762662,572249027,872549227,833620100,46760528,112944998,414033355,242032641,551155646,407015153,794003403,911373882,742841778,905112027,705500605,274901264,454531998,476215444,225796080,434674789,150843958,644449500,37970173,897107290,834676189,975798522,246630069,28065217,811391565,258614854,403323933,782942698,247538907,344377991,429316621,851930723,164015055,667968952,198738992,506957996,501695840,118268269,248912789,533455519,200560443,42232704,881309727,17988987,926935212,625698809,14268348,342447595,602984888,893574860,952269676,961169154,545241978,812079715,392518811,782501460,110844826,24760627,736525035,632749900,306926736,578365567,864817422,135134585,371132503,492874577,587333485,490462578,379873290,564052372,391123683,913527862,46108977,842078805,273831904,824902004,790993468,746388084,231032845,981580966,943441603,337073234,505770152,228264947,210286195,234174640,345412410,313084113,383348379,330733371,365057898,796236554,747332670,375115071,403382508,81114575,251167350,448105967,16648636,788671973,635217634,362062803,257107339,518864100,349830063,307818743,128896034,609525548,953924587,281252673,112986844,997646331,649424001,373462737,227029869,718426468,842478375,14660171,250823858,409462432,753094490,631330560,285486467,299616205,597725024,44513003,94409895,185401405,221175821,506524141,140189702,253340483,854351839,676103709,869759539,764087876,444956709,592826524,558677644,398785974,380412341,31883892,157023614,376173533,968837577,356840216,565846094,999308063,551293952,561659707,92538284,480596363,474219561,946777086,782456787,858131715,21498562,338843931,217981358,394357399,523714109,550185056,929472018,368239800,654078816,238026458,519021392,7077528,802291537,584335435,331185457,687321983,844846402,622347394,65997751,819916563,693959589,303823766,880985691,832280646,723486306,23849595,167981396,333513472,454316034,401704824,937920147,288958213,446887926,442124798,26887917,79030292,532012156,973159206,246180330,2539609,155703807,83447606,177698797,157442449,202910252,761638484,707024237,488447662,596954341,365042693,293073298,364679703,802080282,558505793,403225911,584830103,625597651,972049047,305064806,728157252,662786931,687055512,885654110,778678886,239087520,897928972,573970000,730930438,198927586,277671323,454901943,158058427,711093322,635323954,893782682,754865813,678797653,442747264,471556180,113495652,223960863,38236812,409054996,180043357,288649080,205931241,163165400,199088964,783984012,609571122,395357506,80997025,255597684,187134886,840066266,435334195,814974671,179411028,238999394,693551854,10175473,657431757,266040193,933695248,893398503,130519590,499780670,11139180,681032047,580760321,875093244,196663978,925022013,59066422,272150446,802308460,761246352,657049041,861390264,638610241,244836478,914686263,762363962,819820610,735302611,471715304,101977623,407948580,913397798,452443459,225500005,903515870,201485776,375292262,622113989,935870332,236457716,698926591,756938805,370746024,575272277,280074354,393753812,756057769,696070979,258144381,600766608,789914647,937212505,326229997,340889761,544593171,191274884,411463018,346448385,89839340,100008479,133630825,853966852,387518322,649564887,966346722,857407348,129769489,432435360,540708448,990231664,540170474,81104070,364149505,618180854,695474810,142470677,917749402,163702297,7209160,795475837,666311536,509681372,846064914,352038495,700128818,256271453,27589385,653917108,861063507,952110338,947367748,578180877,849485142,316563923,576901497,382120729,848262700,252373604,326020527,326709505,769377396,628539420,44582632,53894623,226830769,198041213,339625857,747629276,720685991,823224574,708037386,7314579,223535758,411300659,184579148,670918828,675017050,747807522,17417316,929581658,277500920,433862696,267791248,482585651,306365257,152475815,526649435,682083600,550964874,895337698,95828347,91080783,910072910,700146836,163814988,217706345,997564865,50527151,496849632,916133220,251956848,4625739,73012004,896448071,724667223,329223674,372514772,196179158,545844298,208054034,68407048,698311849,399755632,399465764,360496532,185731424,197898161,873607721,848895782,546993567,56623654,655010261,80969729,452234544,455625333,266612710,872026055,548813230,864752788,941943936,566470801,821504042,541811555,945045748,181046547,874432836,105505807,297064360,120248995,801399019,255055,964812538,972639888,680813355,833506146,23396594,474025642,902378439,174964081,195212812,271447073,210891930,489134730,315113373,893978176,336664111,747430799,948618776,136331508,201293362,415193154,28037567,986314068,768406900,760429476,177871773,639957495,198717577,377889724,223040036,82498569,483232581,865249604,528467057,85656298,456845836,611195975,758981910,439180223,78350765,243464356,98864748,318309161,927484609,858774311,420366157,974362728,815864395,932876194,918108363,307230085,595690017,115202317,504291662,809248520,954424435,515905085,860579485,203507720,351377901,921831322,727253266,505026658,794111178,14276621,168920883,639588399,340017674,960133731,542745886,17226316,911797500,544760029,937917095,31135791,395947418,947463303,587037166,403693590,387311226,686753637,219663178,287327329,208646538,635941857,794341503,784838018,788099044,520518571,466929193,24684308,226222298,594934279,285810826,93693668,430315817,849144061,328997913,606398575,23612612,464695457,146499469,76670677,533875657,145526428,362373676,457030150,99494187,214980231,944972633,182314914,821759129,198277700,657899481,765511870,508811589,942708451,630134403,859491373,636307728,986688384,938996593,701403823,198251182,836824351,880057308,253162974,982733298,439357656,557504194,345114246,233249818,439159614,893805605,571475300,486513406,449091892,429331422,781834523,729521939,791664001,822714176,379472772,41204311,53855614,904516637,498363948,612853977,215134131,490790497,633707136,505990983,279645715,392533222,95249214,785351537,300613808,538154735,606084197,526727952,724343256,443841851,517837412,752348252,725625052,580162453,161603418,280225923,892576592,494917390,353764157,534358608,544198808,306441240,482896583,804669337,821639965,90271262,324199751,532637089,866982450,497809540,409191298,308572325,411383043,61167415,662828537,27266671,31563645,745063280,445541110,44624331,11380100,827906863,399617012,371648241,302690954,582830235,966801520,373858510,752271492,671458162,990956115,142321744,851359029,892400531,924814665,237444006,637366568,974198199,669299709,1302270,509577409,677521340,864576786,683774714,209694656,510456158,471172278,235004975,455470273,762224145,648129787,358147077,504788449,233596367,429229294,247262304,712384901,559840125,65870926,497871790,65869903,553268758,337308125,588569425,167853915,276178840,698865150,169318888,423748227,155947485,617641053,162068804,20778421,512080134,155679577,28165824,545432842,21126656,211638708,441827577,369399959,55112681,13050863,841684874,29937952,699990320,164003363,696056842,823706744,555687578,927865965,730760644,189671119,630231347,130547000,637286082,700080561,887253063,16600821,887221493,184561293,861037259,616041121,232739990,426234592,148341858,677134893,559589736,849226796,346528746,15615235,866580263,454992808,47344243,836273849,660920179,971007109,952439010,909283262,112888496,91453874,609077085,243614614,902045908,247891958,868732418,825671436,233823183,22698988,212444621,779738631,911166800,562028986,435292217,632154297,919190562,617190884,808095964,925683166,512293806,376047612,345162789,294729455,856076574,547903956,960208833,189267270,144458764,895009547,687837251,815356841,805881898,914990147,90611183,441780068,10276617,762025292,984012895,933822515,630750466,978491,274131602,310289745,656571750,994710516,273846400,605834637,968272850,501717191,526975488,587655430,127497465,87735679,477048826,400116140,992725546,673844215,728310993,290667060,699204033,166838741,34096101,358246753,438354467,451669896,682538381,639711026,478448927,833574950,130815248,450539274,350290614,23476711,246240666,31437903,64113790,921028920,179753804,539858949,732720473,191291735,114219724,634865632,335794307,180058304,114716288,80598732,422748646,177963245,318865863,23615242,155528588,986065175,236464405,468865561,304303139,71837431,31080467,799346090,297522789,228584214,250384330,100591819,621899311,894620016,176753353,317058677,265172673,300129868,540410251,439979564,882869702,903236917,826497401,961878862,874420973,745460405,415223840,222829504,672891604,372771793,365576501,65124992,560920232,852027243,372712131,244877869,214803825,727900362,959679204,306759306,964737517,891815230,717294602,458615406,900057038,107298139,635756543,365247659,948131611,872898104,249314640,588293387,928724341,513265250,149332312,817206405,957041059,38904216,526908048,235483887,816476619,171352256,185490015,504719450,979062881,740238735,646125464,340218855,995480290,263841704,325608715,525755029,495594412,174328887,439031698,164797141,76934675,197386652,480365009,495819516,879054725,314573320,173942407,850106587,908894150,415161106,184761077,251596876,470166367,853514617,67508988,563384537,385985039,987779775,577590077,247964435,102281083,4335054,259890718,902102570,402347106,143337716,814832590,102940044,19024992,947499631,582919234,209975883,876443385,268332586,456779911,231204999,191362434,725442675,232802895,741535922,282483235,741469746,487802164,782683468,552347194,592823801,855128883,886235681,13097915,542464262,851567801,82682390,662552478,950584943,125706135,482268022,540892994,80225481,118461972,370047715,190559878,449953605,969265790,461713336,946642070,950108390,438189515,6442109,269369093,179828558,531017006,32261073,735294187,425807625,649193904,849339817};
14 signed main()
15 {
16     int n;n=read();
17     printf("%d",ans[n]);
18     return 0;
19 }
soul受我一拜
原文地址:https://www.cnblogs.com/Juve/p/11187029.html