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考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座 ...
随机推荐
- 【Python】文件下载小助手
import requests from contextlib import closing class ProgressBar(object): def __init__(self, title, ...
- 从TCL欲成JDI股东看,面板行业进入“群架”时代
当下,屏幕早已成为第一入口.PC.智能手机.平板电脑.电视.家庭智能终端.智慧交通.智能穿戴设备.汽车中控大屏--种种设备都是以屏幕为最重要的视觉呈现方式,让人们在一个个奇幻世界中畅游.也正是因为屏幕 ...
- CentOS7中Tomcat的安装和配置以及启动配置tomcat。启动过程中的易错点
Tomcat运行需要设置JRE目录,全局变量配置,请参见: Linux下JDK的安装和配置 当然也可以直接修改Tomcat的配置文件,请自行度娘 1.下载并解压 请先去官网找到需要下载的tom ...
- 全局下的isFinite
isFinite() 函数用于检查其参数是否是无穷大 1. 他是一个全局对象,可以在js代码中直接使用 2. isFinite() 函数用于检查其参数是否是无穷大. 3. 如果 number 是有限 ...
- JAVA基础学习(3)之循环
3循环 3.1循环 3.1.1循环 一直要做的行为进行循环 3.1.2数数字 while(){}判断是否进行 数数字:number/10 //数数字Scanner in = new Scanner(S ...
- PTA的Python练习题(十七)
第4章-19 矩阵运算 a=eval(input()) s=[] count=0 for i in range(a): b=input() s.append([int(i) for i in b.sp ...
- [Qt 踩坑] 设置背景就卡退 报错 异常结束或者crashed 0xFFFFFFFF
#开始 我现在是带着崩溃得心情写博客的 这个估计是我遇到的最混蛋的bug 我试图用Qt写个小程序 然后给窗口添加一个背景 就像这样 先不管我那个路径的问题 只要写了那个代码,就一定出错 删除了一点事情 ...
- 【转载】巴塞尔问题(Basel Problem)的多种解法
如何计算 \(\displaystyle \zeta \left ( 2 \right )=\frac{1}{1^{2}}+\frac{1}{2^{2}}+\frac{1}{3^{2}}+\cdots ...
- php头像上传插件
最近找到了一个比较简单实用的php头像上传插件,兼容IE8及以上等主流浏览器,分享给大家.效果如下: 1.首页效果图:默认显示默认图片. 2.点击图片(拥有裁剪框,可以拖动.缩放.裁剪头像等功能,注意 ...
- gitlab的搭建与汉化
gitlab的搭建:内存最好2G以上 yum -y install curl unzip policycoreutils git wget 安装相关依赖包 所有gitlab rpm包的 ...