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

建站用什么代码最好不用服务器做网站

建站用什么代码最好,不用服务器做网站,销售网站的销量统计怎么做,wordpress win2008 r2[NOI2002] 银河英雄传说 题目背景 公元 580158015801 年,地球居民迁至金牛座 α\alphaα 第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展。 宇宙历 799799799 年,银河系的两大军…

[NOI2002] 银河英雄传说

题目背景

公元 580158015801 年,地球居民迁至金牛座 α\alphaα 第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展。

宇宙历 799799799 年,银河系的两大军事集团在巴米利恩星域爆发战争。泰山压顶集团派宇宙舰队司令莱因哈特率领十万余艘战舰出征,气吞山河集团点名将杨威利组织麾下三万艘战舰迎敌。

题目描述

杨威利擅长排兵布阵,巧妙运用各种战术屡次以少胜多,难免恣生骄气。在这次决战中,他将巴米利恩星域战场划分成 300003000030000 列,每列依次编号为 1,2,…,300001, 2,\ldots ,300001,2,,30000。之后,他把自己的战舰也依次编号为 1,2,…,300001, 2, \ldots , 300001,2,,30000,让第 iii 号战舰处于第 iii 列,形成“一字长蛇阵”,诱敌深入。这是初始阵形。当进犯之敌到达时,杨威利会多次发布合并指令,将大部分战舰集中在某几列上,实施密集攻击。合并指令为 M i j,含义为第 iii 号战舰所在的整个战舰队列,作为一个整体(头在前尾在后)接至第 jjj 号战舰所在的战舰队列的尾部。显然战舰队列是由处于同一列的一个或多个战舰组成的。合并指令的执行结果会使队列增大。

然而,老谋深算的莱因哈特早已在战略上取得了主动。在交战中,他可以通过庞大的情报网络随时监听杨威利的舰队调动指令。

在杨威利发布指令调动舰队的同时,莱因哈特为了及时了解当前杨威利的战舰分布情况,也会发出一些询问指令:C i j。该指令意思是,询问电脑,杨威利的第 iii 号战舰与第 jjj 号战舰当前是否在同一列中,如果在同一列中,那么它们之间布置有多少战舰。

作为一个资深的高级程序设计员,你被要求编写程序分析杨威利的指令,以及回答莱因哈特的询问。

输入格式

第一行有一个整数 TTT1≤T≤5×1051 \le T \le 5 \times 10^51T5×105),表示总共有 TTT 条指令。

以下有 TTT 行,每行有一条指令。指令有两种格式:

  1. M i jiiijjj 是两个整数(1≤i,j≤300001 \le i,j \le 300001i,j30000),表示指令涉及的战舰编号。该指令是莱因哈特窃听到的杨威利发布的舰队调动指令,并且保证第 iii 号战舰与第 jjj 号战舰不在同一列。

  2. C i jiiijjj 是两个整数(1≤i,j≤300001 \le i,j \le 300001i,j30000),表示指令涉及的战舰编号。该指令是莱因哈特发布的询问指令。

输出格式

依次对输入的每一条指令进行分析和处理:

  • 如果是杨威利发布的舰队调动指令,则表示舰队排列发生了变化,你的程序要注意到这一点,但是不要输出任何信息。
  • 如果是莱因哈特发布的询问指令,你的程序要输出一行,仅包含一个整数,表示在同一列上,第 iii 号战舰与第 jjj 号战舰之间布置的战舰数目。如果第 iii 号战舰与第 jjj 号战舰当前不在同一列上,则输出 −1-11

样例 #1

样例输入 #1

4
M 2 3
C 1 2
M 2 4
C 4 2

样例输出 #1

-1
1

提示

战舰位置图:表格中阿拉伯数字表示战舰编号

带权并查集
我一开始的代码:

#include <bits/stdc++.h>using namespace std;const int maxn=30000;int pre[maxn+5],d[maxn+5],lazy[maxn+5],num[maxn+5],ind[maxn+5];
int T;
char op;void init()
{for(int i=0;i<=maxn;i++){pre[i]=i;d[i]=0;lazy[i]=0;num[i]=1;ind[i]=0;}
}int findroot(int x)
{if(pre[x]==x) return x;int y= pre[x];int rooty=findroot(y);d[x]+= lazy[y];lazy[x]+= lazy[y];if(--ind[y]==0){lazy[y]=0;}pre[x]=rooty;ind[rooty]++;return rooty;
}
void join(int x,int y)
{int rootx=findroot(x);int rooty=findroot(y);pre[rootx]=rooty;d[rootx]+=num[rooty];lazy[rootx]+=num[rooty];num[rooty]+=num[rootx];ind[rooty]++;
}void query(int x,int y)
{int rootx=findroot(x);int rooty=findroot(y);if (rootx!=rooty){puts("-1");return;}int maxi=max(d[x],d[y]);int mini=min(d[x],d[y]);printf("%d\n", max(maxi-mini-1,0) );}
int main()
{int x,y;while(~scanf("%d",&T)){init();while(T--){scanf(" %c%d%d",&op,&x,&y);if(op=='M'){join(x,y);}else if(op=='C'){query(x,y);}}}return 0;
}

看了题解,发现不用使用lazy数组。
因为d[]维护的是当前结点相对于根结点的距离。
每个结点x的d[x]初始化时是0,只有一次机会作为根结点合并到其它根结点rooty,此时d[x]会有更新。
同时当x的父亲节点y=pre[x]指向新的父结点时,会更新d[y],之后调用findroot(x)也会更新d[x]。

#include<iostream>
#include<cmath>
using namespace std;
int f[30001],s[30001],b[30001];
int find(int o)//查找
{if(f[o]==o) return o;int k=f[o];f[o]=find(f[o]);//路径压缩s[o]+=s[k];//更新当前节点到根的距离return f[o];
}
int main()
{int n;cin>>n;for(int i=1;i<=30000;i++) {f[i]=i;s[i]=0;b[i]=1;}for(int i=1;i<=n;i++){char ch;int x,y,dx,dy;cin>>ch>>x>>y;if(ch=='M'){dx=find(x);//查找x的根dy=find(y);//查找y的根f[dx]=dy;//把x放在y后面s[dx]+=b[dy];//更新x的根到新的根的距离b[dx]+=b[dy];//更新集合大小b[dy]=b[dx];//更新集合大小}if(ch=='C'){dx=find(x);dy=find(y);if(dx!=dy){cout<<-1<<endl;continue;}//不在同一个集合中cout<<abs(s[x]-s[y])-1<<endl;//中间战舰的数量等于x到根的距离减y到根的距离减一。}}return 0;
}

总结:

  1. 使用并查集,当一个结点x指向的结点变化时pre[x]
    无非一下两种情况: 1) x作为根结点 合并到 另一个树的根结点。
  1. x或其子树内结点调用查找操作,将x指向了根结点rootx。
http://www.yayakq.cn/news/14325/

相关文章:

  • 众筹网站建设应该具备哪些资质中太建设集团官方网站
  • 建设电影网站视频互联网网站开发服务合同范本
  • .net 企业网站 模版内部网站开发
  • 建立自己的网站平台须多少钱广厦建设集团官方网站
  • 信誉好的宜昌网站建设营销型网站建设的五力原则包括
  • ps企业网站模板泰格豪雅手表官方网站
  • 网站设计论文框架清溪仿做网站
  • 叫别人做网站需要注意什么国外域名注册服务商
  • 在线做简单的网站吗网络系统工程设计是干什么的
  • 汕头网站建设sagevis电子商务网站名称和网址
  • 网站团购功能怎么做中英文网站asp怎么做
  • 唐山建设企业网站上海有什么互联网公司
  • 做外贸的专业网站大连网站建设#选领超科技
  • 基层建设 官方网站湖北省最新消息今天
  • 怎样做QQ网站呢中山建公司网站
  • 网站公司设计wordpress 招聘网站模板
  • 音乐网站开发分享wordpress 海贼王
  • 西安网站建设聚星互联百度快照手机版网页版
  • 网站建设是用自己的服务器wordpress点赞功能纯代码
  • 企业网站建设策划书标准版做app动态界面的网站有哪些
  • 网站遭攻击app制作平台要多少钱
  • 安国网站建设优化品牌seo关键词
  • 百度怎样收录网站网络培训网站
  • 有教做翻糖的网站吗太原网站建设方案报价
  • 网站建设合同中的违约责任joomla功能型网站建设
  • 开发商城网站建设wordpress 增加备案
  • 江阴网站建设工作室门户类网站建设需要多少钱
  • 网站的修改购买腾讯云主机可以直接做网站
  • 网站建设与管理的内容wordpress rate
  • 网站后台安装中国遵义门户网站