hrbust 1699 矩阵游戏【枚举找规律】

原创 2016年08月30日 15:56:53

矩阵游戏
Time Limit: 1000 MS Memory Limit: 32768 K
Total Submit: 25(10 users) Total Accepted: 8(8 users) Rating:  Special Judge: No
Description

        DreamGriselda玩腻了硬币游戏,于是就找来小胖子一起玩矩阵游戏。

    在一个n*n01矩阵A里,Dream要求在这个矩阵中不能存在两个1相邻,Griselda要求在这个矩阵中每个元素必须满足

Aij = An - i - 1, j  Aij = Ain - j - 1.(下标从0开始)
    她们问小胖子:已知这个矩阵里面有几个1,问n最小是多少才能同时满足DreamGriselda的要求。

小胖子又苦恼了~你可以帮助他么?

Input

    本题有多组测试数据,每组测试数据有一行。

    每行输入一个整数x (1 ≤ x ≤ 100)

Output
    每组输出占一行,输出n的最小值。
Sample Input

4

9

Sample Output

3

5

Hint
Author
sunshine@hrbust

思路:


1、首先确定,一个偶数的正方形是不可能达到最优解的。


2、然后我们枚举每一个奇数的极限情况(这里枚举前几个):


1
n==1时 ans=1

1 0 1
0 1 0
1 0 1
n==2时,ans=3

n==3时,这个矩阵不能够放置成功,那么ans=5

n==4时,ans=3

n==5时,ans=3

1 0 1 0 1
0 1 0 1 0
1 0 1 0 1
0 1 0 1 0
1 0 1 0 1
枚举可以发现n为6-13的时候,ans=7

1 0 1 0 1 0 1
0 1 0 1 0 1 0
1 0 1 0 1 0 1
0 1 0 1 0 1 0
1 0 1 0 1 0 1
0 1 0 1 0 1 0
1 0 1 0 1 0 1
同样可以通过枚举发现,n为14-25的时候,ans=9.

那么发现这样一个规律:对应每一个奇数*奇数的矩阵,其可以放置的最大1的数量,能够作为一个分界点。n==3的时候是一个特殊例外,特判即可。


那么Ac代码:

#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        if(n==1)printf("1\n");
        else if(n==2)printf("3\n");
        else if(n==3)printf("5\n");
        else if(n==4)printf("3\n");
        else if(n==5)printf("3\n");
        else if(n>=6&&n<=13)printf("5\n");
        else if(n>=14&&n<=25)printf("7\n");
        else if(n>=26&&n<=41)printf("9\n");
        else if(n>=42&&n<=61)printf("11\n");
        else if(n>=62&&n<=85)printf("13\n");
        else printf("15\n");
    }
}



版权声明:0.0小白有写的不好不对的地方请指出~

poj 1699 Best Sequence 枚举排列

题意: 给n和zifucha
  • sepNINE
  • sepNINE
  • 2014年11月10日 10:35
  • 313

hdu 5504(枚举+找规律)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5504 官方题解: 注意先特判0 的情况:如果读入的数据有0 ,那么去掉所有的0 且最后答案和0 取...

Codeforces Round #365 (Div. 2) -- B. Mishka and trip (找规律枚举)

B. Mishka and trip time limit per test 1 second memory limit per test 256 megabytes input...

hrbust 1328 相等的最小公倍数【暴力打表找规律】

相等的最小公倍数 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 486(156 ...

Hrbust 2232 股票【暴力枚举+最大连续子序列和】水题= =

股票 Time Limit: 500 MS Memory Limit: 32768 K Total Submit: 59(23 users) Total Accepted: 1...

Hrbust 1619 只有矩形【逆序思维+枚举+并查集优化】

只有矩形 Time Limit: 1000 MS Memory Limit: 131072 K Total Submit: 19(10 users...

hrbust 1241 Blocks【暴力枚举+简单优化】

Blocks Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 77(30 user...

hrbust 1957 干掉坏人【Dfs+暴力枚举】

干掉坏人 Time Limit: 2000 MS Memory Limit: 32768 K   Total Submit: 38(11 users) Tota...

hrbust 1231/hdu 3118 Arbiter【二进制枚举】好题

Arbiter Time Limit: 1000 MS Memory Limit: 131072 K Total Submit: 16(7 use...

HRBUST 1786 最大停车场 (01矩阵找最大的矩形)

题目:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1786 代码: #include #inc...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hrbust 1699 矩阵游戏【枚举找规律】
举报原因:
原因补充:

(最多只允许输入30个字)