poj 4618 暴力
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4618
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <queue>
#include <vector>
#define maxn 305
using namespace std; vector<int> G[maxn*maxn];
int a[maxn][maxn];
int maxp;
int N,M; bool find(int u,int v){
int d = G[u].size();
for(int i=;i<d;i++){
if(G[u][i] == v) return true;
}
return false;
}
bool JudgeRowPalindrome(int x1,int y1,int x2,int y2){
if(y1 >= y2) return true;
if(a[x1][y1] == a[x2][y2]){
if(find((x1)*N+y1+,(x2)*N+y2-)) return true;
if(JudgeRowPalindrome(x1,y1+,x2,y2-)){
G[x1*N+y1+].push_back(x2*N+y2-);
return true;
}
}
else return false;
}
bool JudgeColPalindrome(int x1,int y1,int x2,int y2){
if(x1 >= x2) return true;
if(a[x1][y1] == a[x2][y2]){
if(find((x1+)*N+y1,(x2-)*N+y2)) return true; if(JudgeColPalindrome(x1+,y1,x2-,y2)){
G[(x1+)*N+y1].push_back((x2-)*N+y2);
return true;
}
}
else return false; }
bool Judge(int x,int y,int len){
for(int i=x;i<x+len;i++)
if(!find(N*i+y,N*i+y+len-)) return false;
for(int i=y;i<y+len;i++)
if(!find(N*x+i,N*(x+len-)+i)) return false;
return true;
}
int main()
{
// if(freopen("input.txt","r",stdin)== NULL) {printf("Error\n"); exit(0);} int T;
cin>>T;
while(T--){
scanf("%d%d",&N,&M);
for(int i=;i<N;i++)
for(int j=;j<M;j++){
scanf("%d",&a[i][j]);
}
for(int i=;i<=N*M + N+M;i++) G[i].clear(); for(int row=;row<N;row++)
for(int i=;i<M;i++)
for(int j=i+;j<M;j++){
if(find(N*row+i,N*row+j) || a[row][i] != a[row][j]) continue;
bool flag = JudgeRowPalindrome(row,i,row,j);
if(flag) G[N*row+i].push_back(N*row+j);
}
for(int col=;col<M;col++)
for(int i=;i<N;i++)
for(int j=i+;j<N;j++){
if(find(N*i+col,N*j+col) || a[i][col] != a[j][col]) continue;
bool flag = JudgeColPalindrome(i,col,j,col);
if(flag==true) G[N*i+col].push_back(N*j+col);
}
maxp = ;
for(int i=;i<N;i++)
for(int j=;j<M;j++){
if(N-i <= maxp || M-j <= maxp) continue;
if(N--i >= M--j){
for(int k=M-;k>=j+maxp;k--){
if(find(N*i+j,N*i+k)){
int p = k-j+;
if(Judge(i,j,p)){
maxp = p;
}
}
}
}
else{
for(int k=N-;k>=i+maxp;k--){
if(find(N*i+j,N*k+j)){
int p = k-i+;
if(Judge(i,j,p)){
maxp = p;
}
}
}
}
}
printf("%d\n",maxp);
}
}
poj 4618 暴力的更多相关文章
- POJ 2182/暴力/BIT/线段树
POJ 2182 暴力 /* 题意: 一个带有权值[1,n]的序列,给出每个数的前面比该数小的数的个数,当然比一个数前面比第一个数小的个数是0,省略不写,求真正的序列.(拗口) 首先想到的是从前到后暴 ...
- poj 1840 暴力+标记
Description Consider equations having the following form: a1x1 3+ a2x2 3+ a3x3 3+ a4x4 3+ a5x5 3=0 T ...
- POJ - 1426 暴力枚举+同余模定理 [kuangbin带你飞]专题一
完全想不到啊,同余模定理没学过啊,想起上学期期末考试我问好多同学'≡'这个符号什么意思,都说不知道,你们不是上了离散可的吗?不过看了别人的解法我现在会了,同余模定理介绍及运用点这里点击打开链接 简单说 ...
- POJ 1166 暴力搜索 即 枚举
e.... 米还是没有读懂题....T_T ..... e.... 这就是传说中的暴力吗....太血腥了....太暴力了...九重for循环....就这么赤裸裸的AC了.... 水是水了点..但是.. ...
- POJ 3174 暴力枚举
思路: 暴力枚举三个点 判一判 搞定 (x1*y1=x2*y2) x1.y1.x2.y2为他们两两的差 //By SiriusRen #include <cstdio> using nam ...
- POJ 2249 暴力求组合数
Binomial Showdown Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22692 Accepted: 692 ...
- Smith Numbers POJ - 1142 暴力递归枚举
题意: 给你一个数x,把这个分解成素数之积(假设是x1*x2*x3),如果 x的每一数位的和 等于 x1每一数位的和加上x2每一数位的和加上x3每一数位的和,那么他就是题目要找的数 示例: ...
- POJ 2329 (暴力+搜索bfs)
Nearest number - 2 Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 3943 Accepted: 1210 De ...
- POJ 1661 暴力dp
题意略. 思路: 很有意思的一个题,我采用的是主动更新未知点的方式,也即刷表法来dp. 我们可以把整个路径划分成横向移动和纵向移动,题目一开始就给出了Jimmy的高度,这就是纵向移动的距离. 我们dp ...
随机推荐
- 一些硬件厂商的MAC号
http://standards.ieee.org/develop/regauth/oui/oui.txt https://svn.nmap.org/nmap/nmap-mac-prefixes
- 07ADO.Net
1.ADO.Net简介 代码示例: using (MySqlConnection conn = new MySqlConnection("Server=localhost;Database= ...
- Elasticsearch学习1--head插件安装
1.简要介绍 elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序. 2.最近尝试学习elasticsearch,查了一些资料,但 ...
- WebService开发步骤
WebService原理什么的百度很多我就说了,无非就是提供一个接口放在服务端,客户端实现这个接口就可以拿到自己需要的东西. 现在简单说一下用myEclipse来实现服务端和客户端.另一种WebSer ...
- 【转】ASP.NET MVC 入门教程列表
ASP.NET MVC小论 2008-12-04 11:11 by T2噬菌体, 8052 visits, 网摘, 收藏, 编辑 摘要:ASP.NET MVC作为微软官方的.NET平台下MVC解决方案 ...
- LeetCode OJ -Happy Number
题目链接:https://leetcode.com/problems/happy-number/ 题目理解:实现isHappy函数,判断一个正整数是否为happy数 happy数:计算要判断的数的每一 ...
- PHP中定义常量的几种方式与区别
[问]在php中定义常量时,const与define的区别? [答]使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数.另外const在编译时要比define快很 ...
- ICE学习第三步-----Slice语言
ICE:Slice语言(一)-编译 Introduce简介 Slice(Specification language for ice)是分离对象和对象的实现的基础的抽象机制.Slice在客户端和服务器 ...
- css去除webkit内核的默认样式
做移动端的朋友应该知道,iphone的默认按钮是个很恶心的圆角,select下拉框也有默认样式无法修改. 这时候可以用到 -webkit-appearance:none //去除默认样 在按钮和sel ...
- 除法(Division ,UVA 725)-ACM集训
参考:http://www.cnblogs.com/xiaobaibuhei/p/3301110.html 算法学到很弱,连这么简单个问题都难到我了.但我偏不信这个邪,终于做出来了.不过,是参照别人的 ...