重组公司

51Nod 1525 重组公司

题目来源: CodeForces

基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题

有n个人在公司里面工作。员工从1到n编号。每一个人属于一个部门。刚开始每一个人在自己的部门负责自己的项目,这样的话公司里面就有n个部门。

然而,公司内部出现了危机,需要合并一些部门,以提高工作效率。team(person) 表示person这个人所在的部门。有以下两种合并操作:

1.    合并 team(x) 和 team(y)。 x和 y (1≤x,y≤n)是员工编号。如果team(x) 和 team(y)是同一个部门,那么就不操作。

2.    合并team(x),team(x+1),...,team(y),x 和 y (1≤x≤y≤n)是员工编号。

有一些查询操作,查询员工x 和 y (1≤x,y≤n)是否属于同一部门。

Input

单组测试数据。
第一行有两个整数n 和 q (1≤n≤200000, 1≤q≤500000)表示员工的数目和操作数目。
接下来q行,每行的格式是type x y。type∈{1,2,3}。如果type=1 或者 type=2,那么表示第一种或者第二种合并操作。如果type=3,表示查询员工x和y是否属于同一部门。

Output

对于第三种查询,如果属于同一部门输出YES,否则输出NO。

Input示例

样例输入1
8 6
3 2 5
1 2 5
3 2 5
2 4 7
2 1 2
3 1 7

Output示例

样例输出1
NO
YES
YES主要看操作2开一个数组near[],near[i]=j表示从i往前,与i不同的第一个部门是j然后i从y倒着枚举到x,i每次跳到near[i]一、优化1:读入优化优化2:输出用puts优化3:函数前+inline加了这3个优化刚刚卡过去,2个点都900多ms了
#include<cstdio>
#define N 200001
using namespace std;
int n,m;
int fa[N],near[N];
int type,x,y;
inline int find(int i) {return fa[i]==i ? fa[i]:fa[i]=find(fa[i]);}
inline int init()
{
    int x=0;char c=getchar();
    while(c<‘0‘||c>‘9‘) c=getchar();
    while(c>=‘0‘&&c<=‘9‘) {x=x*10+c-‘0‘;c=getchar();}
    return x;
}
inline void unionn()
{
    fa[find(x)]=find(y);
}

 inline void merge()
  {
   int t,i=y;
   while(i>=x&&(t=near[i])>=x)
   {
      fa[find(t)]=fa[find(i)];
      near[i]=near[t];
      i=t;
   }
  }

int main()
{
    n=init();m=init();
    for(int i=1;i<=n;i++)
    {
        fa[i]=i;near[i]=i-1;
    }
    for(int i=1;i<=m;i++)
    {
        scanf("%d",&type);
        x=init();y=init();
        if(type==1) unionn();
        else if(type==2) merge();
        else
        {
            int r1=find(x),r2=find(y);
            if(r1==r2) puts("YES\n");
            else puts("NO\n");
        }
    }
} 

二、

事实证明读入一个数字用读入优化也比scanf快

我真的只是把type的读入由scanf改成了也用读入优化



#include<cstdio>
#define N 200001
using namespace std;
int n,m;
int fa[N],near[N];
int type,x,y;
inline int find(int i) {return fa[i]==i ? fa[i]:fa[i]=find(fa[i]);}
inline int init()
{
    int x=0;char c=getchar();
    while(c<‘0‘||c>‘9‘) c=getchar();
    while(c>=‘0‘&&c<=‘9‘) {x=x*10+c-‘0‘;c=getchar();}
    return x;
}
inline void unionn()
{
    fa[find(x)]=find(y);
}
inline void merge()
{
    int t,i=y;
    while(i>=x&&(t=near[i])>=x)
    {
        fa[find(t)]=fa[find(i)];
        near[i]=near[t];
        i=t;
    }
}
int main()
{
    n=init();m=init();
    for(int i=1;i<=n;i++)
    {
        fa[i]=i;near[i]=i-1;
    }
    for(int i=1;i<=m;i++)
    {
        type=init();x=init();y=init();
        if(type==1) unionn();
        else if(type==2) merge();
        else
        {
            if(find(x)==find(y)) puts("YES\n");
            else puts("NO\n");
        }
    }
} 

 
时间: 2024-10-20 14:55:34

重组公司的相关文章

1008_Google (谷歌)公司财报

09_Google 的策略 Alphabet今天的市值是7,222亿美金,仅次于苹果公司. Alphabet 是谁? 它是Google的母公司.它是最有希望能超过Apple的公司. 由于良好的预期,受投资者热捧,Google的市盈率37倍. 所以虽然Google的母公司市值和苹果只差20%.但营收差一倍多: Alphabet 怎么赚钱? 和苹果不一样,基本上靠广告,当然是基于Google的搜索. 2017财年预计营收1,094亿美金(Q4还没发布) , 预计利润250亿美金.(不计欧盟27亿罚款

7.2模拟赛

1.lpy 的魔法农场 Description 有 n 个人在 lpy 的农场里面工作.员工从 1 到 n 编号.每一个人种一种蘑菇.刚开始每一个人在自己的田地负责自己的蘑菇,这样的话公司里面就有 n 种蘑菇. Lpy 种变异的蘑菇,变异蘑菇需要许多普通蘑菇通过魔法合成,blong(x) 表示 x 这个人所在的部门.有以下两种合成操作: 魔法合成 blong(x) 和 blong(y). x 和 y (1≤x,y≤n)是员工编号.如果 blong(x) 和 blong(y)是种的同一种蘑菇,那么

中国股市十大传奇人物

 中国股市十大传奇人物一 中国证券教父管金生 滚滚大盘无定数,涨跌淘尽英雄,成败输赢转头空,股市依旧在,几度夕阳红.不能否认,每一个人,就是一部历史.盘点中国股市的草莽英雄,尽管终归平淡,但他们无一不让管理层焦头烂额,管金生.阚治东.张国庆--. 曾经,国内最大.战无不胜的万国证券,一日而亡,震惊中外,以至于英国<金融时报>称1995年2月23日此一天为"中国证券史上最黑暗的一天". 为此,从本期开始,我将带你去缅怀这些"英雄",尽管时代变迁,但市场却还

网络地址转换(NAT)

网络地址转换(NAT)NAT属接入广域网(WAN)技术,是一种将私有(保留)地址转化为公有(合法)IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中.原因很简单,NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的×××,隐藏并保护网络内部的计算机.基本网络地址转换(Basic NAT)是一种将一组 IP地址映射到另一组 IP 地址的技术,这对终端用户来说是透明的.网络地址端口转换(NAPT)是一种将群体网络地址及其对应 TCP/UDP

4.20日第13次作业.,20章战略管理,21章业务流程管理和重组,22章知识管理,高项,29-田哲琦

4.20日第13次作业.,20章战略管理,21章业务流程管理和重组,22章知识管理,高项,29-田哲琦 20章.战略管理1.企业战略的特点有哪些?P420-421 答:1).全局性 2).长远性 3).抗争性 4).纲领性 2.企业战略决策的特点有哪些?P421答:1).决策的对象是复杂的,很难把握住它的结构,并且是没有先例的,对其处理上也是没有经验可循. 2).面对的问题常常是突发性的.难以预料的.所依靠的是来自外部的关于未来如何变化的很少的情报. 3).决策的性质直接涉及到企业的前途. 4)

平台化思考:4种方式,让互联网为你的公司所用(转来的)

现有的商业大背景下,网络已经变的越来越重要了.消费者不再只是一个单纯的服务和产品接受者,也开始更多的参与到价值创造中来.允许外部参与者协同 创造价值的在线平台,正在改写竞争规则.iPhone打破了运营商商业模式这一点,已经表明,企业要么接受这种平台模式,要么承受被新加入者颠覆的风险. 为了能更好的利用互联网提供的而有力竞争优势,企业的掌舵者和管理者,应该重新思考他们的商业模式,适当的调整运营方法. 重新思考网络时代的商业模式 工业时代使我们习惯于线性的思维模式.从事制造业的公司通过采购并加工原材

美国政府关于Google公司2013年度的财务报表红头文件

请管理员移至新闻版块,谢谢! 来源:http://www.sec.gov/ 财务报表下载↓ 此文仅作参考分析. 10-K 1 goog2013123110-k.htm FORM 10-K UNITED STATES SECURITIES AND EXCHANGE COMMISSION Washington, D.C. 20549     FORM 10-K (Mark One)       ý ANNUAL REPORT PURSUANT TO SECTION 13 OR 15(d) OF TH

中国VR公司的详尽名单

中国VR公司的详尽名单 <VR圈深度投资报告一:2014年以来所有VR/AR融资事件> 特征一.投资机构观望居多 尽管VR在媒体和二级市场炒得很热,但大多风险投资机构却慎于出手,以观望居多.比较活跃的投资机构有IDG.和君资本.九合创投和纪源资本等.财务投资人主要以天使轮和pre-a轮投资居多,真正出手投A.B轮的较少.原因在于 : 1.不少风险投资机构表示看不懂VR项目.不少投资机构虽已进行VR投资,但主要为跟投,其本身对于VR项目并不具备识别能力.还有部分投资机构认为VR产业尚不具备足够的

《重新定义公司:谷歌是如何运营的》比较全面的谷歌公司的管理技巧,五星推荐

本书第一作者是埃里克·施密特,2001-2011年谷歌首席执行官.第二作者是谷歌副总裁.还有一位不知名的第三作者.看全书像是前两位作者尤其是第一作者施密特口述或者文字整理出大纲,第三作者做润色修饰. 全书讲谷歌的许多管理方面的细节,这些细节在以前的一些介绍谷歌或者涉及谷歌的书中零星看到过,第一次看到这么全面的整理.这些管理细节有许多与众不同之处. 本书的目录可以看作是书中讲到的谷歌公司的管理技巧的大纲,这一点这本书比较厚道. 以下是书中摘录出来的一些观点或信息: 1:创意精英是互联网时代取得成功