题目:

https://cn.vjudge.net/problem/1451310/origin

题意&思路:

纯粹模拟。

大体题意是这样的:

1、有人要在一个10-9<=x<=109,10-9<=y<=109,这么大的一张纸上去画图,而我们只需要打印输出最大为0<=x<=100,0<=y<=100范围内的图案就ok了。

2、如果s==0的话就在给出的坐标处画一个“_o_”( ASCII codes 95, 111, 95)的图案,表示a tree stump。

3、如果s>0的话,就在给出的坐标处画一个高度为s的a standing tree,这个standing tree 首先有一个root图案为:“_|_”,(ASCII codes 95, 124, 95),然后有s个“|”表示树干,最后在最高的树干上边的一个单元格中画一个“^” ASCII code 94)。

4、另一个需要注意的地方是,题目中的坐标表示为左下角为(0,0),右上角是(m-1,m-1),需要做一下下标的变换对应到数组中。

代码:

#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn = ;
int mp[maxn][maxn];
int n,m; void Dn(int x,int y,int id){
if(x>= && x<m && y>= && y<m){//必须是在要输出的范围内才能画上图案
mp[x][y] = id;
}
return;
} void print(){
for(int i = ; i<m+; i++){
printf("*");
}
printf("\n");
for(int i = ; i<m; i++){
for(int j = ; j<m; j++){
if(j==)printf("*");
printf("%c",mp[i][j]);
if(j==m-)
printf("*\n");
}
}
for(int i = ; i<m+; i++){
printf("*");
}
printf("\n\n");
} int main(){
while(scanf("%d%d",&m,&n)!=EOF){
for(int i = ; i<m; i++){
for(int j = ; j<m; j++){
mp[i][j] = ;
}
}
int x,y,s;
for(int kk = ; kk<n; kk++){
scanf("%d%d%d",&s,&y,&x);//注意行和列的输入位置
x = m-x-;//由题意的坐标变换到数组中的下标中
if(s==){
Dn(x,y,);//打印'o'
Dn(x,y-,);//打印'_'
Dn(x,y+,);//打印'_'
}
else if(s>){
Dn(x,y,);//打印'|'
Dn(x,y-,);//打印'_'
Dn(x,y+,);//打印'_'
for(int i=; i<=s; i++){
Dn(x-i,y,);//打印'|'
Dn(x-i,y-,);//打印'/'
Dn(x-i,y+,);//打印'\'
}
Dn(x-s-,y,);//打印'^'
}
}
print();
}
return ;
}

Gym - 101670E Forest Picture (CTU Open Contest 2017 模拟)的更多相关文章

  1. Gym - 101670H Go Northwest!(CTU Open Contest 2017 思维题+map)

    题目: Go Northwest! is a game usually played in the park main hall when occasional rainy weather disco ...

  2. Gym - 101670A Amusement Anticipation(CTU Open Contest 2017 签到题)

    题目&题意: 倒着找处于最后位置的等差数列的开头的位置. 例: 1 5 3 4 5 6 3 4 5 6是等差数列,它的开头的位置是3 PS: 读题真的很重要!!!!多组输入,上来就读错了!! ...

  3. Gym - 101670F Shooting Gallery(CTU Open Contest 2017 区间dp)

    题目&题意:(有点难读...) 给出一个数字序列,找出一个区间,当删除这个区间中的两个相同的数字后,只保留这两个数字之间的序列,然后继续删除相同的数字,问最多可以实行多少次删除操作. 例如: ...

  4. Gym - 101670G Ice cream samples(CTU Open Contest 2017 尺取法)

    题目: To encourage visitors active movement among the attractions, a circular path with ice cream stan ...

  5. Gym - 101670H Dark Ride with Monsters(CTU Open Contest 2017 贪心)

    题目: A narrow gauge train drives the visitors through the sequence of chambers in the Dark Ride attra ...

  6. Gym - 101670C Chessboard Dancing(CTU Open Contest 2017 找规律)

    题目:链接 思路: 多画出几个情况就可以找出规律来了 Knight (当大于2的时候只要两种颜色相间出现就可以了) King(当大于等于3的时候,总可以用四种形式来补色,具体如下)  Bishop(斜 ...

  7. Gym - 101670B Pond Cascade(CTU Open Contest 2017 贪心,二分)

    题目: The cascade of water slides has been installed in the park recently and it has to be tested. The ...

  8. Gym - 101670J Punching Power(CTU Open Contest 2017 最大独立集)

    题目: The park management finally decided to install some popular boxing machines at various strategic ...

  9. CTU Open Contest 2017

    这场题很水.水题我就懒得贴了. B - Pond Cascade 优先队列维护这个水池需要多少时间 或者 直接扫一遍. #include <cstdio> #include <cst ...

随机推荐

  1. 【OI】指针线段树&指针

    对于线段树,我们一般需要n*4的空间去存储线段树,然后有一种玄学操作是用指针来实现线段树. #include <inttypes.h> #include <algorithm> ...

  2. Cordova 开发 App

    Cordova 是一个开源的移动开发框架.允许你用标准的 Web 技术——HTML5,CSS3 和 JavaScript 做跨平台开发.应用在每个平台的具体执行被封装了起来,并依靠符合标准的 API ...

  3. [Pa2013]Iloczyn

    https://www.zybuluo.com/ysner/note/1300802 题面 给定正整数\(n\)和\(k\),问能否将\(n\)分解为\(k\)个不同正整数的乘积. \(n\leq10 ...

  4. MIPI接口

    接口 分辨率 说明 RGB 800*480以下 大部分AP均支持RGB接口,此类LCD在低端平板广泛使用 LVDS 1024*768及以上 主要通过转换芯片将RGB等专程LVDS来支持:少量AP直接集 ...

  5. CSS3常用知识点

    CSS3常用知识点 1 css3选择器 1.1 属性选择器 /* E[attr~=val] 表示的一个单独的属性值 这个属性值是以空格分隔的*/ .attr2 a[class~="kawa& ...

  6. GIT学习之路第五天 分支管理

    本文参考廖雪峰老师的博客进行总结,完整学习请转廖雪峰博客 5.1创建与合并分支 首先创建dev分支,然后切换dev分支 $git checkout -b dev(包含创建并切换) 等价于<-&g ...

  7. python2行代码调用程序

    import win32api win32api.ShellExecute(0, 'open', r'C:\Users\TOPFEEL\AppData\Local\Postman\app-5.5.0\ ...

  8. Scala简单计算实例,其在数据分析方面的优势体会

    程序只是简单的从文件中读取数据,并进行计算. package com.bill.www /** * Created by Bill on 2016/2/3. * 目的:用scala实现简单的数据计算 ...

  9. 《从Paxos到ZooKeeper 分布式一致性原理与实践》阅读【Watcher】

    ZooKeeper 允许客户端向服务端注册一个 Watcher 监听,当服务端的一些指定事件触发了这个 Watcher,那么就会向指定客户端发送一个事件通知来实现分布式的通知功能. ZooKeeper ...

  10. 在struct 中使用string,赋值会报错

    struct中最好使用char来代替string,因为string的大小不是固定的