PAT T1012 Greedy Snake
直接暴力枚举,注意每次深搜完状态的还原~
#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的更多相关文章
- Pascal小游戏 贪吃蛇
一段未完成的Pascal贪吃蛇 说这段代码未完成其实是没有源代码格式化,FP中一行最多只有255字符宽. uses crt; const screenwidth=50; screenheight=24 ...
- 2019秋季PAT甲级_C++题解
2019 秋季 PAT (Advanced Level) C++题解 考试拿到了满分但受考场状态和知识水平所限可能方法不够简洁,此处保留记录,仍需多加学习.备考总结(笔记目录)在这里 7-1 Fore ...
- PAT甲级【2019年9月考题】——A1164 DijkstraSequence【30】
7-4 Dijkstra Sequence (30 分) Dijkstra's algorithm is one of the very famous greedy algorithms. It is ...
- 《转载》PAT 习题
博客出处:http://blog.csdn.net/zhoufenqin/article/details/50497791 题目出处:https://www.patest.cn/contests/pa ...
- USACO . Greedy Gift Givers
Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided to exchange gifts ...
- [LeetCode] Design Snake Game 设计贪吃蛇游戏
Design a Snake game that is played on a device with screen size = width x height. Play the game onli ...
- PAT Judge
原题连接:https://pta.patest.cn/pta/test/16/exam/4/question/677 题目如下: The ranklist of PAT is generated fr ...
- PAT/字符串处理习题集(二)
B1024. 科学计数法 (20) Description: 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+ ...
- PAT 1041. 考试座位号(15)
每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座 ...
随机推荐
- ES5 寄生式继承
3 寄生式继承 组合继承存在调用两次父类构造的问题 原型继承存在不能实例化对象不能传参的问题 组合继承和原型继承都存在子类原有原型属性被覆盖的问题 因此推荐使用寄生式继承 /* 寄生式继承: 1 解决 ...
- 4.万能的Map+模糊查询
万能的Map 当数据或者属性很多的时候,可以选择性的单独改变密码或者用户名等等 UserMapper.java int updateUserByMap(Map<String,Object> ...
- C#中的注释
帮助程序员便于阅读代码 单行注释 // 多行注释 /* * */ 文档注释 /// <summary> /// ... /// <summary>
- 消息队列(二)--- RocketMQ-NameServer阅读
概述 所有broker在启动的时候都会向NameServer进行注册,对它进行发送心跳包. 源码阅读 我们先从 NamesrvStartup这个类分析 public static void mai ...
- 【译】高级T-SQL进阶系列 (四)【上篇】:使用游标进行行级别处理
[译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文链接:传送门. 正常来说,使用游标并不是处理记录集的最佳方式.然而当一个经验丰富的程序员第一次开始写TSQL时,他们经常会寻找其 ...
- sockfd_to_family函数
#include <sys/socket.h> #include <netinet/in.h> #define SA struct sockaddr int sockfd_to ...
- 第八届极客大挑战 Web-故道白云&Clound的错误
web-故道白云 题目: 解题思路: 0x01 首先看到题目说html里有秘密,就看了下源代码如图, 重点在红圈那里,表示输入的变量是id,当然上一行的method=“get”同时说明是get方式获取 ...
- idea抽取方法
问题:有时候一个方法里面嵌套了很多逻辑,想拆分为多个方法方便调用:或者一个方法复用性很高,这时,这个方法嵌套在局部方法里面肯定是不方便的,如何快速抽取出这个方法? public class Demo ...
- 01 认识python
python介绍 python的创始⼈为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决⼼ 开发⼀个新的脚本解释程序,作为ABC语 ...
- 【Go语言系列】1.2、GO语言简介:哪些大公司正在使用Go语言
Go语言的强项在于它适合用来开发网络并发方面的服务,比如消息推送.监控.容器等,所以在高并发的项目上大多数公司会优先选择 Golang 作为开发语言. 1.Google 这个不用多做介绍,作为开发Go ...