zoukankan      html  css  js  c++  java
  • 套题8.22 下午

    count
    【问题描述】
    李华终于逃离了无尽的英语作文, 重获自由的他对一棵树产生了兴趣。
    首先,他想知道一棵树是否能分成大小相同的几块(即切掉一些边,使得每个
    连通块的点数相同)。然后,他觉得这个问题过于简单,于是他想知道一共有多
    少种方案可以把这棵树分成大小相同的几块。
    然后他发现自己不会了,于是向聪明的你求助。
    【输入格式】
    第一行一个数,表示数的大小。
    第二行至第 N 行,每行两个数 x,y 表示 x 和 y 之间有一条边。
    【输出格式】
    一行,表示方案数。
    【样例一输入】
    6
    1 2
    2 3
    2 4
    4 5
    5 6
    【样例一输入】
    3
    HINT:
    对于 30%的数据,1<=n<=100。
    对于 60%的数据,1<=n<=100000。
    对于 100%的数据,1<=n<=1000000。

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<queue>
    #include<vector>
    #include<cmath>
    
    using namespace std;
    #define M 1000009
    int n;
    int h[M],nex[M*2],to[M*2],cnt,vis[M];
    int sum[M],ans=2;
    int build(int id,int f)
    {
        int u;
        sum[id]=1;
        for(int i=h[id];i;i=nex[i])
        {
            int u=to[i];
            if(u!=f)    sum[id]+=build(u,id);
        }
        return sum[id];
    }
    bool check(int x)
    {
        int tot=0;
        for(int i=1;i<=n;i++)    
            tot+=( sum[i]%x ==0);
        if(n/x == tot)    return 1;
        return 0;
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1,u,v;i<n;i++)
        {
            scanf("%d%d",&u,&v);
            to[++cnt]=v,nex[cnt]=h[u],h[u]=cnt;
            to[++cnt]=u,nex[cnt]=h[v],h[v]=cnt;
        }
        build(1,0);  
    
        for(int i=2;i<n;i++)
        if(n%i == 0)    
            ans+=check(i);        
      /*一个错误的写法。。。。坑了我半天
      for(int i=2;i<=sqrt(n);i++)
      ans+=check(i)+check(n/i) //但是当i == n/i 就加重了。
      */ cout
    <<ans; return 0; }

    Dinner
    【问题描述】
    清儿今天请好朋友们吃饭,一共 N 个人坐在坐在圆桌旁。
    吃饭的第一步当然是点餐了。 服务员拿来了 M 份菜单。 第 i 个人阅读菜单并点出
    自己喜欢的菜需要花费时间 T[i]。
    当一个人点完菜之后,就会把菜单传到他右手边的第一个人。
    M 份菜单是同时发出的,每个菜单只能同时被一个人阅读。
    清儿希望知道如何分发菜单,才能让点餐的总时间花费最少呢?
    【输入格式】
    输入文件名为 dinner.in
    输入第一行是 N 和 M,表示人数和菜单数
    输入第二行,N 个数,表示每个人点餐所需要的时间。
    【输出格式】
    输出文件名为 dinner.out
    输出一个整数表示点餐花费的最小时间。
    【样例一输入】
    3 2
    1 5 10
    【样例一输出】
    10
    【样例二输入】
    4 2
    1 2 3 4
    【样例二输出】
    NOIP 模拟题 #1
    5
    HINT:
    对于 20%的数据,n<=100.
    对于 60%的数据,n<=10000.
    对于 100%的数据,n<=50000,T[i]<=600

  • 相关阅读:
    html语法
    mysql常见的使用语法
    文件相关命令
    linux文件管理
    mysql常见名词解释
    MySQL初识
    文件管理
    并发基础知识3
    Bash shell初识
    【Spring Boot】ActiveMQ 发布/订阅消息模式介绍
  • 原文地址:https://www.cnblogs.com/CLGYPYJ/p/7412724.html
Copyright © 2011-2022 走看看