首页 > 其他分享 >题解 CF1501A 【Alexey and Train】

题解 CF1501A 【Alexey and Train】

时间:2023-07-25 12:46:27浏览次数:40  
标签:int 题解 ceil Alexey Train ex now 110

posted on 2021-03-13 21:57:02 | under 题解 | source

简单模拟题,考验选手的读题能力和使用谷歌翻译的能力

先定义一个 \(now=0\),我们最后算出来的结果为 \(now\)。对于每个站(不包括第 \(n\) 站),我们需要加上 \(3\) 个部分:

  1. 额外时间,now+=ex[i]
  2. 第 \(i-1\) 站到第 \(i\) 站的时间,now+=a[i]-b[i-1]
  3. 在每一站待的时间,now+=ceil(b[i]-a[i],2),注意为了防止精度误差我们选择手写ceil
int ceil(int a,int b){
	return a/b+(a%b!=0);
}

只有这些是不够的。还需要加一个特判,如果加完上面这些东西火车还没出发,要一直等到火车出发才能去下一站,if(now<b[i]) now=b[i]

最后,我们还要算上最后一站的时间,now+=ex[n],now+=a[n]-b[n-1]

代码:

#include <cstdio>
using namespace std;
int a[110],b[110],ex[110],n;
int ceil(int a,int b){
    return a/b+(a%b!=0);
}
int mian(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d%d",a+i,b+i);
    for(int i=1;i<=n;i++) scanf("%d",ex+i);
    long long now=0;//保险起见开个ll
    for(int i=1;i<=n-1;i++){
        now+=ex[i];
        now+=a[i]-b[i-1];
        now+=ceil(b[i]-a[i],2);
        if(now<b[i]) now=b[i];
    }
    printf("%lld\n",now+ex[n]+a[n]-b[n-1]);
    return 0;
}
int main(int T,char**){
    for(scanf("%d",&T);T--;mian());
    return 0;
}

标签:int,题解,ceil,Alexey,Train,ex,now,110
From: https://www.cnblogs.com/caijianhong/p/Solution-cf1501a.html

相关文章

  • 题解 CF1501B 【Napoleon Cake】
    postedon2021-03-1617:42:06|under题解|source题目可以转化一下:给一个长为\(n\)的数组\(a\),请求出一个长为\(n\)的数组\(b\)。要求若\(a_i\)不为\(0\),则\([b_{i-a_i+1},b_i]\)这个区间要为\(1\)。知道这个题目意思就好办了。题目说\(n\leq2\times10^5\),......
  • 题解 CF1497C2 【k-LCM (hard version)】
    postedon2021-03-2009:09:40|under题解|source2023编者注:有一些链接点不进去,分别是cf1497c1的cf页面和https://www.cnblogs.com/caijianhong/p/Solution-cf1497c1.html此题与CF1497C1有异曲同工之妙。我们知道,\(\operatorname{lcm}(1,x)=x\),不难想到,\(\operato......
  • 题解 CF1497C1 【k-LCM (easy version)】
    postedon2021-03-2008:26:53|under题解|source看数据范围,\(1\leqT\leq10^4\),\(1\leqn\leq10^9\),显然是构造题。我们分三类讨论:\(n\bmod2=1\):显然可以先提出一个\(1\),再把\(n-1\)分成两半,\(\operatorname{lcm}(1,\frac{n-1}{2},\frac{n-1}{2})=\frac{n-1}{2}\le......
  • 题解 P7679 【[COCI2008-2009#5] JABUKA】
    postedon2021-07-0717:38:14|under题解|source设题目中分给每个朋友的苹果数为\(x\),显然有\(x\vertr\landx\vertg\),也就是\(x\vert\gcd(r,g)\)。我们都知道,如果\(a\timesb=c\),那\(a\)和\(b\)都是\(c\)的因数,也就是说因数都是成对出现的(注意特判完全平方......
  • 题解 P2229 【[HNOI2002]沙漠寻宝】
    postedon2021-06-0112:15:15|under题解|source这题一看就知道是个模拟。做模拟题的时候,一定要先确保你的程序能跑出正确的结果,再去想优化时间。这道题还是很简单的,让我们开始吧:读入我们把输入离线,拿string存起来。如果不离线,那loop就会很难处理,加大难度。intn;......
  • 题解 P2903 【[USACO08MAR]The Loathesome Hay Baler S】
    postedon2021-05-0320:50:49|under题解|source首先输入,记录一下哪个齿轮的位置在\((0,0)\),哪个在\((x_t,y_t)\)。接着,为了避免多次判断两个齿轮相切而超时,我们可以预处理一个\(link_{i,j}\),表示第\(i\)个齿轮是否和第\(j\)个齿轮相切。这部分直接\(O(n^2)\)暴......
  • 题解 P1538 【迎春舞会之数字舞蹈】
    postedon2021-06-0113:24:05|under题解|source给\(0\cdots9\)每个数字打表,打它在相应的位置有没有一划。然后把每个数字分成\(5\)部分,暴力输出即可。#include<cstdio>#include<cstring>usingnamespacestd;constchar*db[]={"-||||-","||"......
  • 【大联盟】20230714 T1 三分网络(tri) 题解 CF1666K 【Kingdom Partition】
    题目描述here。题解赛时得分:\(30/30\),想了很久网络流最后不会。感觉这题就纯纯对脑洞,因为把题目中的\(2\)改成\(3\)就做不了)))不过还是相当有意思的。考虑如下建模方式:首先,考虑最小割。对于每个点\(i\),我们用两个点\(x_{i}\),\(y_i\)来表示。\(x_i\)表示\(i\)号点是......
  • 题解 [SDOI2009] HH的项链
    题目链接对于这类问区间不同数的总数,显然是不能用线段树直接维护的,毕竟不符合区间区间可加性。考虑对于一个右端点固定的询问,哪些数字实际上是有权值的。比如区间1332312,显然,实际上对于相同的数字,只有一个是有权值的,其他权值均为\(0\)。但是这样还是无法起到简化的作用......
  • 题解 链表 (chain)
    题目链接首先考虑没有修改怎么做。两种做法。想到询问的形式为保留\(\gek\)的连通块个数,那么先将全部数字按照权值排序,然后从后往前做一遍并查集,并同时统计连通块的数量,在询问时只需二分找到第一个\(\gek\)的位置,将这个位置的答案输出即可。注意考虑答案为\(0\)的情况......