[codeforces] 498D Traffic Jams in th Land
2024-10-21 16:31:51
原题
简单的线段树问题。
对于题目中,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;
}
最新文章
- 【Data Cluster】真机环境下MySQL数据库集群搭建
- 吉日嘎拉C#快速开发平台V4.0到V4.2升级记
- 一键安装lamp环境 centos
- css 去除点击之后的虚线
- OpenJudge 666:放苹果 // 瞎基本DP
- 【poj2114】 Boatherds
- ubuntu 设置 NAT 转发
- sql查询当前月内的所有日期
- 使用dnspod进行简单的HTTP dns解析(防劫持)
- Mongodb 设置密码
- STM32驱动TEA5767收音机模块
- git添加本地的项目到git远程管理仓库
- TCP/IP协议--TCP协议概括和TCP连接的建立和终止
- Excel:LOOKUP函数的经典用法
- python函数式编程——偏函数
- JavaBasic_09
- Tomcat8源码编译及导入Eclipse中研究
- 20155227《网络对抗》Exp4 恶意代码分析
- Repeater嵌套绑定Repeater以及内层调用外层数据
- spring配置数据库连接池druid