hdu 4452 37届金华赛区 K题

题意:给一个n*n的格子,1在左上角,2在右下角,每个人有一个初始速度和方向,若遇到边缘,则朝相反方向前进,若两个人相遇则交换方向(注意方向改变后,人仍然需要移动),同时,每个人每过t1,t2时间就会朝左转向,求K秒时那个人所在的方向

模拟,看起来比较麻烦,实际写起来还是比较好写的

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<queue>
 6 #include<map>
 7 using namespace std;
 8 #define MOD 1000000007
 9 const double eps=1e-5;
10 #define cl(a) memset(a,0,sizeof(a))
11 #define ts printf("*****\n");
12 const int MAXN=1005;
13 int n,m,tt,K,v1,v2;
14 int dir1,dir2,t1,t2;  //0北,1西,2南,3东
15 int x1,y1;
16 int x2,y2;
17 void fun(int t)
18 {
19     if(x1==x2&&y1==y2)  swap(dir1,dir2);
20     else
21     {
22         if(t!=0&&t%t1==0)    dir1+=1,dir1%=4;
23         if(t!=0&&t%t2==0)    dir2+=1,dir2%=4;
24     }
25
26     for(int i=0;i<v1;i++)
27     {
28         if(dir1==0&&x1==1)dir1=2;
29         if(dir1==1&&y1==1)dir1=3;
30         if(dir1==2&&x1==n)dir1=0;
31         if(dir1==3&&y1==n)dir1=1;
32
33         if(dir1==0)x1--;
34         else if(dir1==1)y1--;
35         else if(dir1==2)x1++;
36         else y1++;
37     }
38     for(int i=0;i<v2;i++)
39     {
40         if(dir2==0&&x2==1)dir2=2;
41         if(dir2==1&&y2==1)dir2=3;
42         if(dir2==2&&x2==n)dir2=0;
43         if(dir2==3&&y2==n)dir2=1;
44
45         if(dir2==0)x2--;
46         else if(dir2==1)y2--;
47         else if(dir2==2)x2++;
48         else y2++;
49     }
50 }
51 int main()
52 {
53     int i,j,k;
54     #ifndef ONLINE_JUDGE
55     freopen("1.in","r",stdin);
56     #endif
57     while(scanf("%d",&n)!=EOF)
58     {
59         if(n==0)    break;
60         char di[5];
61         x1=1,y1=1;
62         x2=n,y2=n;
63
64
65         scanf("%s%d%d",di,&v1,&t1);
66         if(di[0]==‘N‘)  dir1=0;
67         else if(di[0]==‘W‘)  dir1=1;
68         else if(di[0]==‘S‘)  dir1=2;
69         else dir1=3;
70
71
72         scanf("%s%d%d",di,&v2,&t2);
73         if(di[0]==‘N‘)  dir2=0;
74         else if(di[0]==‘W‘)  dir2=1;
75         else if(di[0]==‘S‘)  dir2=2;
76         else dir2=3;
77
78
79         scanf("%d",&K);
80         for(i=0;i<K;i++)
81         {
82             fun(i);  //每秒钟的运动情况
83         }
84         printf("%d %d\n",x1,y1);
85         printf("%d %d\n",x2,y2);
86     }
87 }
时间: 2024-10-11 02:53:18

hdu 4452 37届金华赛区 K题的相关文章

hdu 4445 37届金华赛区 D题

题意:给一个坦克的高度,求炮弹能打中最多的数量 枚举角度,作为一名学霸虽然很快推出了公式,但是却没有考虑到,角度可以朝下的情况 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 #include<queue> 7 #include<map> 8 using namespa

hdu 4442 37届金华赛区 A题

题意:给出一些队伍,每个队伍有初始等待时间和每秒增加的时间,求最短时间 假设有两个队初始时间和每秒增加时间为a1,b1和a2,b2 若第选择第一个的时间小于第二个,则 a1+a2+a1*b2<a2+a1+a2*b1 化简得a1*b2<a2*b1,注意不要除过去,否则会有除以零报错 卧槽,MOD写错了,wa了半天 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include&l

hdu 4451 37届金华赛区 J题

题意:给出衣服裤子鞋子的数目,有一些衣服和裤子,裤子和鞋子不能搭配,求最终的搭配方案总数 wa点很多,我写wa了很多次,代码能力需要进一步提升 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 #include<queue> 7 #include<map> 8 using

hdu 4463 第37届ACM/ICPC杭州赛区K题 最小生成树

题意:给坐标系上的一些点,其中有两个点已经连了一条边,求最小生成树的值 将已连接的两点权值置为0,这样一定能加入最小生成树里 最后的结果加上这两点的距离即为所求 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 #include<queue> 7 #include<map>

HDU-4451-Dressing (2012年金华赛区J题)

Dressing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2674    Accepted Submission(s): 1179 Problem Description Wangpeng has N clothes, M pants and K shoes so theoretically he can have N×M×K

HDU-4450-Draw Something (2012年金华赛区I题)

Draw Something Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2591    Accepted Submission(s): 2179 Problem Description Wangpeng is good at drawing. Now he wants to say numbers like "521"

HDU - 4813 Hard Code (长春赛区水题)

Description Some strange code is sent to Da Shan High School. It's said to be the prophet's note. The note is extremely hard to understand. However, Professor Meng is so smart that he successfully found the pattern of the code. That is, the length of

HDU - 4814 Golden Radio Base (长春赛区B题)

最小二乘法又叫做最小平方法,是一种数学优化技术.它通过最小化误差的平方和寻找数据的最佳函数匹配. 通常情况下最小二乘法用于求回归问题.以简单的线性最小二乘为例,二维平面上给定个点的坐标,确定一条直线, 要求大致符合这个点的走向. 我们可以设这条直线的方程为,那么就要使在处的函数值与给定的值相 差达到最小,也就是说,要确定的值,使得 最小.根据这种方法求的值就是典型的最小二乘法. 可以看出是的一个二元函数,要求的最小值,那么求偏导,有 进一步得到 然后联立两式可以解出,如果方程数比较多,我们可以用

08年acm区域赛北京赛区 部分题解题报告

08年区域赛北京赛区 http://poj.org/searchproblem?field=source&key=Beijing+2008 POJ 3921 Destroying the bus stations 题目还是比较难的,当时的榜似乎只有4/25的通过/提交,其实题目数据很水.学长转换模型写了网络流求最小割,可以AC,不过自己造了个数据推翻了正确性.我写了个很挫的bfs套bfs,外层是最小的删除点数,内层是求最短路,数据很水可以AC.但比较蛋疼的在于bfs耗内存,而且队列中的点数是阶乘