统一链接:https://atcoder.jp/contests/abc250/tasks
这次比较水啊(特别是C),但是说D题的数学题不那么简单(但看了这个题确实不难) 下面开始题解: A题:题意:给定格子长宽和一个格子的行列,求那个格子的相邻格子的数量。
这个题还是比较友好的,把所有情况都告诉你了,除了只有1行或者只有1列的情况比较难想到,下面代码:
//AT250A 22-05-08 #includeusing 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 #includeusing 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 #includeusing 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< ===============稍后更新================



