从这里开始
瞎扯
例行快速切A、B、C。
然后发现D是交互。E也不像是我能做的题,感觉完蛋了。
最后8分钟想出D。狂码代码,然后比赛结束后1分钟过样例。
第二天早上再花4分钟AC。我真是个大菜逼。。
于是这场cf比赛变成了真·手速场。几个friends手速比我快,然后rank就比我高。。。
(获得成就:在官方题解出来之前写完也许是假的题解)
Problem A New Building for SIS
题目大意
有$n$栋高度均为$h$的塔排成1排。相邻的塔之间第$a$层到第$b$层之间有通道。上下楼层或者在通道中移动均会花费1的单位时间。多次询问从一座塔的某一层到另一个塔的一层需要的最少耗时。
大力分类讨论。我居然WA了一次。'
Code
1 /** 2 * Codeforces 3 * Problem#1020A 4 * Accepted 5 * Time: 31ms 6 * Memory: 0k 7 */ 8 #include<bits/stdc++.h> 9 using namespace std; 10 typedef bool boolean; 11 12 int n, h, a, b, q; 13 14 inline void init() { 15 scanf("%d%d%d%d%d", &n, &h, &a, &b, &q); 16 } 17 18 inline void solve() { 19 while(q--){ 20 int x1, y1, x2, y2; 21 scanf("%d%d%d%d", &x1, &y1, &x2, &y2); 22 if(y1 > y2) 23 swap(y1, y2); 24 if (x1 == x2) { 25 printf("%d\n", abs(y1 - y2)); 26 } else { 27 int ans = abs(x1 - x2); 28 if (y1 <= b && y2 >= a) { 29 ans += abs(y1 - y2); 30 }else{ 31 ans += min(abs(y1 - a) + abs(y2 - a), abs(y1 - b) + abs(y2 - b)); 32 } 33 printf("%d\n", ans); 34 } 35 } 36 } 37 38 int main(){ 39 init(); 40 solve(); 41 return 0; 42 }