`
暴风雪
  • 浏览: 390961 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

[小模拟]zoj 3838

 
阅读更多

题意

      问需要修改多少个点使得这个正方形完全对称。

思路

     针对在对角线上的点,在中间线上的点还有剩下的点分别求出需要修改的最少点数,相加即可。

    点(x,y)关于主对角线对称的点是(y,x),关于副对角线对称的点是(n-1-y,n-1-x)。

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int nMax = 100;
char str[nMax][nMax];
int n;
char vis[400];
int max(int a,char b){
    int c = b;
    if(a>c)return a;
    return c;
}
int main(){
    int tcs ,i ,j ,ans ,m;
    scanf("%d",&tcs);
    while(tcs--){
        scanf("%d",&n);
        for(i=0;i<n;i++){
            scanf("%s",str[i]);
        }
        m = n/2;
        ans = 0;
        for(i = 0 ;i< m ;i++){
            for(j = 0;j < m;j ++){
                if(i < j){
                    memset(vis,0,sizeof(vis));
                    vis[str[i][j]]++;
                    vis[str[j][i]]++;
                    vis[str[n-j-1][i]]++;
                    vis[str[n-i-1][j]]++;
                    vis[str[n-i-1][n-j-1]]++;
                    vis[str[n-j-1][n-i-1]]++;
                    vis[str[j][n-i-1]]++;
                    vis[str[i][n-j-1]]++;
                    int tmp = 0;
                    tmp = max(vis[str[i][j]],vis[str[j][i]]);
                    tmp = max(tmp,vis[str[j][i]]);
                    tmp = max(tmp,vis[str[n-j-1][i]]);
                    tmp = max(tmp,vis[str[n-i-1][j]]);
                    tmp = max(tmp,vis[str[n-i-1][n-j-1]]);
                    tmp = max(tmp,vis[str[n-j-1][n-i-1]]);
                    tmp = max(tmp,vis[str[j][n-i-1]]);
                    tmp = max(tmp,vis[str[i][n-j-1]]);
                    ans += 8-tmp;
                }
            }
        }
        for(i = 0;i<m;i++){
            memset(vis,0,sizeof(vis));
            vis[str[i][i]]++;
            vis[str[i][n-i-1]]++;
            vis[str[n-i-1][i]]++;
            vis[str[n-i-1][n-i-1]]++;
            int tmp = 0;
            tmp=max(vis[str[i][i]],vis[str[i][n-i-1]]);
            tmp=max(tmp,vis[str[n-i-1][i]]);
            tmp=max(tmp,vis[str[n-i-1][n-i-1]]);
            ans += 4-tmp;
        }
        for(i=0;i<m;i++){
            memset(vis,0,sizeof(vis));
            vis[str[i][m]]++;
            vis[str[m][i]]++;
            vis[str[n-i-1][n-m-1]]++;
            vis[str[n-m-1][n-i-1]]++;
            int tmp = 0;
            tmp = max(vis[str[i][m]],vis[str[m][i]]);
            tmp = max(tmp, vis[str[n-i-1][n-m-1]]);
            tmp = max(tmp,vis[str[n-m-1][n-i-1]]);
            ans += 4-tmp;
        }
        printf("%d\n",ans);
    }
    return 0;
}

 

 

0
2
分享到:
评论

相关推荐

    zoj 源码700题

    9. **学习路径**:对于初学者,可以从简单的排序和查找题目开始,逐步挑战更复杂的算法题目,最后尝试解决综合性问题,如模拟和设计算法。 10. **实践与反思**:学习源代码不仅仅是阅读,更重要的是动手实践,将所...

    浙江大学ZOJ题目分类

    ZOJ平台提供的分类题目包括但不限于基础算法、数据结构、动态规划以及模拟问题等,这些分类覆盖了计算机科学中的多个重要知识点,让不同水平的学习者都能找到适合自己的训练题目。 对于初学者而言,基础算法类题目...

    ZOJ1003 Crashing Balloon

    在这个问题中,参赛者需要编写程序来模拟气球爆破的过程,以达到最大化的分数。 首先,我们来理解问题背景。假设你有一系列的气球,每个气球有一个关联的分数,你可以选择用一个针去刺破任意一个气球,然后所有比这...

    ZOJ题解集合-截至2835

    8. **模拟**:针对特定问题设计精确的程序模型进行求解。 通过研究这些题解,不仅可以提高编程能力,还能学习如何分析问题、设计算法,并且训练解决实际问题的思维能力。同时,这些题解还可以帮助你准备各类编程...

    zoj题目简单归类zoj题目简单归类

    ### ZOJ 题目简单归类解析 在IT竞赛和编程练习中,ZOJ(Zhejiang University Online Judge)平台提供了丰富的算法题目供学习者挑战和提升技能。本次解析将聚焦于部分被标记为“简单”的ZOJ题目,通过细致分析其描述...

    zoj代码集合

    9. **模拟法**:对于一些直观但复杂的操作,如模拟流程或游戏过程,模拟法是一种有效的解题手段。 10. **编码技巧**:代码优化、输入输出优化、错误处理、调试技巧也是ACM竞赛中不可忽视的部分。集合中可能会提供...

    ZOJ经典源代码(ACM)

    2. **算法**:常见的算法有分治法、动态规划、贪心法、回溯法、分支限界法、模拟法、排序算法(快速排序、归并排序、堆排序)等。比如,动态规划常用于解决具有重叠子问题和最优子结构的问题,而分治法则适用于将大...

    zoj3464 Rugby Football测试数据

    考虑到这是一个关于Rugby Football(橄榄球)的问题,我们可以推测这些数值可能代表了比赛中的各种统计数据或者是在模拟比赛中可能出现的一些随机变量。例如: - **分数**:这些数值可能代表不同比赛中的得分情况。 ...

    zoj3607.rar_zoj贪心

    【描述】中的“Lazier Salesgirl”很可能是一个模拟或优化问题,可能涉及到一个懒惰的销售女孩需要在一定时间内完成一系列任务。AC(Accepted)代码表示提交的代码已经通过了所有测试用例,表明提供的解决方案是正确...

    Zui Online Judge(ZOJ) 基于SpringBoot和SpringCloud和Vue的开源在线代码评.zip

    ZOJ通过定制化的评测环境和评测脚本,能够模拟多种编程语言的执行环境,确保公平公正地对每一份代码进行评分。 5. **多语言支持** ZOJ作为一款在线代码评测系统,支持多种编程语言,如C、C++、Java、Python等。这...

    ZOJ完全解题报告,涵盖了几十道ZOJ上面的编程题,有很详细的解题方法供参阅

    【ZOJ完全解题报告】是一份专门为喜爱ACM(国际大学生程序设计竞赛)的同学们准备的资源,其中详尽地记录了解决ZOJ在线判题系统上几十道编程题目的全过程和方法。这份报告旨在帮助参赛者提高解题技巧,理解和掌握...

    zoj解题分类详细版

    总的来说,ZOJ的解题分类为学习者提供了有序的学习路径,从简单的初学者题到更复杂的模拟问题和动态规划题目。这不仅有助于新手逐步建立编程和算法基础,也对有经验的程序员提供了进一步提升技能的机会。在每个类别...

    zoj 3464 Rugby Football测试数据(本人生成的)

    **标题与描述**:“zoj 3464 Rugby Football 测试数据(本人生成的)”,这表明该文档是针对ZOJ(Zhejiang Online Judge)平台上的一个题目——Rugby Football 的测试数据。该题目的主要内容涉及计算或模拟橄榄球比赛...

    ZOJ解题报告ZOJ解题报告

    ### ZOJ解题报告:深入理解与策略分析 #### 一、FireNet1002:网络流量分析与优化 在FireNet1002问题中,主要考察的是网络流量管理和优化技术。该问题通常涉及到如何在有限的带宽资源下,合理分配网络流量,以确保...

    ZOJ1337.rar_源码

    在编程竞赛或算法训练中,求解π的常见方法可能包括利用级数展开、Monte Carlo模拟或其他数值计算方法。 对于1337-Pi.mht文件,它是一个MHT(MHTML,多部分HTML)文件,这种文件格式可以将HTML文档与其相关的资源...

    Zoj acm的AC解题报告

    5. **模拟**:对于某些问题,可能需要直接模拟题目描述的过程,编写精确的程序来解决问题。 6. **数学知识**:概率、组合数学、数论等数学知识在解决某些复杂问题时起到重要作用。 7. **团队合作**:ACM竞赛通常以...

    ZOJ全部题目分类(分得很细哦)

    动态规划是一种通过将复杂问题分解成更小的子问题来解决的方法,其核心思想是存储子问题的解以避免重复计算。动态规划题目通常涉及到寻找最优解或最值问题。 **示例题目:** - **1013**: 动态规划题目可能包括简单...

    zoj1009.rar_visual c

    "Emigma"可能是一个模拟或者解决特定算法问题的题目。由于没有给出具体的题目描述,我们可以推测这可能涉及到一些常见的编程概念,如循环、条件语句、字符串处理、数组操作、数学计算、动态规划、图论或搜索算法等。...

    ACM zoj题目 源代码

    标题 "ACM zoj题目 源代码" 提供了我们即将探讨的知识点核心:ACM竞赛中的编程问题和解题策略,以及所使用的编程语言——C++。这些源代码是学习算法和准备面试机考的重要资源。描述进一步强调了这些代码覆盖了常见的...

    noip提高组模拟题1

    【压缩包子文件的文件名称列表】"BZOJ NoipRound 1"可能是一个在线判题系统的名称,如“BestCoder”或“ZOJ”,它组织了NOIP的模拟比赛,并将题目、解答等相关资料打包为压缩文件供人下载。"NoipRound 1"可能指的是...

Global site tag (gtag.js) - Google Analytics