zoukankan      html  css  js  c++  java
  • HDU 2609 How many

    How many

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 2870    Accepted Submission(s): 1241


    Problem Description
    Give you n ( n < 10000) necklaces ,the length of necklace will not large than 100,tell me
    How many kinds of necklaces total have.(if two necklaces can equal by rotating ,we say the two necklaces are some).
    For example 0110 express a necklace, you can rotate it. 0110 -> 1100 -> 1001 -> 0011->0110.
     
    Input
    The input contains multiple test cases.
    Each test case include: first one integers n. (2<=n<=10000)
    Next n lines follow. Each line has a equal length character string. (string only include '0','1').
     
    Output
    For each test case output a integer , how many different necklaces.
     
    Sample Input
    4
    0110
    1100
    1001
    0011
    4
    1010
    0101
    1000
    0001
    Sample Output
    1
    2
    最小表示法,每个都弄到字典序最小,存到map中,输出map的大小就可以了。
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <map>
    #include <set>
    #include <vector>
    #include <queue>
    using namespace std;
    typedef long long ll;
    string a;
    int len,n;
    string check(string a,int len)
    {
      int i=0,j=1,k=0;
      while(i<len && j<len && k<len)
      {
        int t=a[(j+k)%len]-a[(i+k)%len];
        if(t==0) k++;
        else
        {
          if(t<0) i+=k+1;
          else j+=k+1;
          if(i==j) j++;
          k=0;
        } 
      }
      int minn=min(i,j);
      int cnt=0;
      string ans;
      while(cnt<len)
      {
        ans+=a[(cnt+minn)%len];
        cnt++;
      }
      return ans;
    }
    int main()
    {
      map<string,int>m;
      while(cin>>n)
      {
        while(n--)
        {
          cin>>a;
          len=a.size();
          string s=check(a,len);
          m[s]=1;
        }
        printf("%d
    ",m.size());
        m.clear();
      }
      return 0;
    }
  • 相关阅读:
    vue-awesome-swiper-T 轮播图
    transition-T 手机端滑动验证
    VUE-T
    跨域配置-Access-Control-Allow-Origin
    HTML中CSS引入图片并铺满背景
    mysql_affected_rows()、mysql_fetch_row、mysql_fetch_assoc
    tp框架的四种路由方式
    sql注入
    禁用cookie,怎么获得session
    git解决冲突的方法
  • 原文地址:https://www.cnblogs.com/shinianhuanniyijuhaojiubujian/p/7144990.html
Copyright © 2011-2022 走看看