这题解法怎么说呢,由于我是把行数逐步除以2暴力得到的答案,所以有点二分的意思,可是昨天琦神说是有点像分治的意思。反正总的来说:就是从大逐步细化找到最优答案。

可是昨晚傻B了。靠!

多写了点东西,然后就错了,刚才一练习,拿昨晚的代码一看,就把6行代码删去就过了。靠!昨晚应该是脑子进水了!!!!!

昨晚的代码:

#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#define PI acos(-1.0)
#define mem(a,b) memset(a,b,sizeof(a))
#define sca(a) scanf("%d",&a)
#define sc(a,b) scanf("%d%d",&a,&b)
#define pri(a) printf("%d\n",a)
#define lson i<<1,l,mid
#define rson i<<1|1,mid+1,r
#define MM 4105
#define MN 105
#define INF 100004
#define eps 1e-7
using namespace std;
typedef long long ll;
int n,m,i,j,k,a[MN][MN];
string s,ss;
int main()
{
sc(n,m);
for(i=0; i<n; i++)
for(j=0; j<m; j++) sca(a[i][j]);
if(n&1) cout<<n<<endl;
else
{
int r=n/2,flag=1,ff=1;
int aa=a[0][0];
for(i=1; i<n; i++) //就是这个多推断了,由于自己给出的样列是1列。所以……靠。本来在以下的sum值那里已经处理了,然后忘了把这删了,所以就在第一列同样的时候出错了,导致昨晚没debug出来!嘛嘛呀。。!。
if(aa!=a[i][0])
{
ff=0;
break;
}
if(ff) cout<<1<<endl;
else
{
int sum=0;
while(r&&flag)
{
for(i=0; i<n&&flag; i+=r*2)
{
for(j=i,k=i+r+r-1; j<k&&flag; j++,k--)
{
for(int p=0; p<m&&flag; p++)
if(a[j][p]!=a[k][p])
flag=0;
}
}
if(flag&&(r%2==0)) r/=2;
if(flag&&(r&1)) sum++;
if(sum>3) break;
//cout<<"--"<<flag<<' '<<r<<endl;
}
if(!flag) cout<<r*2<<endl;
else cout<<r<<endl;
}
}
return 0;
}

AC代码:

#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#define PI acos(-1.0)
#define mem(a,b) memset(a,b,sizeof(a))
#define sca(a) scanf("%d",&a)
#define sc(a,b) scanf("%d%d",&a,&b)
#define pri(a) printf("%d\n",a)
#define lson i<<1,l,mid
#define rson i<<1|1,mid+1,r
#define MM 4105
#define MN 105
#define INF 100004
#define eps 1e-7
using namespace std;
typedef long long ll;
int n,m,i,j,k,a[MN][MN];
string s,ss;
int main()
{
sc(n,m);
for(i=0; i<n; i++)
for(j=0; j<m; j++) sca(a[i][j]);
if(n&1) cout<<n<<endl;
else
{
int r=n/2,flag=1,ff=1;
int sum=0;
while(r&&flag)
{
for(i=0; i<n&&flag; i+=r*2)
{
for(j=i,k=i+r+r-1; j<k&&flag; j++,k--)
{
for(int p=0; p<m&&flag; p++)
if(a[j][p]!=a[k][p])
flag=0;
}
}
if(flag&&(r%2==0)) r/=2;
if(flag&&(r&1)) sum++;
if(sum>3) break;
//cout<<"--"<<flag<<' '<<r<<endl;
}
if(!flag) cout<<r*2<<endl;
else cout<<r<<endl;
}
return 0;
}

CF:Problem 426B - Sereja and Mirroring 二分或者分治的更多相关文章

  1. Codeforces Round #243 (Div. 2) Problem B - Sereja and Mirroring 解读

    http://codeforces.com/contest/426/problem/B 对称标题的意思大概是.应当指出的,当线数为奇数时,答案是线路本身的数 #include<iostream& ...

  2. B. Sereja and Mirroring

    B. Sereja and Mirroring time limit per test 1 second memory limit per test 256 megabytes input stand ...

  3. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 831D) - 贪心 - 二分答案 - 动态规划

    There are n people and k keys on a straight line. Every person wants to get to the office which is l ...

  4. fzu Problem - 2232 炉石传说(二分匹配)

    题目链接:http://acm.fzu.edu.cn/problem.php?pid=2232 Description GG学长虽然并不打炉石传说,但是由于题面需要他便学会了打炉石传说.但是传统的炉石 ...

  5. CF 483B. Friends and Presents 数学 (二分) 难度:1

    B. Friends and Presents time limit per test 1 second memory limit per test 256 megabytes input stand ...

  6. CF 314 E. Sereja and Squares

    E. Sereja and Squares http://codeforces.com/contest/314/problem/E 题意: 给你一个擦去了部分左括号和全部右括号的括号序列,括号有25种 ...

  7. Problem: Query on the tree(二分+划分树)

    题目链接: Problem: Query on the tree Time limit: 1s     Mem limit: 64 MB      Problem Description There ...

  8. CF 551E. GukiZ and GukiZiana [分块 二分]

    GukiZ and GukiZiana 题意: 区间加 给出$y$查询$a_i=a_j=y$的$j-i$最大值 一开始以为和论文CC题一样...然后发现他带修改并且是给定了值 这样就更简单了.... ...

  9. CF 1073C Vasya and Robot(二分答案)

    C. Vasya and Robot time limit per test 1 second memory limit per test 256 megabytes input standard i ...

随机推荐

  1. The Art of Mocking

    One of the challenges developers face when writing unit tests is how to handle external dependencies ...

  2. Javascript -- document的createDocumentFragment()方法

    在<javascript高级程序设计>一书的6.3.5:创建和操作节点一节中,介绍了几种动态创建html节点的方法,其中有以下几种常见方法: · crateAttribute(name): ...

  3. 批处理创建数据库(Sql Server)

    ylbtech-Miscellaneos:批处理创建数据库(Sql Server) 1.A,资源(Resource) - 创建数据返回顶部 1.A.1,InstallDatabases.cmd - 编 ...

  4. python 实现创建文件夹和创建日志文件

    一.实现创建文件夹和日志 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author: nulige import os import datetime ...

  5. c++11 std::prev、std::next、std::advance与auto 使用

    auto 定义变量时放在变量前,无需知道具体变量类型,系统可自行推断类型,减少编程工作,特别是在模板使用时,使用更方便. 下面简单例子: auto a=; auto b='a'; auto s=&qu ...

  6. [转载]How to Install Google Chrome 39 in CentOS/RHEL 6 and Fedora 19/18

    FROM: http://tecadmin.net/install-google-chrome-in-centos-rhel-and-fedora/ Google Chrome is a freewa ...

  7. zabbix自动化监控之自动注册

    自动注册与自动发现刚好相反,是zabbix agent主动联系zabbix server,最后由zabbix server将这些agent加到host里.活动的Zabbix agent可以自动注册到服 ...

  8. rsync数据同步工具的配置

    rsync数据同步工具的配置 1. rsync介绍 1.1.什么是rsync rsync是一款开源的快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于 unix ...

  9. iOS---sha1加密的一个坑

    OC语言写的sha1加密算法,在网上随手能够搜索到(例如以下便是),可是我不得不说有一些人不责任,没有提醒大家导入必要的系统头文件.从而导致错误 + (NSString *) sha1:(NSStri ...

  10. 网络编程readn、writen和readline函数的编写

    readn   在Linux中,read的声明为: ssize_t read(int fd, void *buf, size_t count); 它的返回值有以下情形: 1.大于0,代表成功读取的字节 ...