[codeforces] 498D Traffic Jams in th Land
原题
简单的线段树问题。
对于题目中,a[i]的范围是26,我们仔细思考可以得出第0秒和第60秒是一样的(因为26的最小公倍数是60,),然后我们可以建一个线段树,里面记录0~59秒时刻开始通过这段所需要的时间。(如果一定要说这是60棵线段树也不是不可以……)
#include<cstdio>
#define N 100010
using namespace std;
int n,a[N],q,x,y;
char j;
struct hhh
{
int l,r,dt[65];
}tre[N*4];
int read()
{
int ans=0,fu=1;
char j=getchar();
for (;(j<'0' || j>'9') && j!='-';j=getchar()) ;
if (j=='-') fu=-1;
for (;j>='0' && j<='9';j=getchar()) ans*=10,ans+=j-'0';
return ans*fu;
}
void build(int i,int l,int r)
{
tre[i].l=l;
tre[i].r=r;
if (l==r)
{
for (int t=0;t<60;t++)
if (!t || t%a[l]==0) tre[i].dt[t]=2;
else tre[i].dt[t]=1;
return ;
}
int mid=(l+r)>>1;
build(i*2,l,mid);
build(i*2+1,mid+1,r);
for (int t=0;t<60;t++)
tre[i].dt[t]=tre[i*2].dt[t]+tre[i*2+1].dt[(t+tre[i*2].dt[t])%60];
}
void modify(int i,int x)
{
if (tre[i].l==tre[i].r && x==tre[i].l)
{
for (int t=0;t<60;t++)
if (t%a[x]==0) tre[i].dt[t]=2;
else tre[i].dt[t]=1;
return ;
}
int mid=(tre[i].l+tre[i].r)>>1;
if (x<=mid) modify(i*2,x);
else modify(i*2+1,x);
for (int t=0;t<60;t++)
tre[i].dt[t]=tre[i*2].dt[t]+tre[i*2+1].dt[(t+tre[i*2].dt[t])%60];
}
int query(int i,int l,int r,int t)
{
if (tre[i].l==l && tre[i].r==r) return tre[i].dt[t%60];
int mid=(tre[i].l+tre[i].r)>>1;
if (r<=mid) return query(i*2,l,r,t);
if (l>mid) return query(i*2+1,l,r,t);
else
{
int p=query(i*2,l,mid,t);
p+=query(i*2+1,mid+1,r,(t+p)%60);
return p;
}
}
int main()
{
n=read();
for (int i=1;i<=n;i++) a[i]=read();
build(1,1,n);
q=read();
while (q--)
{
j=getchar();
x=read();
y=read();
if (j=='C') a[x]=y,modify(1,x);
else printf("%d\n",query(1,x,y-1,0));
}
return 0;
}
[codeforces] 498D Traffic Jams in th Land的更多相关文章
- Codeforces 498D Traffic Jams in the Land | 线段树
题目大意: 给坐标轴1~n的点,每个点有一个权值,从一个点走到下一个点需要1s,如果当前时间是权值的倍数就要多花1s 给出q组操作,C表示单点修改权值,A表示询问0时刻x出发到y的时间 题解:因为权值 ...
- CF498D:Traffic Jams in the Land——题解
https://vjudge.net/problem/CodeForces-498D http://codeforces.com/problemset/problem/498/D 题面描述: 一些国家 ...
- CF #284 div1 D. Traffic Jams in the Land 线段树
大意是有n段路,每一段路有个值a,通过每一端路需要1s,如果通过这一段路时刻t为a的倍数,则需要等待1s再走,也就是需要2s通过. 比较头疼的就是相邻两个数之间会因为数字不同制约,一开始想a的范围是2 ...
- CF498D Traffic Jams in the Land
嘟嘟嘟 题面:有n条公路一次连接着n + 1个城市,每一条公路有一个堵塞时刻a[i],如果当前时间能被a[i]整除,那么通过这条公路需要2分钟:否则需要1分钟. 现给出n条公路的a[i],以及m次操作 ...
- 【Codeforces #312 div2 A】Lala Land and Apple Trees
# [Codeforces #312 div2 A]Lala Land and Apple Trees 首先,此题的大意是在一条坐标轴上,有\(n\)个点,每个点的权值为\(a_{i}\),第一次从原 ...
- CF数据结构练习
1. CF 438D The Child and Sequence 大意: n元素序列, m个操作: 1,询问区间和. 2,区间对m取模. 3,单点修改 维护最大值, 取模时暴力对所有>m的数取 ...
- Codeforces Round #284 (Div. 1)
A. Crazy Town 这一题只需要考虑是否经过所给的线,如果起点和终点都在其中一条线的一侧,那么很明显从起点走点终点是不需要穿过这条线的,否则则一定要经过这条线,并且步数+1.用叉积判断即可. ...
- HDU 3686 Traffic Real Time Query System(双连通分量缩点+LCA)(2010 Asia Hangzhou Regional Contest)
Problem Description City C is really a nightmare of all drivers for its traffic jams. To solve the t ...
- Gym 100507I Traffic Jam in Flower Town (模拟)
Traffic Jam in Flower Town 题目链接: http://acm.hust.edu.cn/vjudge/contest/126546#problem/I Description ...
随机推荐
- python导包学习总结
python初学者,对于导包纠结了不少时间,总结分享,持续前进~ Python导包的两种方法: 1.1 from 包.模块 import 方法名,调用时直接使用方法名() 1.2 from 包. ...
- JDK及配置
Java Jdk开发时环境,程序员使用 Jre运行时环境,用户使用 Jdk的配置 1.新建java_home jdk的安装路径 例:C:\Program Files (x86)\Java\jdk1 ...
- Android 用Chrome浏览器打开url 自定义样式
1.效果预览 1.1.真实效果就是从某一个APP,打开一个url,跳转到谷歌浏览器,返回之后,又回到之前的APP 1.2.说明一下条件 1.手机上必须要安装谷歌浏览器 2.手机上的默认浏览器 ...
- 05,Python网络爬虫之三种数据解析方式
回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据 ...
- 3437: 小P的牧场
3437: 小P的牧场 思路 斜率优化. dp[i]表示到第i个点(第i个点按控制台)的最小代价. 代码 #include<cstdio> #include<iostream> ...
- 通俗版解释网关,IP地址,ARP欺骗,DDOS攻击
计算机主机网关的作用是什么? 假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关.当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声 ...
- PKUWC 2018 彻底滚粗记
PKUWC 2018 彻底滚粗记 如果你们有看到我又在颓, 请以这篇文章让我回忆起这不堪回首的往事. day -3 据说我们要参加PKUWC? 谢总要求我们练习面试,写个稿子. 不知道为什么,有一种不 ...
- static关键字什么意思?Java中是否可以覆盖一个private或者是static的方法?
答案:“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问.Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译 ...
- javascript md5 二次加密 和 java md5 二次加密结果不同
最近研究httpclient post 时遇到了一个问题,很费解. js md5(str) 和 java md5(str),第一次md5 加密结果一样,(当时忽略了大小写问题,java 大写,js小 ...
- python consumer producer
from threading import Thread, Lock import time import random queue = [] lock = Lock() class Producer ...