Codeforces Beta Round #76 (Div. 1 Only) A. Frames
Codeforces Beta Round #76 (Div. 1 Only) A. Frames (模擬)
題意:給定 n n n個資料夾,每行至多放 m m m個資料夾,給定編號 a , b a,b a,b,求刪除 [ a , b ] [a,b] [a,b]的所有資料夾的最小運算元。
思路:顯然最多我們只需要刪除 3 3 3次,因此我們只需要找出 1 , 2 , 3 1,2,3 1,2,3次分別對應哪些情況即可,事實上我們只需要找兩種,令一種直接 e l s e else else即可。
一.先從 1 1 1開始找。
我們令 a , b a,b a,b分別對應的二維座標位置為 ( x a , y a ) , ( x b , y b ) (x_a,y_a),(x_b,y_b) (xa,ya),(xb,yb)
1.顯然 x a = x b x_a=x_b xa=xb滿足。
2. y a = 1 y_a=1 ya=1且 ( y b = m 或 者 b = n ) (y_b=m或者b=n) (yb=m或者b=n)也滿足。
二.再從 2 2 2開始找。
1. x b − x a = 1 x_b-x_a=1 xb−xa=1即兩行滿足。
2. y b + 1 = y a y_b+1=y_a yb+1=ya也滿足。
3.
a
=
1
a=1
a=1或
b
=
n
b=n
b=n滿足。
4.
y
a
=
1
y_a=1
ya=1或
y
b
=
m
y_b=m
yb=m滿足。
其他情況為 3 3 3。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
#define mst(a,b) memset(a,b,sizeof a)
#define lx x<<1
#define rx x<<1|1
#define reg register
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
#define il inline
int n,m,a,b;
PII fun(int x){
int r=(x-1)/m+1,c=(x-1)%m+1;
return {r,c};
}
int main(){
scanf("%d%d%d%d",&n,&m,&a,&b);
//printf("%d,%d\n",r,rest);
PII p1=fun(a),p2=fun(b);
if(p1.fi==p2.fi||(p1.se==1&&(p2.se==m||b==n))) puts("1");
else if(p2.fi-p1.fi==1||(p2.se+1==p1.se)||a==1||p2.se==m||b==n||p1.se==1) puts("2");
else puts("3");
return 0;
}
本題的難點在於需要考慮多種特殊情況,一不小心就很容易遺漏一些情況,因此寫這種題要特別注意考慮全面。
相關文章
- [CF77] Codeforces Beta Round 69 (Div. 1 Only) A~E 題解
- Codeforces Round 709 (Div. 1)
- Codeforces Round 934 (Div. 1)
- Codeforces Round 947 (Div. 1 + Div. 2)
- Codeforces Round #469 C A. Zebras
- Codeforces Round 969 (Div. 1) 記錄
- 【Codeforces Round #499 (Div. 1) B】Rocket
- Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2)
- Codeforces Round #844 (Div. 1 + Div. 2, based on VK Cup 2022 - Elimination Round) A-D
- Codeforces Round 943 (Div. 3)(C-G1)
- Codeforces Round 986 (Div. 2)
- Codeforces Round 987 (Div. 2)
- Codeforces Round 991 (Div. 3)
- Codeforces Round 972 (Div. 2)
- Codeforces Round 982 (Div. 2)
- Codeforces Round 981 (Div. 3)
- Codeforces Round 979 (Div. 2)
- Codeforces Round 973 (Div. 2)
- Codeforces Round 976 (Div. 2)
- Codeforces Round 975 (Div. 2)
- Codeforces Round 974 (Div. 3)
- Codeforces Round 949 (Div. 2)
- Codeforces Round 966 (Div. 3)
- Codeforces Round 969 (Div. 2)
- Codeforces Round 873 (Div. 2)
- Codeforces Round 967 (Div. 2)
- Codeforces Round 946 (Div. 3)
- Codeforces Round 964 (Div. 4)
- Codeforces Round 965 (Div. 2)
- Codeforces Round 963 (Div. 2)
- Codeforces Round 962(Div. 3)
- Codeforces Round 962 (Div. 3)
- Codeforces Round 961 (Div. 2)
- Codeforces Round 958 (Div. 2)
- Codeforces Round 960 (Div. 2)
- Codeforces Round 957 (Div. 3)
- Codeforces Round 916 (Div. 3)
- Codeforces Round 953 (Div. 2)