我是靠谱客的博主 内向水蜜桃,最近开发中收集的这篇文章主要介绍CodeForces 435C Cardiogram-模拟,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

http://codeforces.com/problemset/problem/435/C

按他给你的点,在坐标纸画线


可以发现对点(x,y),如果右边的点是在上方,则变成(x+1,y+1)直到相遇,并且向上时 (x,y)往上画线是会落在(x,y)这个格子的,

而向下的过程中点(x,y)画‘’占用的格子是(x-1,y)

注意不要多余的空格,最后一行和最后一列是不需要用到的



#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <iostream>
using namespace std;
const double pi=acos(-1.0);
double eps=0.000001;
int min(int a,int b)
{return a<b?a:b;}
int max(int a,int b)
{return a>b?a:b;}
int tm[1005];
char ans[2005][2005];
struct node
{
int x,y;
node(){}
node(int a, int b){x=a,y=b;}
};
bool cmp(node a,node b)
{return a.y<b.y;}
node p[2005];
int main()
{
__int64 n;
__int64 i,j;
int cun=0;
scanf("%I64d",&n);
for (i=1;i<=n;i++)
scanf("%d",&tm[i]);
int maxx_row=0;
int minn_row=0;
int maxx_col=0;
int minn_col=0;
p[++cun]=node(0,0);
for (i=1;i<=n;i++)
{
int sum1=0;
for (j=1;j<=i;j++)
//数组列,坐标行
{
sum1+=tm[j];
}
int sum2=0;
for (j=1;j<=i;j++)
//数组行,坐标列
{
if (j%2)
sum2+=tm[j];
else sum2-=tm[j];
}
if (sum1>maxx_row ) maxx_row=sum1;
if (sum1<minn_row) minn_row=sum1;
if (sum2>maxx_col ) maxx_col=sum2;
if (sum2<minn_col) minn_col=sum2;
p[++cun]=node(sum2,sum1);
}
sort(p+1,p+1+cun,cmp);
for (i=1;i<cun;i++)
{
node t1=p[i];
node t2=p[i+1];
if (t2.x>t1.x)
{
while(t2.y>t1.y)
{
ans[1000+t1.x][1000+t1.y]='/';
//printf("%d %dn",t1.x,t1.y);
t1.y++;
t1.x++;
}
}
else
{
while(t2.x<t1.x)
{
ans[1000+t1.x-1][1000+t1.y]='\';
//	printf("%d %dn",t1.x-1,t1.y);
t1.y++;
t1.x--;
}
}
}
for (i=maxx_col-1;i>=minn_col;i--)
{
for (j=minn_row;j<=maxx_row-1;j++)
{
if (ans[1000+i][1000+j]==0)
printf(" ");
else
printf("%c",ans[1000+i][1000+j]);
}
printf("n");
}
return 0;
}


最后

以上就是内向水蜜桃为你收集整理的CodeForces 435C Cardiogram-模拟的全部内容,希望文章能够帮你解决CodeForces 435C Cardiogram-模拟所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部