中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站開發(fā)測試百度手機(jī)助手app免費(fèi)下載

網(wǎng)站開發(fā)測試,百度手機(jī)助手app免費(fèi)下載,如何做網(wǎng)站的cdn,專門做旅游尾單的網(wǎng)站https://www.luogu.com.cn/problem/P3224 1. 永無鄉(xiāng) 題意: 給 n 個島嶼,每個島有一個標(biāo)號,初始修有 m 條路,有兩個操作,操作1 為 給兩個島嶼之間修路,操作2為求出 所有能從當(dāng)前島嶼到達(dá)的島 中標(biāo)號第k小的…

https://www.luogu.com.cn/problem/P3224

1. 永無鄉(xiāng)

題意:

?給 n 個島嶼,每個島有一個標(biāo)號,初始修有 m 條路,有兩個操作,操作1 為 給兩個島嶼之間修路,操作2為求出 所有能從當(dāng)前島嶼到達(dá)的島 中標(biāo)號第k小的島

思路:

求標(biāo)號第k小的島,我們考慮使用權(quán)值線段樹,通過線段樹上二分查找第k小,對于多個島嶼,我們考慮動態(tài)開點(diǎn)建 n 棵線段樹,對于島嶼修路的操作 使用并查集維護(hù)連通塊,并利用線段樹合并實(shí)現(xiàn)島嶼合并

代碼:

#include<bits/stdc++.h>
using namespace std;#define int long long
#define mid ((l+r)>>1)const int N=1e5+5;
int rt[N],n,m,num,id[N],f[N];
int ls[60*N],rs[60*N],cnt[60*N];int find(int x){return x==f[x]?x:f[x]=find(f[x]);}int merge(int x,int y,int l,int r){        //線段樹合并if(!x)return y;if(!y)return x;if(l==r){cnt[x]+=cnt[y];return x;}ls[x]=merge(ls[x],ls[y],l,mid);rs[x]=merge(rs[x],rs[y],mid+1,r);cnt[x]=cnt[ls[x]]+cnt[rs[x]];return x;
}void upd(int &p,int l,int r,int x){    //建樹if(!p)p=++num;if(l==r){cnt[p]=1;return;}if(x<=mid)upd(ls[p],l,mid,x);else upd(rs[p],mid+1,r,x);cnt[p]=cnt[ls[p]]+cnt[rs[p]];
}int q(int p,int l,int r,int k){    //二分查找第k小if(cnt[p]<k)return -1;if(l==r)return l;if(cnt[ls[p]]>=k)return q(ls[p],l,mid,k);return q(rs[p],mid+1,r,k-cnt[ls[p]]);
}void solve(){cin>>n>>m;for(int i=1;i<=n;i++){int x;cin>>x;id[x]=i;upd(rt[i],1,n,x);f[i]=i;}while(m--){int u,v;cin>>u>>v;if(find(u)==find(v))continue;u=find(u),v=find(v);rt[u]=merge(rt[u],rt[v],1,n);f[v]=u;}cin>>m;while(m--){string op;int x,y;cin>>op>>x>>y;if(op=="B"){if(find(x)==find(y))continue;x=find(x),y=find(y);rt[x]=merge(rt[x],rt[y],1,n);f[y]=x;}else{x=find(x);int ans=q(rt[x],1,n,y);if(ans!=-1)ans=id[ans];cout<<ans<<endl;}}return;
}signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int T=1;//cin>>T;while(T--){solve();}return 0;
}

2. 雨天的尾巴

https://www.luogu.com.cn/problem/P4556

題意:

給一棵樹型村莊,每次給 x到y(tǒng)路徑上的村莊發(fā)一袋 z 糧食??,求最后 每個村莊擁有數(shù)量最多的糧食種類

思路:

將樹看成有根樹,取1作為根,每次發(fā)放糧食的操作?利用樹上差分轉(zhuǎn)化為4次單點(diǎn)發(fā)放糧食,直接修改即可,查詢數(shù)量最多的糧食種類,我們采用 權(quán)值線段樹 維護(hù)每種糧食的數(shù)量,建n棵線段樹,最后通過 線段樹合并+dfs 求出線段樹的樹上前綴和

代碼:

#include<bits/stdc++.h>
using namespace std;#define int long longconst int N=1e5+5;
int head[N],cntt=0;        //建圖
struct Edge{int to,next;
}edge[2*N];
void add(int u,int v){edge[++cntt].to=v;edge[cntt].next=head[u];head[u]=cntt;
}int f[N][30],dis[N],n,t;
void init(){                //lcaqueue<int>q;q.push(1);dis[1]=1;while(!q.empty()){int tmp=q.front();q.pop();for(int i=head[tmp];i;i=edge[i].next){int y=edge[i].to;if(dis[y])continue;dis[y]=dis[tmp]+1;f[y][0]=tmp;q.push(y);for(int j=1;j<=t;j++){f[y][j]=f[f[y][j-1]][j-1];}}}
}
int lca(int u,int v){if(dis[u]>dis[v])swap(u,v);for(int i=t;i>=0;i--){if(dis[f[v][i]]>=dis[u])v=f[v][i];}if(u==v)return u;for(int i=t;i>=0;i--){if(f[u][i]!=f[v][i]){u=f[u][i],v=f[v][i];}}return f[u][0];
}#define mid ((l+r)>>1)int X[N],Y[N],Z[N],rt[N],num=0;
int ls[60*N],rs[60*N],cnt[60*N],pos[60*N];void pushup(int p){if(cnt[ls[p]]>cnt[rs[p]]){cnt[p]=cnt[ls[p]];pos[p]=pos[ls[p]];}else if(cnt[rs[p]]>cnt[ls[p]]){cnt[p]=cnt[rs[p]];pos[p]=pos[rs[p]];}else{cnt[p]=cnt[ls[p]];pos[p]=min(pos[ls[p]],pos[rs[p]]);}
}void upd(int &p,int l,int r,int x,int k){if(!p)p=++num;if(l==r){cnt[p]+=k;pos[p]=l;return;}if(x<=mid)upd(ls[p],l,mid,x,k);else upd(rs[p],mid+1,r,x,k);pushup(p);
}int merge(int x,int y,int l,int r){if(!x)return y;if(!y)return x;if(l==r){cnt[x]+=cnt[y];pos[x]=l;return x;}ls[x]=merge(ls[x],ls[y],l,mid);rs[x]=merge(rs[x],rs[y],mid+1,r);pushup(x);return x;
}int ans[N],mx;
void dfs(int x,int ff){for(int i=head[x];i;i=edge[i].next){int y=edge[i].to;if(y==ff)continue;dfs(y,x);rt[x]=merge(rt[x],rt[y],1,mx);}if(cnt[rt[x]])ans[x]=pos[rt[x]];
}void solve(){int m;cin>>n>>m;t=log2(n);for(int i=1;i<n;i++){int u,v;cin>>u>>v;add(u,v);add(v,u);}init();for(int i=1;i<=m;i++){cin>>X[i]>>Y[i]>>Z[i];mx=max(mx,Z[i]);}for(int i=1;i<=m;i++){upd(rt[X[i]],1,mx,Z[i],1);upd(rt[Y[i]],1,mx,Z[i],1);upd(rt[lca(X[i],Y[i])],1,mx,Z[i],-1);if(f[lca(X[i],Y[i])][0])upd(rt[f[lca(X[i],Y[i])][0]],1,mx,Z[i],-1);}dfs(1,1);for(int i=1;i<=n;i++){cout<<ans[i]<<endl;}return;
}signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int T=1;while(T--){solve();}return 0;
}

http://www.risenshineclean.com/news/6457.html

相關(guān)文章:

  • 惠州網(wǎng)站建設(shè)seo網(wǎng)站怎么搭建
  • 做網(wǎng)站 鄭州公司哪家好seo怎么收費(fèi)
  • 上海網(wǎng)站建設(shè)專業(yè)公司自然搜索優(yōu)化
  • 鄄城網(wǎng)站建設(shè)哪家好網(wǎng)上有免費(fèi)的網(wǎng)站嗎
  • google網(wǎng)站怎么做流量app推廣項(xiàng)目從哪接一手
  • 交友a(bǔ)pp搭建seo就業(yè)指導(dǎo)
  • 怎么做網(wǎng)站圖標(biāo)電商平臺運(yùn)營方案
  • 大型網(wǎng)站設(shè)計公司站長素材音效
  • 湛江有幫公司做網(wǎng)站營銷型網(wǎng)站更受用戶歡迎的原因是
  • 公眾號后端框架網(wǎng)站seo排名優(yōu)化價格
  • 無錫做智能網(wǎng)站流量精靈官網(wǎng)
  • 做問卷的網(wǎng)站有哪些內(nèi)容貼吧友情鏈接在哪
  • 北海哪家做網(wǎng)站百度推廣怎么做
  • 個人網(wǎng)站官網(wǎng)如何建立免費(fèi)公司網(wǎng)站
  • 網(wǎng)站建設(shè)的威脅seo百度點(diǎn)擊軟件
  • 北京學(xué)生做兼職的網(wǎng)站電子郵件營銷
  • 做的比較好看的國內(nèi)網(wǎng)站怎么制作個人網(wǎng)站
  • 使用java做新聞網(wǎng)站思路深圳搜索競價賬戶托管
  • 成都網(wǎng)站建設(shè)制作價格有人看片嗎免費(fèi)的
  • 建設(shè)銀行銀行社會招聘網(wǎng)站在線域名解析ip地址
  • 網(wǎng)站活動平臺推廣計劃網(wǎng)絡(luò)域名怎么查
  • 河南做網(wǎng)站 河南網(wǎng)站建設(shè)seo營銷
  • 項(xiàng)目建設(shè)資金來源網(wǎng)站網(wǎng)站百度收錄批量查詢
  • emblog詳細(xì)轉(zhuǎn)wordpress福州seo網(wǎng)站推廣優(yōu)化
  • 做網(wǎng)站代理屬于開設(shè)賭場罪嗎國內(nèi)搜索網(wǎng)站排名
  • 建網(wǎng)站怎么年賺專業(yè)做網(wǎng)站建設(shè)的公司
  • 技術(shù)支持 隨州網(wǎng)站建設(shè)永久不收費(fèi)的軟件app
  • 重慶建站塔山雙喜運(yùn)營培訓(xùn)班有用嗎
  • 局門戶網(wǎng)站的建設(shè)網(wǎng)站怎么創(chuàng)建
  • 怎么做免費(fèi)域名網(wǎng)站百度首頁官網(wǎng)