hihoCoder 1257 Snake Carpet(很简单的构造方法)

2015 ACM / ICPC 北京现场赛 I 题

构造

注意一个小坑,每条蛇的输出是要从头到尾输出的。

还要注意的是,不能开数组去模拟构造过程,然后输出,那样会TLE的。

 

#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;const int maxn=500+10;
vector<int> G[maxn];
int Find[maxn][3];
int n;
int R1,C1,R2,C2;
int tot;int ans[maxn][maxn];void f()
{Find[2][1]=1; Find[2][2]=2; Find[4][2]=2;for(int i=4;i<=500;i=i+2) {if(i%4==0) Find[i][1]=Find[i-2][1]+2;else Find[i][1]=Find[i-2][1];}for(int i=4;i<=500;i=i+2){if(i%4==2) Find[i][2]=Find[i-2][2]+2;else Find[i][2]=Find[i-2][2];}
}void init()
{//清空for(int i=0;i<=n;i++) G[i].clear();tot=0;//确定左图的大小R1=C1=(n+1)/2;//确定右图的大小if(n%2==1){R2=Find[n-1][1];C2=Find[n-1][2];}else {R2=Find[n][1];C2=Find[n][2];}
}void odd()
{for(int i=1;i<=n;i=i+2){tot++;for(int j=1;j<=tot;j++){G[i].push_back(tot);G[i].push_back(j);ans[tot][j]=i;}for(int j=tot-1;j>=1;j--){G[i].push_back(j);G[i].push_back(tot);ans[j][tot]=i;}}
}void even()
{if(R1==R2){int NowR=1;int NowC=0;for(int i=2;i<=n;i=i+2){//横着画if(i%4==0){for(int j=1;j<=i/2;j++) {G[i].push_back(NowR+1);G[i].push_back(j+C1);ans[NowR+1][j+C1]=i;}for(int j=i/2;j>=1;j--) {G[i].push_back(NowR+2);G[i].push_back(j+C1);ans[NowR+2][j+C1]=i;}NowR=NowR+2;} //竖着画else{for(int j=1;j<=i/2;j++) {G[i].push_back(j);G[i].push_back(NowC+1+C1);ans[j][NowC+1+C1]=i;}for(int j=i/2;j>=1;j--) {G[i].push_back(j);G[i].push_back(NowC+2+C1);ans[j][NowC+2+C1]=i;}NowC=NowC+2;}}}else if(R1==C2){swap(R2,C2);int NowR=R2+1;int NowC=1;for(int i=2;i<=n;i=i+2){//竖着画if(i%4==0){for(int j=R2;j>=R2-i/2+1;j--){G[i].push_back(j);G[i].push_back(NowC+1+C1);ans[j][NowC+1+C1]=i;}for(int j=R2-i/2+1;j<=R2;j++){G[i].push_back(j);G[i].push_back(NowC+2+C1);ans[j][NowC+2+C1]=i;}NowC=NowC+2;}//横着画else {for(int j=1;j<=i/2;j++){G[i].push_back(NowR-1);G[i].push_back(j+C1);ans[NowR-1][j+C1]=i;}for(int j=i/2;j>=1;j--){G[i].push_back(NowR-2);G[i].push_back(j+C1);ans[NowR-2][j+C1]=i;}NowR=NowR-2;}}}
}void print()
{for(int i=1;i<=n;i++){for(int j=0;j<G[i].size();j++){printf("%d",G[i][j]);if(j<G[i].size()-1) printf(" ");else printf("\n");}}
}int main()
{f();while(~scanf("%d",&n)){init();//初始化odd();//左图even();//右图/*for(int i=1;i<=R1;i++){for(int j=1;j<=C1+C2;j++){printf("%5d",ans[i][j]);}printf("\n");}*/printf("%d %d\n",R1,C1+C2);print();//输出
    }return 0;
}

 

转载于:https://www.cnblogs.com/zufezzt/p/4977956.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/286640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

西北师范大学地理与环境科学学院考研真题汇总(高等数学)持续更新。。。

西北师范大学地理与环境学科学院研究生入学考试的所有专业(地图学与地理信息系统、自然地理学、人文地理学、环境科学、环境工程)的数学均为自主命题,复习参考教材为同济大学第五版。

操作系统与多核处理器

这篇文章解答了我心中的疑问&#xff0c;那就是操作系统会自动调度cpu资源来处理多进程&#xff0c;多线程的并发。早在上世纪90年代末&#xff0c;就有众多业界人士呼吁用CMP(单芯片多处理器)技术来替代复杂性较高的单线程CPU。IBM、惠普、Sun等高端服务器厂商&#xff0c;更是…

Java网络编程二:Socket详解

Socket又称套接字&#xff0c;是连接运行在网络上两个程序间的双向通讯的端点。 一、使用Socket进行网络通信的过程 服务端&#xff1a;服务器程序将一个套接字绑定到一个特定的端口&#xff0c;并通过此套接字等待和监听客户端的连接请求。 客户端&#xff1a;客户端程序根据你…

Android之提示Could not find com.android.support:appcompat-v7:25.3.1.

1 问题 编译第三方项目&#xff0c;错误提示如下 Could not find com.android.support:appcompat-v7:25.3.1. Required by:project :sampleproject :sample > com.yanzhenjie:permission:1.0.7project :sample > com.yanzhenjie.alertdialog:alertdialog:1.0.1 Search …

在 .NET 中使用 FixedTimeEquals 应对计时攻击

计时攻击 在计算机安全中&#xff0c;计时攻击&#xff08;Timing attack&#xff09;是旁道攻击 &#xff08;Side-channel attack&#xff09; 的一种&#xff0c;而旁道攻击是根据计算机处理过程发出的信息进行分析&#xff0c;包括耗时&#xff0c;声音&#xff0c;功耗等…

解读大型网站系统架构的演化

解读大型网站系统架构的演化 大型网站的架构是根据业务需求不断完善的&#xff0c;根据不同的业务特征会做特定的设计和考虑&#xff0c;本文只是讲述一个常规大型网站会涉及的一些技术和手段。作者&#xff1a;李平来源&#xff1a;LEE的博客前言 一个成熟的大型网站&#xff…

【ArcGIS风暴】西北地区气象台站年均NDVI与年均气温和降水的相关性分析

在研究植被动态变化与气候的关系时,通常通过计算植被NDVI值与气温和降水的相关系数来描述相关性的大小。如下图所示,计算了西北地区分布的气象台站与气温和降水的相关性并作图可视化。 下面详细说明整个实现过程。 一、计算相关系数 1. 原理分析 通过计算年均N…

python 全解坦克大战 辅助类 附完整代码【雏形】

我正在博客之星评选&#xff0c;欢迎投票给我 会从投票人中抽奖机械键盘书&#xff0c;中了会私聊地址 投票连接是&#xff1a;https://bbs.csdn.net/topics/603955346 投票连接是&#xff1a;https://bbs.csdn.net/topics/603955346 投票连接是&#xff1a;https://bbs.csdn.…

vc++ mfc中拖动效果的实现 借助于CImageList

拖动是界面编程频繁使用的一个效果&#xff0c;在windows系统下可谓大行其道。纵观时下的应用软件几乎各个都支持各种各样拖动的效果&#xff0c;windows7更是把拖动做到了极致。其实说起来拖动的实现也很简单&#xff0c;对于有句柄的对象都可以通过MoveWindow或SetWindowPos实…

从浏览器地址栏输入url到显示页面的步骤

从浏览器地址栏输入url到显示页面的步骤(以HTTP为例)- 在浏览器地址栏输入URL- 浏览器查看缓存&#xff0c;如果请求资源在缓存中并且新鲜&#xff0c;跳转到转码步骤 - 如果资源未缓存&#xff0c;发起新请求 - 如果已缓存&#xff0c;检验是否足够新鲜&#xff0c;足够…

有序的Map集合--LinkedHashMap

提出问题&#xff1a; 在写一个dao的时候&#xff0c;我的需求是这个dao是一个万能的&#xff0c;目前的方法只有一个查询出实体类对应的表中所有的数据&#xff0c;通过传入的对象&#xff0c;利用反射获取实体类中的属性名&#xff0c;属性类型&#xff0c;利用字符串拼接获取…

Leetcode之仅仅反转字母

1 题目 给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。 示例 1:输入:"ab-cd" 输出:"dc-ba" 示例 2:输入:"a-bC-dEf-ghIj" 输出:"j-Ih-gfE-dCba" 示例 3:输入:&qu…

【SignalR全套系列】之在.Net Core 中实现长轮询

微信公众号&#xff1a;趣编程ACE关注可了解更多的.NET日常实战开发技巧&#xff0c;如需源码 请后台留言 源码;前文回顾【SignalR全套系列】之在.Net Core 中实现Server-Send Events消息推送【SignalR全套系列】之在.NetCore中实现WebSocket双工通信【SignalR全套系列】之在.N…

完美解决ArcGIS10.2和Erdas9.2软件冲突的方法:共存!

用过ArcGIS和Erdas软件的都知道&#xff0c;二者存在着服务的冲突&#xff0c;为了解决共存的问题&#xff0c;笔者曾多次重装系统&#xff0c;但未能如愿以偿。其实不需要相互关闭服务如此麻烦。那如何在安装有arcgis的电脑安装erdas并解决冲突呢&#xff1f;直接上视频教程。…

架构师之路16年精选50篇

2016精选索引&#xff0c;点击标题阅读相关文章。【方法论】《秒杀系统架构优化思路》《分布式ID生成器》《互联网架构&#xff0c;如何进行容量设计》《线程数究竟设多少合理》《单点系统架构的可用性与性能优化》《关于负载均衡的一切》《异构服务器负载均衡及过载保护》《LV…

yii 前后台分离及登陆验证

2019独角兽企业重金招聘Python工程师标准>>> 比较合理的做法其实是分成两个框架来布署&#xff1b;然而这样说法也太绝对。 事实上是针对不同系统&#xff0c;应采用不同的方法。如为CMS系统&#xff0c;则不需很复杂的权限管理&#xff0c;但如果有管理员与会员之分…

双谷人才财务管理(序)

IT是一个迅速发展的行业&#xff0c;教育是一个良心的行业&#xff0c;两者交集——IT培训&#xff0c;在整个市场中占有一个不可或缺的地位。好多大学生&#xff0c;抱怨找不到工作&#xff1b;好多企业找不到合适的程序员&#xff0c;这几年这个问题越来越严重。。。。于是IT…

Android之打开手机系统相册

1、需求 打开系统相册&#xff0c;获取图片进行扫描操作 2、代码实现 Intent pickIntent new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);pickIntent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");Ca…

Kibana

2019独角兽企业重金招聘Python工程师标准>>> Kibana是一个基于浏览器页面的Elasticsearch前端展示工具。Kibana全部使用HTML语言和Javascript编写的&#xff0c;查询语法是基于Lucene的查询语法。允许布尔运算符、通配符和字段筛选。注意关键字要大写 全文搜索 在搜…

电脑QQ能登上,网页打不开的解决办法

打开360卫士&#xff0c;在功能大全里选择网络优化&#xff0c;断网急救箱。 可以看到DNS服务异常、浏览器配置异常&#xff0c;点击立即修复。