题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1282

题意:中文题目诶~

思路:指针不可转,刻盘可转,显然,对于两组指针,当且仅当它们所有对应相邻指针间距都相等时是满足题意的;

先得到指针间距,因为刻盘可转,相当于循环数组,可以先求一下最小表示法,然后再两两枚举所有情况,对于最小表示法相同的两组指针,计数加一;

代码:

 #include <iostream>
#include <algorithm>
using namespace std; const int MAXN = 1e3 + ;
int a[MAXN][MAXN]; void get_min(int n, int m){//最小表示法
int i = , j = ,k = , t;
while(i < m && j < m && k < m){
t = a[n][(i + k) % m] - a[n][(j + k) % m];
if (!t) k++;
else{
if(t > ) i += k + ;
else j += k + ;
if (i == j) j++;
k = ;
}
}
a[n][m] = i < j ? i : j;
} int main(void){
int n, m, p, ans = ;
cin >> n >> m >> p;
for(int i = ; i < n; i++){
for(int j = ; j < m; j++){
cin >> a[i][j];
}
sort(a[i], a[i] + m);//注意给出的数据是未排序的
int x = a[i][];
for(int j = ; j < m - ; j++){
a[i][j] = a[i][j + ] - a[i][j];
}
a[i][m - ] = x - a[i][m - ] + p;//一开始没注意这里的a[i][0]变了,wa到死...
get_min(i, m);
int cnt = a[i][m], cc = m;
while(cc){
cnt = (cnt + ) % m;
cc--;
}
}
for(int i = ; i < n; i++){
for(int j = i + ; j < n; j++){
int cnt = m, cnt1 = a[i][m], cnt2 = a[j][m];
while(a[i][cnt1] == a[j][cnt2] && cnt){
cnt--;
cnt1 = (cnt1 + ) % m;
cnt2 = (cnt2 + ) % m;
}
if(!cnt) ans++;
}
}
cout << ans << endl;
return ;
}

51nod1282(最小表示法&&枚举)的更多相关文章

  1. 【枚举】【最小表示法】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem F. Matrix Game

    给你一个n*m的字符矩阵,将横向(或纵向)全部裂开,然后以任意顺序首尾相接,然后再从中间任意位置切开,问你能构成的字典序最大的字符串. 以横向切开为例,纵向类似. 将所有横排从大到小排序,枚举最后切开 ...

  2. HDOJ3374 String Problem 【KMP】+【最小表示法】

    String Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  3. UVa 11464 Even Parity (二进制法枚举)

    题意:给你一个n*n的01矩阵,让你把最少的0变成1,使得每个元素的上,下,左,右的元素(如果有的话)之和均为偶数. 析:最好想的的办法就是暴力,就是枚举每个数字是变还是不变,但是...时间复杂度也太 ...

  4. 51Nod 1282 时钟 —— 最小表示法 + 字符串哈希

    题目链接:https://vjudge.net/problem/51Nod-1282 1282 时钟 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难 ...

  5. 『Tree nesting 树形状压dp 最小表示法』

    Tree nesting (CF762F) Description 有两个树 S.T,问 S 中有多少个互不相同的连通子图与 T 同构.由于答案 可能会很大,请输出答案模 1000000007 后的值 ...

  6. 2019牛客暑期多校训练营(第七场)A.String【最小表示法】

    传送门:https://ac.nowcoder.com/acm/contest/887/A 题意:大意就是给你一个只含有0和1的字符串,找出一种分割方法,使得每个分割出的字符串都是在该字符串自循环节中 ...

  7. luogu P5043 【模板】树同构 hash 最小表示法

    LINK:模板 树同构 题目说的很迷 给了一棵有根树 但是重新标号 言外之意还是一棵无根树 然后要求判断是否重构. 由于时无根的 所以一个比较显然的想法暴力枚举根. 然后做树hash或者树的最小表示法 ...

  8. poj1509最小表示法

    题意:       给你一个循环串,然后找到一个位置,使得从这个位置开始的整个串字典序最小. 思路:       最小表示法的建档应用,最小表示法很好理解,就点贪心的意思,一开始我们枚举两个起点i,j ...

  9. bzoj5130 字符串的周期(kmp,最小表示法)

    bzoj5130 字符串的周期(kmp,最小表示法) bzoj 题解时间 m很大,n很小. 周期很容易求,就是kmp之后n-fail[n]. 之后对于枚举所有的字符串用最小表示法,暴力搜索. 能过就完 ...

随机推荐

  1. Java7、Java8 安装卸载问题

    win7 系统,同时安装了JDK7和JDK8,卸载了JDK8之后,cmd命令行输入:java -version ,本以为显示java版本1.7,结果弹错:has value '1.7',but '1. ...

  2. Git查看并修改name和email

    显示name的方法: git config user.name git config --list 或者查看~/.gitconfig文件. 改名字: git config --global user. ...

  3. SDUT OJ 2616 简单计算

    简单计算 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 某天,XX 给YY 出了一道题,题目是: 给出n 个十进制的数,找出这n ...

  4. 51nod 1040

    题目 题解:我们要求的是这个式子: $ \sum\limits_{i = 1}^n {\gcd (n,i)}  $ (下面式子中的d都是n的因子) 变形下  $ \sum\limits_{d = 1} ...

  5. frp支持httpIP地址加端口号访问

    (一)安装就不再多说 传送门:https://blog.csdn.net/superljn/article/details/81289993 (二)vim frps.ini [common] bind ...

  6. onhashchange

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. The Django Book 2.0--中文版

    Table of contents 2.0, English -> Chinese 第一章:介紹Django阅读 01 第二章 入门阅读 02 第三章 视图和URL配置阅读 03 第四章:模版阅 ...

  8. Linux中vsftpd安装和配置

    目录 Redhat/CentOS安装vsftp软件 Ubuntu/Debian安装vsftp软件 Redhat/CentOS安装vsftp软件 1. 安装vsftp $ yum install vsf ...

  9. Wmware Player中Linux挂载U盘

    菜单(Player)中有一项是可移动设备,中选择U盘,然后选择连接(断开主机), 然后在命令行中敲入 fdisk -l 正常情况下是sda是硬盘的信息,然后将会看到一个单蹦的sdb4的信息(sdb4可 ...

  10. Windows下Anaconda安装 python + tensorflow

    下载安装Anaconda 首先下载Anaconda,可以从清华大学的镜像网站进行下载. 安装Anaconda,注意安装时不要将添加环境变量的选项取消掉. 安装完成之后,在安装目录下cmd,输入 con ...