Codeforces 374A - Inna and Pink Pony

 2023-12-25 阅读 37 评论 0

摘要:這是一道非常坑的A題 今天我們機房的一大堆人一起做這題,然后這是其中幾個人的提交記錄(這只是一部分) 然后這是比賽的過題人數 接下來我們看看這道題 大意就是給出一個 n 行 ?m 列 的棋盤,要將放置在坐標點為(i, j)的 candy 移動到四個角落(1,1),(1

這是一道非常坑的A題

今天我們機房的一大堆人一起做這題,然后這是其中幾個人的提交記錄(這只是一部分)

然后這是比賽的過題人數

接下來我們看看這道題

大意就是給出一個 n 行 ?m 列 的棋盤,要將放置在坐標點為(i, j)的 candy 移動到四個角落(1,1),(1,m),(n, 1),(n, m) 中的其中一個。

假設當前在位置(x, y),規定每次移動遵循,(x+a, y+b) 、 (x+a, y-b)、 (x-a, y+b)、(x-a, y-b)。求最小的移動次數。.

然后處理細節極多

求出 (i, j) 到每個角落的距離diff_x, diff_y,而且diff_x 必須要除得盡 a, diff_y除得盡 b,這個很好理解,次數嘛~~~

除此,除完之后這兩個值必須是同奇或同偶。還有就是移動的時候不能超出邊界,在邊界時的特判了~~~~

坑點:很多人可能都會死在樣例37,這個樣例比較特殊,就是某一維不需要移動,但另一維需要移動,但不需要移動的那維,若發生移動,則會越界。給個樣例如5 7 1 3 10 2,實際上是不能移動的,錯的人可能都會輸出2。

AC代碼

#include<bits/stdc++.h>
using namespace std;
int n,i,j,m,a,b,mn=1e7;
int main()
{scanf("%d%d%d%d%d%d",&n,&m,&i,&j,&a,&b);int t1=i-1,t2=j-1;if (t1%a==0&&t2%b==0&&(t1/a==t2/b||(abs((t1/a)-(t2/b))%2==0&&(((t1/a)||((n-t1-1)/a))&&((t2/b)||((m-t2-1)/b))))))if (max((t1/a),(t2/b))<mn)mn=max((t1/a),(t2/b));t1=i-1,t2=m-j;if (t1%a==0&&t2%b==0&&(t1/a==t2/b||(abs((t1/a)-(t2/b))%2==0&&(((t1/a)||((n-t1-1)/a))&&((t2/b)||((m-t2-1)/b))))))if (max((t1/a),(t2/b))<mn)mn=max((t1/a),(t2/b));t1=n-i,t2=j-1;if (t1%a==0&&t2%b==0&&(t1/a==t2/b||(abs((t1/a)-(t2/b))%2==0&&(((t1/a)||((n-t1-1)/a))&&((t2/b)||((m-t2-1)/b))))))if (max((t1/a),(t2/b))<mn)mn=max((t1/a),(t2/b));t1=n-i,t2=m-j;if (t1%a==0&&t2%b==0&&(t1/a==t2/b||(abs((t1/a)-(t2/b))%2==0&&(((t1/a)||((n-t1-1)/a))&&((t2/b)||((m-t2-1)/b))))))if (max((t1/a),(t2/b))<mn)mn=max((t1/a),(t2/b));if(mn!=1e7)printf("%d\n",mn);else puts("Poor Inna and pony!");return 0;
}

?

轉載于:https://www.cnblogs.com/Orange-User/p/7531717.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/195001.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息