日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 充電吧
[導(dǎo)讀]ll?exmod[100005],rmod[100005]; ll?multimod(ll?a,ll?b,ll?mod) { ????ll?ans?=?0; ????for?(?;?b;?b?>

ll?exmod[100005],rmod[100005];

ll?multimod(ll?a,ll?b,ll?mod)
{
????ll?ans?=?0;
????for?(?;?b;?b?>>=?1,?a?=?(a<>=1;
????}
????return?res;
}
void?Init()
{
????memset(exmod,0,sizeof(exmod));
????exmod[0]=1;
????for(int?i=1;?i<100005;?i++)
????????exmod[i]=(exmod[i-1]*i)%INF;
????for(int?i=1;?iN)return?0;
????if(K==N)return?1;
????if(K==0)return?1;
????return?(((exmod[N]*rmod[K])%INF)*rmod[N-K])%INF;
}
///kmp

#define?M?1000010
char?s[M],t[M];
int?next[M],sum;
void?getNext()//求next數(shù)組
{
int?i,j;
next[0]=-1;
for(i=1,j=-1;s[i];i++){
	while(j!=-1&&s[i]!=s[j+1])j=next[j];//從s[j+1]開始找與s[i]相同的字母
		if(s[j+1]==s[i])j++;
			next[i]=j;//如果找到相同字母,next[i]記錄此位置,否則next[i]=next[i-1]
		}
}
void?kmp()
{
int?i,j;
sum=0;
getNext();
for(i=0,j=-1;t[i];i++){
	while(j!=-1&&s[j+1]!=t[i])j=next[j];//按next[j]后退找出與t[i]相同的s[j+1]
		if(s[j+1]==t[i])j++;//如果找到則向后前進(jìn)
		if(!s[j+1]){//如果在t中找到完整的s
			sum++;//計(jì)數(shù)增1
			j=next[j];//按next后退
				}
		}
}
///rmp?預(yù)處理?比線段樹快
void?rmq_init()
{
????int?i,j,k,m;
????m=(int)(log(n)/log(2.0));
????for(i=1;?i<=n;?i++)
????{
????????mx[i][0]=mm[i][0]=A[i];
????}
????for(j=1;?j<=m;?j++)
????{
????????for(i=1;?i<=n;?i++)
????????{
????????????mx[i][j]=mx[i][j-1];
????????????k=1<<(j-1);
????????????if(i+k<=n)
????????????????mx[i][j]=max(mx[i][j],mx[i+k][j-1]);
????????}
????}
????for(j=1;?j<=m;?j++)
????{
????????for(i=1;?i<=n;?i++)
????????{
????????????mm[i][j]=mm[i][j-1];
????????????k=1<<(j-1);
????????????if(i+k<=n)
????????????????mm[i][j]=min(mm[i][j],mm[i+k][j-1]);
????????}
????}
}
int?rmq_query(int?l,int?r)
{
????int?i,j,m;
????m=(int)(log(r-l+1)/log(2.0));
????i=max(mx[l][m],mx[r-(1<<m)+1][m]);
????j=min(mm[l][m],mm[r-(1<<m)+1][m]);
????return?i-j;
}
///輸出串中最對(duì)稱最長(zhǎng)的對(duì)稱長(zhǎng)度
int?f(char?*gg){
????????int?maxlen?=?1;//最大長(zhǎng)度
????????int?len=strlen(gg);
????????int?record[len];//存包含該位及前個(gè)元素最長(zhǎng)對(duì)稱子串
????????record[0]=1;
????????int?i=1;
????????for(;i=0?&&?gg[i]?==?gg[i-record[i-1]-1]){
????????????????????????max?=?max>(record[i-1]?+?2)??max:(record[i-1]?+2);
????????????????}
????????????????int?k?=?1;
????????????????while(gg[i]?==?gg[i-k]){
????????????????????????k++;
????????????????}
????????????????max?=?max>k??max:k;
????????????????record[i]?=?max;
????????????????if(record[i]>maxlen)?maxlen=record[i];
????????}
????????return?maxlen;
}
///編輯距離
首先定義這樣一個(gè)函數(shù)——edit(i,?j),它表示第一個(gè)字符串的長(zhǎng)度為i的子串到第二個(gè)字符串的長(zhǎng)度為j的子串的編輯距離。
顯然可以有如下動(dòng)態(tài)規(guī)劃公式:
if?i?==?0?且?j?==?0,edit(i,?j)?=?0
if?i?==?0?且?j?>?0,edit(i,?j)?=?j
if?i?>?0?且j?==?0,edit(i,?j)?=?i
if?i?≥?1??且?j?≥?1?,edit(i,?j)?==?min{?edit(i-1,?j)?+?1,?edit(i,?j-1)?+?1,?edit(i-1,?j-1)?+?f(i,?j)?},當(dāng)?shù)谝粋€(gè)字符串的第i個(gè)字符不等于第二個(gè)字符串的第j個(gè)字符時(shí),f(i,?j)?=?1;否則,f(i,?j)?=?0。
for(i=0;i<len1;i++){
		dp[i][0]?=?i?;
	}
	for(j=0;j<len2;j++){
		dp[0][j]?=?j?;
	}
	for(i=1;i<=len1;i++){
		for(j=1;j<=len2;j++){
			if(str1[i-1]?==?str2[j-1]){
				dp[i][j]?=?dp[i-1][j-1];	//對(duì)應(yīng)字母相等,dp值不增加
			}
			else{//三個(gè)形參分別對(duì)應(yīng)str2在str1的基礎(chǔ)上增加,減少和修改的情況
				dp[i][j]?=?min(?dp[i][j-1]+1?,?dp[i-1][j]+1?,?dp[i-1][j-1]+1?);
			}
		}
	}
	return?dp[len1][len2];
單元最短路徑?
Bellman-Ford?算法
記從起點(diǎn)S出發(fā)到頂點(diǎn)i的最短距離為d[i]
d[i]=min?{d[i],d[j]+e(j,i)}
記當(dāng)前到頂點(diǎn)i的最短路長(zhǎng)度為d[i]
并設(shè)初值d[s]=0,d[i]=INF
再不斷使用?上面的公式更新d的值
從頂點(diǎn)from指向頂點(diǎn)to的cost值

const?int?MAX_E=1000;
const?int?MAX_V=1000;
struct?edge
{
????int?from;
????int?to;
????int?cost;
};
edge?es[MAX_E];//邊
int?d[MAX_E];//最短距離
int?V;//頂點(diǎn)數(shù)
int?E;//邊數(shù)
//求解從頂點(diǎn)S出發(fā)到所有點(diǎn)的最短距離
void?shortest_path(int?s)
{
????for(int?i=0;?i<V;?i++)
????????d[i]=INF;
????d[s]=0;
????while(true)
????{
????????bool?update=false;
????????for(int?i=0;?id[e.from]+e.cost)?//精華
????????????{
????????????????d[e.to]=d[e.from]+e.cost;
????????????????update=true;
????????????}
????????}
????????if(!update)
????????????break;
????}
}
單元最短路徑
priority_queue優(yōu)化的Dijkstra
const?int?MAX_E=1000;
const?int?MAX_V=1000;
struct?edge
{
????int?to;
????int?cost;
};
typedef?pairP;//first是最短距離,second是頂點(diǎn)編號(hào)
int?V;
VectorG[MAX_V];
int?d[MAX_V];
void?Dijkstra(int?s)
{
//通過(guò)指定greater的參數(shù),堆按照從小到達(dá)的順序取出值
????priority_queue<P,?vector,?greater>?que;
????fill(d,d+V,INF);
????d[s]=0;
????que.push(P(0,s));
????while(!que.empty())
????{
????????P?p?=?que.top();
????????que.pop();
????????int?v=p.second;
????????if(d[v]<p.first)
????????????continue;
????????for(int?i=0;?id[v]+e.cost)
????????????{
????????????????d[e.to]=d[v]+e.cost;
????????????????que.push(P(d[e.to],e.to));
????????????}
????????}
????}
}
最小生成樹?Spanning?tree
Prim?算法
首先,我們假設(shè)有一顆只包含一個(gè)頂點(diǎn)V的樹T
然后,貪心地選取T和其他頂點(diǎn)之間項(xiàng)鏈的最小權(quán)值的邊
并把它加入到T中
不斷的進(jìn)行這個(gè)操作,就可以得到一個(gè)Spanning?tree?了
const?int?MAX_E=1000;
const?int?MAX_V=1000;
int?cost[MAX_V][MAX_V];
int?mincost[MAX_V];//從頂點(diǎn)X出發(fā)的邊到每個(gè)頂點(diǎn)的最小權(quán)值
bool?used[MAX_V];//頂點(diǎn)i是否包含在集合X中
int?V;//頂點(diǎn)數(shù)
int?Prim()
{
????for(int?i=0;?i<V;?i++)
????{
????????mincost[i]=INF;
????????used[i]=false;
????}
????mincost[0]=0;
????int?res=0;
????while(true)
????{
????????int?v=-1;//從不屬于X的頂點(diǎn)集合中選擇X到其權(quán)值最小的頂點(diǎn)
????????for(int?u=0;?u<V;?u++)
????????{
????????????if(!used[u]&&(v==-1||mincost[u]<mincost[v]))
????????????????v=u;
????????}
????????if(v==-1)
????????????break;
????????used[v]=true;//把頂點(diǎn)v加入到X
????????res+=mincost[v];//把邊的長(zhǎng)度加入到結(jié)果里
????????for(int?u=0;?u<V;?u++)
????????{
????????????mincost[u]=min(mincost[u],cost[v][u]);
????????}
????}
????return?res;
}
Kruskal?算法
按照邊的權(quán)值的順序從小到大查看一遍
如果不產(chǎn)生圈(重邊也算在內(nèi))
就把當(dāng)前這條邊加入到生成樹中
如何判斷是否產(chǎn)生圈
假設(shè)現(xiàn)在要把連接頂點(diǎn)u和v的邊e加入到生成樹中。
如果加入之前u和v不在同一個(gè)連通分量里,
那么加入e也不會(huì)產(chǎn)生圈
反之,如果u和v在同一個(gè)連通分量里
那么一定會(huì)產(chǎn)生圈
可以使用并查集高效地判斷是否屬于同一個(gè)連通分量
const?int?MAX_E=1000;
const?int?MAX_V=1000;
struct?edge
{
????int?u;
????int?v;
????int?cost;
};
bool?cmp(edge?e1,edge?e2)
{
????return?e1.cost<e2.cost;
}
edge?es[MAX_E];
int?V,E;//頂點(diǎn)數(shù)和邊數(shù)
int?set[MAX_V];//并查集
void?init_union_find(int?n)
{
????for(int?i=0;?i<n;?i++)
????????set[i]=i;
}
void?find(int?x)
{
????if(set[x]==x)
????????return?x;
????else
????????return?set[x]=find(set[x]);
}
void?unite(int?x,int?y)
{
????x=find(x);
????y=find(y);
????if(x==y)
????????return?;
????if(yx)
????????set[y]=x;
}
bool?same(int?x,int?y)
{
????return?find(x)==find(y);
}
int?kruskal()
{
????sort(es,es+E,cmp);//從小到大排序
????init_union_find(V);//并查集初始化
????int?res=0;
????for(int?i=0;?i<E;?i++)
????{
????????edge?e=es[i];
????????if(same(e.u,e.v))
????????{
????????????unite(e.u,e.v);
????????????res+=e.cost;
????????}
????}
????return?res;
}
//定義結(jié)構(gòu),使用運(yùn)算符重載,自定義優(yōu)先級(jí)1??
struct?cmp1{??
????bool?operator?()(int?&a,int?&b){??
????????return?a>b;//最小值優(yōu)先??
????}??
};??
struct?cmp2{??
????bool?operator?()(int?&a,int?&b){??
????????return?a<b;//最大值優(yōu)先??
????}??
};??
//定義結(jié)構(gòu),使用運(yùn)算符重載,自定義優(yōu)先級(jí)2??
struct?number1{??
????int?x;??
????bool?operator?<?(const?number1?&a)?const?{??
????????return?x>a.x;//最小值優(yōu)先??
????}??
};??
struct?number2{??
????int?x;??
????bool?operator?<?(const?number2?&a)?const?{??
????????return?x<a.x;//最大值優(yōu)先??
????}??
};??
priority_queueque;//采用默認(rèn)優(yōu)先級(jí)構(gòu)造隊(duì)列??
??
????priority_queue<int,vector,cmp1>que1;//最小值優(yōu)先??
????priority_queue<int,vector,cmp2>que2;//最大值優(yōu)先??
??
????priority_queue<int,vector,greater>que3;//注意“>>”會(huì)被認(rèn)為錯(cuò)誤,??
??????????????????????????????????????????????????????//這是右移運(yùn)算符,所以這里用空格號(hào)隔開??
????priority_queue<int,vector,less>que4;////最大值優(yōu)先??
??
????priority_queueque5;??
????priority_queueque6;
匈牙利算法?求最大匹配
bool?find(int?x)??
{????
????int?i,j;????
????for?(j=1;j<=m;j++)??
????{????//掃描每個(gè)妹子????
????????if?(line[x][j]==true?&&?used[j]==false)??????????
????????//如果有曖昧并且還沒(méi)有標(biāo)記過(guò)(這里標(biāo)記的意思是這次查找曾試圖改變過(guò)該妹子的歸屬問(wèn)題,但是沒(méi)有成功,所以就不用瞎費(fèi)工夫了)????
????????{????
????????????used[j]=1;????
????????????if?(girl[j]==0?||?find(girl[j]))???
????????????{?????
????????????????//名花無(wú)主或者能騰出個(gè)位置來(lái),這里使用遞歸????
????????????????girl[j]=x;????
????????????????return?true;????
????????????}????
????????}????
????}????
????return?false;????
}????
??
for?(i=1;i<=n;i++)????
{????
????memset(used,0,sizeof(used));????//這個(gè)在每一步中清空????
????if?find(i)?all+=1;????
}
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

北京2024年12月11日 /美通社/ -- 12月6日,由軟通動(dòng)力、鴻蒙生態(tài)服務(wù)(深圳)有限公司、徐州報(bào)業(yè)傳媒集團(tuán)聯(lián)合華為開發(fā)者聯(lián)盟舉辦的"鴻蒙啟智?漢韻徐州:原生鴻蒙使能徐州專場(chǎng)推介會(huì)"隆重召開。...

關(guān)鍵字: 鴻蒙 HARMONY OS 模板

前言:大家好,今天給大家分享一篇關(guān)于c模板總結(jié)概述.模板(Template)指C程序設(shè)計(jì)設(shè)計(jì)語(yǔ)言中采用類型作為參數(shù)的程序設(shè)計(jì),支持通用程序設(shè)計(jì)。C的標(biāo)準(zhǔn)庫(kù)提供許多有用的函數(shù)大多結(jié)合了模板的觀念,如STL以及IOStrea...

關(guān)鍵字: 模板

前言:大家好,今天給大家分享一篇關(guān)于c模板總結(jié)概述.模板(Template)指C程序設(shè)計(jì)設(shè)計(jì)語(yǔ)言中采用類型作為參數(shù)的程序設(shè)計(jì),支持通用程序設(shè)計(jì)。C的標(biāo)準(zhǔn)庫(kù)提供許多有用的函數(shù)大多結(jié)合了模板的觀念,如STL以及IOStrea...

關(guān)鍵字: 模板

北京2023年9月12日 /美通社/ -- 新能源汽車的動(dòng)力電池,需要哪些標(biāo)準(zhǔn)?車載無(wú)線通信,哪些參數(shù)需要統(tǒng)一?建筑咨詢應(yīng)怎么作?9月1日至10月22日,首屆"ISO國(guó)際標(biāo)準(zhǔn)化青年之星大賽"活動(dòng)啟動(dòng),邀請(qǐng)18歲至35歲高...

關(guān)鍵字: ISO 大賽 模板 寧德時(shí)代

北京2023年8月15日 /美通社/ -- 8月11日,以"推動(dòng)基于用戶體驗(yàn)的產(chǎn)品質(zhì)量變革"為主題的第十一屆中國(guó)用戶體驗(yàn)大會(huì)在南京開幕。以科技為引領(lǐng)的數(shù)字化轉(zhuǎn)型浪潮不斷涌現(xiàn),企業(yè)競(jìng)爭(zhēng)愈發(fā)激烈,用戶體驗(yàn)...

關(guān)鍵字: 創(chuàng)客 AI 模板 模塊化

(全球TMT2022年9月22日訊)建筑項(xiàng)目管理軟件領(lǐng)域企業(yè)InEight Inc.宣布了最新的軟件創(chuàng)新,包括范圍、設(shè)計(jì)和資源管理方面的新流程標(biāo)準(zhǔn)化,以及新的進(jìn)展跟蹤功能和創(chuàng)建基準(zhǔn)驗(yàn)證型進(jìn)程預(yù)估和時(shí)間表的能力。該更新還...

關(guān)鍵字: 軟件 進(jìn)程 應(yīng)用程序 模板

(全球TMT2022年7月28日訊)創(chuàng)客貼正式推出公益版會(huì)員項(xiàng)目,皆在通過(guò)創(chuàng)意內(nèi)容智能解決方案,提升公益組織的內(nèi)容生產(chǎn)能力,降低公益組織設(shè)計(jì)成本。目前,已簽約使用的公益組織達(dá)500余家,好公益平臺(tái)、南都公益基金會(huì)、北京...

關(guān)鍵字: 創(chuàng)客 模板 美的 數(shù)字資產(chǎn)

北京2022年7月28日 /美通社/ -- 在數(shù)字化經(jīng)濟(jì)、新媒體時(shí)代背景下,創(chuàng)意視覺(jué)設(shè)計(jì)對(duì)公益組織的重要性愈發(fā)凸顯。一張精美的視覺(jué)海報(bào),可以迅速吸引大眾眼球并喚起心中的感知,易于將公益信息加速傳播。 因此想要提升公益事...

關(guān)鍵字: 創(chuàng)客 大眾 模板 美的

Mixpanel將創(chuàng)業(yè)計(jì)劃提供給更多公司,推出免費(fèi)公司KPI儀表板模板,幫助初創(chuàng)公司衡量重要指標(biāo)  舊金山2022年7月20日 /美通社/ -- Mix...

關(guān)鍵字: PANEL MIX 儀表 模板

助力品牌快速布局AR虛擬試妝及AI肌膚檢測(cè)服務(wù) 為更多品牌及消費(fèi)者打造個(gè)性化、專屬化的淘寶電商購(gòu)物之旅 上海2022年6月13日 /美通社/ -- 一年一度的淘寶618正如火如荼的進(jìn)行中。對(duì)于部分品牌來(lái)說(shuō)...

關(guān)鍵字: 模板 移動(dòng) 小程序 AI技術(shù)
關(guān)閉