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

C语言网站开发pdf物联网设计

C语言网站开发pdf,物联网设计,岳阳seo优化,北沙滩网站建设来自FallDream的博客#xff0c;未经允许#xff0c;请勿转载#xff0c;谢谢。 Linux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器#xff0c;你可以通过一行命令安装某一个软件包#xff0c;然后软件包管理器会帮助你从软件源下载软件包#xff0c;同时…来自FallDream的博客未经允许请勿转载谢谢。   Linux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器你可以通过一行命令安装某一个软件包然后软件包管理器会帮助你从软件源下载软件包同时自动解决所有的依赖即下载安装这个软件包的安装所依赖的其它软件包完成所有的配置。Debian/Ubuntu使用的apt-getFedora/CentOS使用的yum以及OSX下可用的homebrew都是优秀的软件包管理器。 你决定设计你自己的软件包管理器。不可避免地你要解决软件包之间的依赖问题。如果软件包A依赖软件包B那么安装软件包A以前必须先安装软件包B。同时如果想要卸载软件包B则必须卸载软件包A。现在你已经获得了所有的软件包之间的依赖关系。而且由于你之前的工作除0号软件包以外在你的管理器当中的软件包都会依赖一个且仅一个软件包而0号软件包不依赖任何一个软件包。依赖关系不存在环若有m(m≥2)个软件包A1,A2,A3,…,Am其中A1依赖A2A2依赖A3A3依赖A4……Am−1依赖Am而Am依赖A1则称这m个软件包的依赖关系构成环当然也不会有一个软件包依赖自己。 现在你要为你的软件包管理器写一个依赖解决程序。根据反馈用户希望在安装和卸载某个软件包时快速地知道这个操作实际上会改变多少个软件包的安装状态即安装操作会安装多少个未安装的软件包或卸载操作会卸载多少个已安装的软件包你的任务就是实现这个部分。注意安装一个已安装的软件包或卸载一个未安装的软件包都不会改变任何软件包的安装状态即在此情况下改变安装状态的软件包数为0。 把安装看成1未安装看成0 发现安装操作就是查询它到根上0的数量 并把他们都变成1 卸载操作就是查询子树内1的数量并把他们都变成0 所以树剖之后线段树就行了 #includeiostream #includecstdio #define MN 100000 using namespace std; inline int read() {int x 0 , f 1; char ch getchar();while(ch 0 || ch 9){ if(ch -) f -1; ch getchar();}while(ch 0 ch 9){x x * 10 ch - 0;ch getchar();}return x * f; }int n,head[MN5],cnt0,q,size[MN5],mx[MN5],dep[MN5],nl[MN5],nr[MN5],dn0,top[MN5],fa[MN5]; struct edge{int to,next;}e[MN5]; inline void ins(int f,int t){e[cnt](edge){t,head[f]};head[f]cnt;} struct Tree{int l,r,x,val,tag;}T[MN*45];void Pre(int x) {size[x]1;mx[x]0;for(int ihead[x];i;ie[i].next){dep[e[i].to]dep[x]1;Pre(e[i].to);size[x]size[e[i].to];if(size[e[i].to]size[mx[x]]) mx[x]e[i].to;} }void Dfs(int x,int tp) {top[x]tp;nl[x]dn;if(mx[x]) Dfs(mx[x],tp);for(int ihead[x];i;ie[i].next)if(e[i].to!mx[x]) Dfs(e[i].to,e[i].to);nr[x]dn; } void Build(int x,int l,int r) {if((T[x].ll)(T[x].rr)) return;int midlr1;Build(x1,l,mid);Build(x1|1,mid1,r); }inline void mark(int x,int v) {T[x].tag1;T[x].valv;T[x].x(T[x].r-T[x].l1)*v; }void pushdown(int x) {T[x].tag0;mark(x1,T[x].val);mark(x1|1,T[x].val); }int Query(int x,int l,int r,int ad) {if(T[x].llT[x].rr){int ansT[x].x;mark(x,ad);return ans;}if(T[x].tag) pushdown(x);int midT[x].lT[x].r1,ans0;if(rmid) ansQuery(x1,l,r,ad);else if(lmid) ansQuery(x1|1,l,r,ad);else ansQuery(x1,l,mid,ad)Query(x1|1,mid1,r,ad); return T[x].xT[x1].xT[x1|1].x,ans; }int Solve_Chain(int x) {int sum0;for(;x;xfa[top[x]])sumdep[x]-dep[top[x]]1-Query(1,nl[top[x]],nl[x],1);return sum; }int Solve_Tree(int x){return Query(1,nl[x],nr[x],0);} char op[20]; int main() {nread();for(int i2;in;i) fa[i]read()1,ins(fa[i],i);Pre(1);Dfs(1,1);Build(1,1,n);qread(); for(int i1;iq;i){scanf(%s,op1);int xread()1;if(op[1]i) printf(%d\n,Solve_Chain(x));if(op[1]u) printf(%d\n,Solve_Tree (x));}return 0; } 转载于:https://www.cnblogs.com/FallDream/p/Noi2015d1t2.html
http://wiki.neutronadmin.com/news/118846/

相关文章:

  • 企业网站关键词应如何优化网页设计答辩问题及答案
  • 做淘宝客要自己的网站怎么快速做网站排名
  • 网站建设与服务费是什么服务三亚专业网站建设
  • 做网站关键词wordpress 固定链接插件
  • 高校网站建设的文章wordpress模板是什么
  • 青岛哪家做网站好网站开发全栈工程师技能图
  • 找事情做的网站河南平台网站建设价位
  • 中山做营销型网站公司标志空间网站
  • 河南网站建设定制node.js做网站
  • 镇海企业建站连云港东海县做网站
  • 网站的代运营网站后台文章编辑器
  • 官方购物网站正品深圳公司注册地址新规定
  • 自己建商城型网站做餐饮培训网站广告
  • 买了空间和域名 怎么做网站简洁中文网站模板下载
  • 中国建设管理信息网站怎样在设计网站做图赚钱吗
  • 眉山住房和城乡建设局网站电子商务平台中搜索词拆解包括
  • 宽带技术网网站佛山中小企业网站制作
  • 雄县没有做网站的公司网站建设及优化 赣icp
  • 小企业网站建设的连接方式家用电器网站建设
  • 墨刀怎么做网站wordpress修改字体加载
  • 邯郸网站设计应搜韦欣cidun8上词什么叫网站后台
  • 广州企业网站建设哪家服务好万峰科技著.asp.net网站开发四酷全书电子工业出版社
  • 仿爱奇艺网站源码免费做苗木的网站
  • 河南做网站联系电话学历提升报名
  • 柳州网站建设哪里有logo设计的最好的公司
  • 企业宣传册免费模板网站广西注册公司网站
  • 毕设做网站太简单外贸怎么入行
  • 无法连接wordpress站点做洗化的网站
  • 最好设计网站建设wordpress 暗箱
  • 网站的推广和宣传方式国外访问国内网站速度