为什么是水题选做呢?因为我只会水题啊 (

  为什么是$Atcoder$呢?因为暑假学长来讲课的时候讲了三件事:不要用洛谷不要用dev-c++不要用单步调试。$bzoj$太难了,$Topcoder$整了好久没学会用,中国人要长期打$codeforces$那作息简直反人类,所以就选到$atcoder$啦.而且$AT$的英语感觉比较好懂,或许是因为都是亚洲人,思维比较同步?

  那么哪些题目会被放到这个地方呢?$ABC$的后两题,也就是$ARC$的前两题(如果同时举办的话).至于$ARC$的后两题以及$AGC$的题,以后可能会单开一篇来写吧.似乎每当$ABC$和$ARC$一起办的时候就稍微难一点,只办$ABC$的时候题就非常水.

  做了两套题后感觉有些$C$的思路还是比较妙的,最好评的是即使是$D$也不会有很高的代码难度。前段时间掉进了大数据结构&&实现麻烦的题目的大坑,现在发现自己的思维好差啊...以后要多做一点思维题.

  

  107 C:https://arc101.contest.atcoder.jp/tasks/arc101_a

  题意概述:数轴上放有$n$根蜡烛,初始时站在$0$坐标,移动的速度是一个定值,求最少用多少时间可以点亮$k$根蜡烛.

  尺取法+分类讨论,如果一段区间横跨$0$坐标,那就先走离$0$近的部分,再折回来点亮另一边的,如果与$0$没有公共部分,直接一次走过去即可.

  
 1 # include <cstdio>
 2 # include <iostream>
 3 # include <cstring>
 4 # include <string>
 5 # include <cmath>
 6 # include <algorithm>
 7 # define R register int
 8  
 9 using namespace std;
10  
11 const int maxn=100005;
12 int n,k,p1,p2,equ;
13 int cnt,a[maxn],ans;
14  
15 int ab (int x)
16 {
17     if(x<0) return -x;
18     return x;
19 }
20  
21 int ask (int x,int y)
22 {
23     if(x<0&&y<0) return -min(x,y);
24     if(x>0&&y>0) return max(x,y);
25     return ab(x)+ab(y)+min(ab(x),ab(y));
26 }
27  
28 int main()
29 {
30     scanf("%d%d",&n,&k);
31     for (R i=1;i<=n;++i)
32     {
33         scanf("%d",&a[i]);
34         if(a[i]<0) equ=i;
35     }
36     p1=p2=equ;
37     if(p2<k) p2=p1=k;
38     cnt=1;
39     while (cnt<k&&p1>1) p1--,cnt++;
40     if(cnt==k) ans=ask(a[p1],a[p2]);
41     while (p2<n)
42     {
43         p1++;
44         p2++;
45         ans=min(ask(a[p1],a[p2]),ans);
46     }
47     printf("%d",ans);
48     return 0;
107 C

相关文章:

  • 2021-07-18
  • 2022-12-23
  • 2022-12-23
  • 2021-11-20
  • 2021-07-16
  • 2021-05-29
  • 2022-01-12
  • 2022-01-20
猜你喜欢
  • 2021-06-30
  • 2022-12-23
  • 2022-12-23
  • 2022-01-28
  • 2021-08-05
  • 2021-05-15
  • 2021-08-28
相关资源
相似解决方案