Description

Input

    第1行:四个用空格隔开的整数Pj Bi,B2,R. P(1≤P≤5)表示石子的个数,Bi(-5×100000≤Bi≤5×100000)和B2(-5×100000≤B2≤5×100000)表示两个河堤的z坐标,R(1≤R≤5×100000)表示你要描述湖面多少秒.没有两个石子会在同一时间砸到同一地点,两个河堤一定有不同的坐标,没有石子会砸到河堤上去.
    第2到P+1行:每行有三个用空格隔开的整数描述了一颗石子,X,K T(-5×100000≤X,K T≤5×100000).X.y表示石子砸的地点的坐标,T表示石子是什么时候砸下去的.

Output

    输出是一个9半9的矩阵,中心在(0,0)点.左下点的坐标为(-4,-4),右上点的坐标为(4,4).这个矩阵表现的是R秒时湖面状态.

Sample Input

2 4 100 4
-3 0 1
0 0 2

Sample Output

--------X
-*------X
*-*-*---X
-o-*-*--X
o-----*-X
-o-*-*--X
*-*-*---X
-*------X
--------X
 
 
WA了n+1发……
最后发现我的输出把整个图形上下翻转了……改完就A了……T_T
 
正确的做饭应该是枚举每个对所求的输出有影响的波,然后直接跑,遇到在俩堤岸之间往返的就求出时间取个模……然而我实在比较挫,直接跑了,反正不会T……
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; int n,m1,m2,r,x,y,t,xx,yy,ti,ll,rr,qaq,i,j;
bool f;
int map[][];
void sp(){
while(ti--){
if (f){
yy++;
if (yy==m1||yy==m2) yy--,f=;
}else{
yy--;
if (yy==m1||yy==m2) yy++,f=;
}
}
}
void op(){
ll=max(,x-t),rr=min(,x+t);
for (i=ll;i<=rr;i++){
ti=min(i-(x-t),(x+t)-i);xx=i,yy=y;
f=;sp();
if (yy>=&&yy<=) map[xx][yy]+=qaq;
if (i==x-t||i==x+t) continue;
ti=min(i-(x-t),(x+t)-i);xx=i;yy=y;
f=;sp();
if (yy>=&&yy<=) map[xx][yy]+=qaq;
}
}
int main(){
scanf("%d%d%d%d",&n,&m1,&m2,&r);
m1+=;m2+=;
while(n--){
scanf("%d%d%d",&y,&x,&t);
x+=;y+=;
t=r-t;
qaq=;op();
t-=;
if (t>=) qaq=-,op();
}
for (i=;i>=;i--){
for (j=;j<=;j++)
if (j==m1||j==m2) printf("X");else if (map[i][j]==) printf("-");else if (map[i][j]>=) printf("*");else if (map[i][j]<=-) printf("o");
printf("\n");
}
}

然后还有修改后的

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; int n,m1,m2,r,x,y,t,xx,yy,ti,ll,rr,qaq,i,j;
bool f;
int map[][];
void ssp(){
if (f){
if (ti<m2-yy){
yy+=ti;
return;
}
if (ti<=m2-yy){
yy+=ti-;
return;
}
ti-=m2-yy;
yy=m2-;
f=;ssp();
}else{
if (ti<yy-m1){
yy-=ti;
return;
}
if (ti<=yy-m1){
yy-=ti-;
return;
}
ti-=yy-m1;
yy=m1+;
f=;ssp();
}
}
void sp(){
if (yy<m1&&(!f)) yy-=ti;else
if (yy>m2&&f) yy+=ti;else
if (yy>m2&&(!f)){
if (ti<yy-m2) yy-=ti;else
if (ti<=yy-m2) yy-=ti-;else
ti-=yy-m2,f=,yy=m2+,sp();
return;
}else
if (yy<m1&&f){
if (ti<m1-yy) yy+=ti;else
if (ti<=m1-yy) yy+=ti-;else
ti+=m1-yy,f=,yy=m1-,sp();
return;
}else{
ti%=(m2-m1-)*;
ssp();
}
return;
}
void op(){
ll=max(,x-t),rr=min(,x+t);
for (i=ll;i<=rr;i++){
ti=min(i-(x-t),(x+t)-i);xx=i,yy=y;
f=;sp();
if (yy>=&&yy<=) map[xx][yy]+=qaq;
if (i==x-t||i==x+t) continue;
ti=min(i-(x-t),(x+t)-i);xx=i;yy=y;
f=;sp();
if (yy>=&&yy<=) map[xx][yy]+=qaq;
}
}
int main(){
scanf("%d%d%d%d",&n,&m1,&m2,&r);
if (m1>m2) swap(m1,m2);
m1+=;m2+=;
while(n--){
scanf("%d%d%d",&y,&x,&t);
x+=;y+=;
t=r-t;
qaq=;op();
t-=;
if (t>=) qaq=-,op();
}
for (i=;i>=;i--){
for (j=;j<=;j++)
if (j==m1||j==m2) printf("X");else if (map[i][j]==) printf("-");else if (map[i][j]>=) printf("*");else if (map[i][j]<=-) printf("o");
printf("\n");
}
}

poj 2434;bzoj 1686 [Usaco2005 Open]Waves 波纹的更多相关文章

  1. 【模拟】bzoj1686: [Usaco2005 Open]Waves 波纹

    打完模拟题来庆祝一波:):感觉最近陷入一种“口胡五分钟打题两小时”的巨坑之中…… Description Input     第1行:四个用空格隔开的整数Pj Bi,B2,R. P(1≤P≤5)表示石 ...

  2. bzoj:1687;poj 2434:[Usaco2005 Open]Navigating the City 城市交通

    Description A dip in the milk market has forced the cows to move to the city. The only employment av ...

  3. HDU 3062 && HDU 1824 && POJ 3678 && BZOJ 1997 2-SAT

    一条边<u,v>表示u选那么v一定被选. #include <iostream> #include <cstring> #include <cstdio> ...

  4. POJ 1061 BZOJ 1477 Luogu P1516 青蛙的约会 (扩展欧几里得算法)

    手动博客搬家: 本文发表于20180226 23:35:26, 原地址https://blog.csdn.net/suncongbo/article/details/79382991 题目链接: (p ...

  5. Bzoj 1687: [Usaco2005 Open]Navigating the City 城市交通 广搜,深搜

    1687: [Usaco2005 Open]Navigating the City 城市交通 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 122  So ...

  6. Bzoj 1674: [Usaco2005]Part Acquisition dijkstra,堆

    1674: [Usaco2005]Part Acquisition Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 337  Solved: 162[Sub ...

  7. [BZOJ 1733] [Usaco2005 feb] Secret Milking Machine 【二分 + 最大流】

    题目链接:BZOJ - 1733 题目分析 直接二分这个最大边的边权,然后用最大流判断是否可以有 T 的流量. 代码 #include <iostream> #include <cs ...

  8. BZOJ 1739: [Usaco2005 mar]Space Elevator 太空电梯

    题目 1739: [Usaco2005 mar]Space Elevator 太空电梯 Time Limit: 5 Sec  Memory Limit: 64 MB Description The c ...

  9. BZOJ 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚

    题目 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec  Memory Limit: 64 MB Description Farm ...

随机推荐

  1. 转换函数TO_CHAR,TO_DATE,TO_NUMBER

    TO_CHAR:将日期.数字转为字符串. TO_DATE:将字符串转为日期(注:无数字转日期). TO_NUMBER:将字符串转为数字(注:无日期转数字).此函数作用不大,算术运算时Oracel会自动 ...

  2. React:入门计数器

    ---恢复内容开始--- 把React的官网入门例子全看一遍,理解了,但自己从头开始写有点困难,这次强迫自己从头开始写,并写好注释: import React, { Component } from ...

  3. 掌握numpy(二)

    目录 掌握numpy(一) 掌握numpy(二) 掌握numpy(三) 掌握numpy(四) 数组的reshape 顾名思义,就是对数组的形状进行改变,比如行变成列,一行变多行等. in place ...

  4. ArcGIS 网络分析[8.1] 资料1 使用AO打开或创建网络数据集之【打开】

    为了创建或打开一个网络数据集,你必须使用NetworkDatasetFDExtension对象(文件地理数据库中的数据集)或NetworkDatasetWorkspaceExtension对象(对于S ...

  5. bzoj 3626: [LNOI2014]LCA

    Description 给出一个n个节点的有根树(编号为0到n-1,根节点为0).一个点的深度定义为这个节点到根的距离+1.设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先.有q ...

  6. K:java中properties文件的读写

    Properties类与.properties文件:   Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集的类,不过Properties有特殊 ...

  7. SLAM入门之视觉里程计(4):基础矩阵的估计

    在上篇文章中,介绍了三位场景中的同一个三维点在不同视角下的像点存在着一种约束关系:对极约束,基础矩阵是这种约束关系的代数表示,并且这种约束关系独立与场景的结构,只依赖与相机的内参和外参(相对位姿).这 ...

  8. c=$[$c%5]到let c=$c%5的转换

    刚学shell不知道怎么转换,现在明白了一点点 ,记录下   变成加法就好明白了     c=$[$c+5] let c=$c+5 #变量c等于C加上5后在赋值给自身 let c+=5 #就可以这样表 ...

  9. python词云的制作方法

    第一次接触到词云主要是觉得很好看,就研究了一下,官方给出了代码的,但是新手看的话还是有点不容易,我们来尝试下吧. 环境:python2.7 python库:PIL(pillow),numpy,matp ...

  10. Nginx集群之WCF大文件上传及下载(支持6G传输)

    目录 1       大概思路... 1 2       Nginx集群之WCF大文件上传及下载... 1 3       BasicHttpBinding相关配置解析... 2 4       编写 ...