直接暴力枚举,注意每次深搜完状态的还原~

#include<bits/stdc++.h>
using namespace std;
const int maxn=;
int visit[maxn][maxn];
int N,M,x,y;
int cnt;
int maxcnt;
int X[]={,,-,};
int Y[]={,,,-};
int judge (int x,int y) {
if (x<||x>N||y<||y>N) return ;
if (visit[x][y]) return ;
return ;
}
void dfs (int x,int y,int pre) {
visit[x][y]=;
cnt++;
int tx=x+X[pre];
int ty=y+Y[pre];
if (judge(tx,ty)) dfs (tx,ty,pre);
else {
int flag=;
for (int i=;i<;i++) {
tx=x+X[i];
ty=y+Y[i];
if (judge(tx,ty)) flag++,dfs(tx,ty,i);
}
if (flag==) maxcnt=max(maxcnt,cnt);
}
visit[x][y]=;
cnt--;
}
int main () {
scanf ("%d %d",&N,&M);
N-=;
for (int i=;i<M;i++) {
scanf ("%d %d",&x,&y);
x--;
y--;
visit[x][y]=;
}
int ans=;
int num=;
for (int i=;i<=N;i++) {
for (int j=;j<=N;j++) {
if (judge(i,j)) {
maxcnt=;
dfs (i,j,);
dfs (i,j,);
dfs (i,j,);
dfs (i,j,);
if (maxcnt>ans) {
ans=maxcnt;
num=;
}
else if (maxcnt==ans) {
num++;
}
}
}
}
printf ("%d %d\n",N*N-ans-M,num);
num=;
int ans1=;
for (int i=;i<=N;i++) {
for (int j=;j<=N;j++) {
if (visit[i][j]) continue;
visit[i][j]=;
maxcnt=;
for (int k=;k<=N;k++) {
for (int w=;w<=N;w++) {
if (judge(k,w)) {
dfs (k,w,);
dfs (k,w,);
dfs (k,w,);
dfs (k,w,);
}
}
}
if (maxcnt>ans1) {
ans1=maxcnt;
num=;
}
else if (maxcnt==ans1) {
num++;
}
visit[i][j]=;
}
}
if (ans1<ans) printf ("-1");
else printf ("%d %d\n",N*N-M-ans1-,num);
return ;
}

PAT T1012 Greedy Snake的更多相关文章

  1. Pascal小游戏 贪吃蛇

    一段未完成的Pascal贪吃蛇 说这段代码未完成其实是没有源代码格式化,FP中一行最多只有255字符宽. uses crt; const screenwidth=50; screenheight=24 ...

  2. 2019秋季PAT甲级_C++题解

    2019 秋季 PAT (Advanced Level) C++题解 考试拿到了满分但受考场状态和知识水平所限可能方法不够简洁,此处保留记录,仍需多加学习.备考总结(笔记目录)在这里 7-1 Fore ...

  3. PAT甲级【2019年9月考题】——A1164 DijkstraSequence【30】

    7-4 Dijkstra Sequence (30 分) Dijkstra's algorithm is one of the very famous greedy algorithms. It is ...

  4. 《转载》PAT 习题

    博客出处:http://blog.csdn.net/zhoufenqin/article/details/50497791 题目出处:https://www.patest.cn/contests/pa ...

  5. USACO . Greedy Gift Givers

    Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided to exchange gifts ...

  6. [LeetCode] Design Snake Game 设计贪吃蛇游戏

    Design a Snake game that is played on a device with screen size = width x height. Play the game onli ...

  7. PAT Judge

    原题连接:https://pta.patest.cn/pta/test/16/exam/4/question/677 题目如下: The ranklist of PAT is generated fr ...

  8. PAT/字符串处理习题集(二)

    B1024. 科学计数法 (20) Description: 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+ ...

  9. PAT 1041. 考试座位号(15)

    每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座 ...

随机推荐

  1. AlertDialog 、SimpleDialog、 showModalBottomSheet、showToast 自定义 Dialog

    // AlertDialog .SimpleDialog.showModalBottomSheet.showToast // 使用showToast安装插件 https://pub.dev/packa ...

  2. 解决wps for linux缺失windows字体

    操作步骤 1.下载缺失字体 链接: https://pan.baidu.com/s/1ZUbtQ96b8RVbH0LrXb_GlQ  密码: nsr4 2.解压字体 unzip wps-font-sy ...

  3. Linux shell tr 命令详解

    该随笔摘自 https://www.jb51.net/article/103892.htm Linux shell tr 命令详解 1. 用途 tr,translate的简写,主要用于压缩重复字符,删 ...

  4. Linux centos7 shell 介绍、 命令历史、命令补全和别名、通配符、输入输出重定向

    一.shell介绍 shell脚本是日常Linux系统管理工作中必不可少的,不会shell,就不是一个合格管理员. shell是系统跟计算机硬件交互使用的中间介质,一个系统工具.实际上在shell和计 ...

  5. SOA架构设计

    架构是—套构建系统的准则,通过这套准则,把—个复杂的系统划 分为一套更简单的子系统的集合,这些子系统之间保持相互独立,并与 整个系统保持一致,而且每—个子系统还可以继续细分下去,从而构成 —个企业级架 ...

  6. python练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数,如果用户没有输入奇数,则输出一个消息进行说明。

    python练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数,如果用户没有输入奇数,则输出一个消息进行说明. 重难点:通过input函数输入的行消息为字符串格式,必须转换为整型,否则 ...

  7. linux 自带php切换xampp

    查看系统中有哪些用户: cut -d : -f 1 /etc/passwd 查看当前php: which php 删除系统自带php软链 rm -rf /usr/bin/php 切换到PHP新路径 l ...

  8. 源头质量 PageHelper(分页),导出功能

    今天星期五,本来想直接关电脑走人的,但想想自己弄出来的,写写留个记忆吧.两个功能 导出 和 Mybatis的插件 PageHelper 分页 一,导出功能代码实现:这里是需要jar包的啊 <!- ...

  9. C# FormData 文件太大报错404 Form表单上传大文件,无法进入后台Action,页面提示404.

    web.config中添加如下节点 <system.webServer> <security>      <requestFiltering >        &l ...

  10. 6.Python字符串

    #header { display: none !important; } } #header-spacer { width: 100%; visibility: hidden; } @media p ...