统一链接:https://atcoder.jp/contests/abc250/tasks
这次比较水啊(特别是C),但是说D题的数学题不那么简单(但看了这个题确实不难) 下面开始题解: A题:题意:给定格子长宽和一个格子的行列,求那个格子的相邻格子的数量。
这个题还是比较友好的,把所有情况都告诉你了,除了只有1行或者只有1列的情况比较难想到,下面代码:
//AT250A 22-05-08
#include
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int h,w,r,c,s=4;
cin>>h>>w>>r>>c;
if (r==1 || r==h) s--;
if (c==1 || c==w) s--;
if (h==1 || w==1) s--;
if (h==1 && r==1 && c==1 && w==1) s=0;
cout<
B题:
题意:按要求输出:给定区块长宽,间隔输出 # 和 . 。
#的情况就是长和宽的绝对值差为奇数,.就是差为偶数,看代码:
//AT250A 22-05-08
#include
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int h,w,r,c,s=4;
cin>>h>>w>>r>>c;
if (r==1 || r==h) s--;
if (c==1 || c==w) s--;
if (h==1 || w==1) s--;
if (h==1 && r==1 && c==1 && w==1) s=0;
cout<
C题
题意:给定长度为 N 的数组,进行 *** 作:
共有 Q 个询问:
给定一个数,查找这个数,然后交换它与右边的元素,如果是最右边,就交换第 N-1 个元素
求出 *** 作完的数组。
分析:硬查找肯定不行 4*10^10 绝对出事,需要每次记录位置,然后模拟就行了。
//AT250C 22-05-08
#include
using namespace std;
int p[200005],rev[200005],a[200005];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n,q;
cin>>n>>q;
//p 指第 i 个球放的位置
for (int i=1;i<=n;i++)
{
a[i]=i;p[i]=i;rev[i]=i;
}
while (q--)
{
int x;
cin>>x;
if (p[x]==n)
{
int tmp=p[x];
swap(p[x],p[a[tmp-1]]);
swap(a[tmp],a[tmp-1]);
}
else
{
int tmp=p[x];
swap(p[x],p[a[tmp+1]]);
swap(a[tmp],a[tmp+1]);
}
}
for (int i=1;i<=n;i++)
{
cout<
===============稍后更新================
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)