当前位置: 首页 > news >正文

学网站开发需要报培训机构吗强化防疫指导

学网站开发需要报培训机构吗,强化防疫指导,利用html做博客网站,淄博网站排名优化文章目录介绍#xff1a;题目#xff1a;做法#xff1a;模板题 [P3806 【模板】点分治1](https://www.luogu.com.cn/problem/P3806)代码#xff1a;介绍#xff1a; 将原问题分解成若干相同形式#xff0c;相互独立的子问题#xff0c;各个击破 一般用来解决有关树上路… 文章目录介绍题目做法模板题 [P3806 【模板】点分治1](https://www.luogu.com.cn/problem/P3806)代码介绍 将原问题分解成若干相同形式相互独立的子问题各个击破 一般用来解决有关树上路径的统计和询问 题目 P4178 Tree 给定一棵 n 个节点的树每条边有边权求出树上两点距离小于等于 k 的点对数量。 做法 暴力做法(O(n2)) 点分治做法 选择一个点作为分治中心令其为rt做dfs。对于一条路径path(u,v)其要么经过rt(即lca(u,v) rt)要么在某个子树sub(son[rt])中 把问题形式化为 solve(T,rt) 统计T树中经过rt且长度k的路径数量对T数进行分治work(T)的步骤 1.找到一个分治中心rt 2.anssolve(T,rt)//统计答案(统计所有穿过化的路径) 3.对所有rt的子节点v递归调用work(v) int work(u) {rtfind_rt();//找到重心anssolve(rt);for v∈son[u]:answork(v)return ans; }所有合法路径在上述分治过程中被不重不漏地统计到 详细过程 假设高度一共有h层经过h层递归后到达边界每一层子问题互不重叠 每一层都是O(N) 总复杂度O(H*N) 我们控制H的大小 H 递归的层数 点分治的复杂度被以下两个条件保证 1.hO(log n)每次选T的重心作为rt(重心满足删除后形成的子树大小为之前一半) 2.找重心以及统计答案solve(T,rt)的复杂度O(size(T)),或者带log不与n相关 条件1保证每递归一层size(T)减半log层到达边界 条件2保证每层复杂度为O(n)或者O(nlog n) 点分治总复杂度 O(log n )或O(nlog2n)取决于solve是否带log。 模板题 P3806 【模板】点分治1 题目描述 给定一棵有 n 个点的树询问树上距离为 k 的点对是否存在。 代码 //niiick #includeiostream #includevector #includealgorithm #includequeue #includecstring #includecstdio using namespace std;int read() {int f1,x0;char ssgetchar();while(ss0||ss9){if(ss-)f-1;ssgetchar();}while(ss0ss9){xx*10ss-0;ssgetchar();}return f*x; }const int inf10000000; const int maxn100010; int n,m; struct node{int v,dis,nxt;}E[maxn1]; int tot,head[maxn]; int maxp[maxn],size[maxn],dis[maxn],rem[maxn]; int vis[maxn],test[inf],judge[inf],q[maxn]; int query[1010]; int sum,rt; int ans;void add(int u,int v,int dis) {E[tot].nxthead[u];E[tot].vv;E[tot].disdis;head[u]tot; }void getrt(int u,int pa)//求重心 {size[u]1; maxp[u]0;for(int ihead[u];i;iE[i].nxt) {int vE[i].v;if(vpa||vis[v]) continue;getrt(v,u);size[u]size[v];maxp[u]max(maxp[u],size[v]);}maxp[u]max(maxp[u],sum-size[u]);if(maxp[u]maxp[rt]) rtu; }void getdis(int u,int fa)//每一个子节点到根的距离 {rem[rem[0]]dis[u];for(int ihead[u];i;iE[i].nxt){int vE[i].v;if(vfa||vis[v])continue;dis[v]dis[u]E[i].dis;getdis(v,u);} }void calc(int u) {int p0;for(int ihead[u];i;iE[i].nxt){int vE[i].v;if(vis[v])continue;rem[0]0; dis[v]E[i].dis;getdis(v,u);//处理u的每个子树的disfor(int jrem[0];j;--j)//遍历当前子树的disfor(int k1;km;k)//遍历每个询问{if(query[k]rem[j])test[k]|judge[query[k]-rem[j]];//如果query[k]-rem[j]的路径存在就标记第k个询问}for(int jrem[0];j;--j)//保存出现过的dis于judge{q[p]rem[j];judge[rem[j]]1;}}for(int i1;ip;i)//处理完这个子树就清空judgejudge[q[i]]0;//特别注意一定不要用memeset会T}void solve(int u) { //judge[i]表示到根距离为i的路径是否存在vis[u]judge[0]1; calc(u);//处理以u为根的子树for(int ihead[u];i;iE[i].nxt)//对每个子树进行分治{int vE[i].v;if(vis[v])continue;sumsize[v]; maxp[rt0]inf;//注意sum是以v为根的子树大小getrt(v,0); solve(rt);//在子树中找重心并递归处理} }int main() {nread();mread();for(int i1;in;i){int uread(),vread(),disread();add(u,v,dis);add(v,u,dis);}for(int i1;im;i)query[i]read();//先记录每个询问以离线处理maxp[rt]sumn;//第一次先找整棵树的重心getrt(1,0); solve(rt);//对树进行点分治for(int i1;im;i){if(test[i]) printf(AYE\n);else printf(NAY\n);}return 0; }
http://www.zqtcl.cn/news/266422/

相关文章:

  • 宁波搭建网站专业展馆展厅设计公司深圳
  • 山东省建设工程电子信息网站广州开发区第一小学
  • 网站建设推广重要性河北高端网站建设
  • 网站的seo方案怎么做wordpress自动转内链
  • 番禺手机网站制作推广wordpress远程数据库
  • 企业网站seo外包 s深圳国内设计网站
  • 临海高端营销型网站建设地址免费网站alexa排名查询
  • 做企业网站的轻量级cms建设电子商务网站流程图
  • 淘宝网站设计分析国内在线免费服务器
  • wordpress网站文章加密网站建设 博采网络
  • 哪个网站做美食好一点网络运维个人工作总结
  • 做网红用哪个网站教人做策划的网站
  • 百度免费网站怎样建设wordpress模板目录结构
  • 长沙简单的网站建设公司wordpress+手机应用
  • 用spl做网站wordpress不用缓存
  • 微网站模板标签网站被攻击怎么让百度重新蜘蛛自动抓
  • 自己想做一个网站网页背景怎么设置
  • 国外做项目的网站软件定制外包平台
  • 做网站要用什么软件房地产建设网站
  • 龙岗爱联有学网站建设装饰公司简介
  • pc端网站怎么做自适应哪个公司网站备案快
  • 品牌网站建设黑白I狼J烟台开发区建设业联合网站
  • 做视频网站可以自学吗php html5企业网站源码
  • 阿里云怎么部署网站引流推广平台是什么意思
  • 江山建设工程信息网站营销网讯
  • 网站制作公司 沈阳上海建设主管部门网站
  • 网站建设前期如何做好市场定位分析网络推广主要工作内容
  • 做一个网站的流程是什么金融网站建设方案
  • 汽车维修保养网站模板北京网站建设知名公司排名
  • 网站建设案例分享网络推广网