2018 吉林 ccpc Lovers hdu6562

2023-10-19 12:40
文章标签 2018 lovers 吉林 ccpc hdu6562

本文主要是介绍2018 吉林 ccpc Lovers hdu6562,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

题意:维护n个串(也可以是说是大数)    一开始为空 (不是0 )

操作1    upsum  l r x     l到r串每个串的左右都放上x 

操作2    区间求和

 

mod除了除法要用逆元以外  几乎可以任意使用  这题甚至截取一段数字使用mod  

比赛的时候就是因为不知道可以这样mod  甚至想用大数  

因为标记是有先后顺序的  比赛的时候想开个vector来存标记  但是不太现实

可以将标记放到不同数位上  这样不仅方便了接下来的操作 并且维护了标记的顺序关系

 

 collen表示懒标记长度 len表示t值的长度   左右懒标记是镜像的  方便维护  左懒标记放左边  右懒标记放右边  

注意down 和sum的细节

#include<bits/stdc++.h>
using namespace std;
//input by bxd
#define rep(i,a,b) for(ll i=(a);i<=(b);i++)
#define repp(i,a,b) for(ll i=(a);i>=(b);--i)
#define RI(n) scanf("%d",&(n))
#define RII(n,m) scanf("%d%d",&n,&m)
#define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define RS(s) scanf("%s",s)
#define ll long long
#define see(x) (cerr<<(#x)<<'='<<(x)<<endl)
#define pb push_back
#define lson l,m,pos<<1
#define rson m+1,r,pos<<1|1
#define inf 0x3f3f3f3f
#define CLR(A,v)  memset(A,v,sizeof A)
typedef pair<ll,ll>pii;
//
const ll N=2e6+10;
const ll mod=1e9+7;
ll t[N<<2],len[N<<2],col1[N<<2],col2[N<<2],collen[N<<2];void up(ll pos)
{t[pos]=(t[pos<<1]+t[pos<<1|1])%mod;len[pos]=(len[pos<<1]+len[pos<<1|1])%mod;
}
void build(ll l,ll r,ll pos)
{t[pos]=col1[pos]=col2[pos]=0;collen[pos]=1;if(l==r){len[pos]=1;return;} ll m=(l+r)>>1;build(lson);build(rson);up(pos);
}
void down(ll m,ll pos)
{if(collen[pos]>1){col1[pos<<1]=(col1[pos]*collen[pos<<1]%mod+col1[pos<<1])%mod;col1[pos<<1|1]=(col1[pos]*collen[pos<<1|1]%mod+col1[pos<<1|1])%mod;col2[pos<<1]=(col2[pos]+collen[pos]*col2[pos<<1]%mod)%mod;col2[pos<<1|1]=(col2[pos]+collen[pos]*col2[pos<<1|1]%mod)%mod;t[pos<<1]=( t[pos<<1]*collen[pos]%mod+col2[pos]*(m-(m>>1))%mod +col1[pos]*len[pos<<1]%mod*collen[pos]%mod  ) %mod;t[pos<<1|1]=( t[pos<<1|1]*collen[pos]%mod+col2[pos]*(m>>1)%mod +col1[pos]*len[pos<<1|1]%mod*collen[pos]%mod  ) %mod;len[pos<<1]=(len[pos<<1]*collen[pos]%mod*collen[pos])%mod;len[pos<<1|1]=(len[pos<<1|1]*collen[pos]%mod*collen[pos])%mod;collen[pos<<1]=(collen[pos<<1]*collen[pos])%mod;collen[pos<<1|1]=(collen[pos<<1|1]*collen[pos])%mod;col1[pos]=0;col2[pos]=0;collen[pos]=1;}
}void upsum(ll L,ll R,ll v,ll l,ll r,ll pos)
{if(L<=l&&r<=R){t[pos]=(t[pos]*10%mod+v*(r-l+1)%mod+len[pos]*10*v%mod )%mod;len[pos]=len[pos]*100%mod;col1[pos]=(col1[pos]+v*collen[pos]%mod)%mod;col2[pos]=(col2[pos]*10%mod+v)%mod;collen[pos]=collen[pos]*10%mod;down(r-l+1,pos);return ;}down(r-l+1,pos);ll m=(l+r)>>1;if(L<=m)upsum(L,R,v,lson);if(R>m)upsum(L,R,v,rson);up(pos);
}
ll qsum(ll L,ll R,ll l,ll r,ll pos)
{ll ans=0;if(L<=l&&r<=R)return t[pos]%mod;down(r-l+1,pos);ll m=(l+r)>>1;if(L<=m)ans=(ans+qsum(L,R,lson))%mod ;if(R>m)ans=(ans+qsum(L,R,rson))%mod;return ans;
}ll n,m;
char s[10];
ll c,a,b;
int main()
{ll cas;cin>>cas;int kase=0;while(cas--){printf("Case %d:\n",++kase);cin>>n>>m;build(1,n,1);while(m--){RS(s);if(s[0]=='w')scanf("%lld%lld%lld",&a,&b,&c),upsum(a,b,c,1,n,1);else scanf("%lld%lld",&a,&b),printf("%lld\n",qsum(a,b,1,n,1)%mod);}}return 0;
}
View Code

 

转载于:https://www.cnblogs.com/bxd123/p/11197668.html

这篇关于2018 吉林 ccpc Lovers hdu6562的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/239867

相关文章

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

2018秋招C/C++面试题总结

博主从8月中旬开始大大小小面试了十几家公司,至今也许是告一段落吧,希望后面会有好结果,因此总结记录一些C/C++方向常见的问题。和大家一起学习! 参考了互联网的各种资源,自己尝试归类整理,谢谢~ 一、C和C++的区别是什么? C是面向过程的语言,C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。 C中函数不能进行重载,C++函数可以重载 C++在C的基础上增添类,C是一个结构

大厂算法例题解之网易2018秋招笔试真题 (未完)

1、字符串碎片 【题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac” 是由下面碎片组成的:‘aaa’,‘bb’,‘c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的 平均长度是多少。 输入描述: 输入包括一个字符串 s,字符串 s 的长度 length(1 ≤ length ≤ 50),s 只含小写字母(‘a’-‘z’) 输出描述

2023 CCPC(秦皇岛)现场(第二届环球杯.第 2 阶段:秦皇岛)部分题解

所有题目链接:Dashboard - The 2023 CCPC (Qinhuangdao) Onsite (The 2nd Universal Cup. Stage 9: Qinhuangdao) - Codeforces 中文题面: contest-37054-zh.pdf (codeforces.com) G. Path 链接: Problem - G - Codeforces

vulhub GhostScript 沙箱绕过(CVE-2018-16509)

1.执行以下命令启动靶场环境并在浏览器访问 cd vulhub/ghostscript/CVE-2018-16509 #进入漏洞环境所在目录   docker-compose up -d #启动靶场   docker ps #查看容器信息 2.访问网页 3.下载包含payload的png文件 vulhub/ghostscript/CVE-2018-16509/poc.png at

Python JAVA接口UTC 时间 '2018-08-06T10:00:00.000Z' 格式转化为本地时间

Python JAVA接口UTC 时间 '2018-08-06T10:00:00.000Z' 格式转化为本地时间 方法1 import datetimeorigin_date_str= "2019-07-26T08:20:54Z"utc_date = datetime.datetime.strptime(origin_date_str, "%Y-%m-%dT%H:%M:%SZ")loca

2018年年终体会~

说下最近的一件事情:2018年12月08日华为云培训云原生课程,我坚持了两周,中间休假了,回来就忘记了。错过了一天的打开。这次21天的云原生课程彻底失败。反思后,不是我不想学习,也不是我没有毅力,而是人总是容器在平凡中失去自己,失去自己的目标,就像《千与千寻》中一样,慢慢的生活磨砺自己,慢慢的平淡消耗你自己,你自己都忘记了,自己是为了什么,每年都会给自己立flag,可是很难坚持下去,就

2018Java高级工程师面试总结

2018Java高级工程师面试总结 java高级 2018-10-11 15:11:42 面试的岗位是Java后台开发,面的公司不多,主要有美团点评-网易-网易有道-携程-华为-中兴-科大讯飞-烽火通信这些公司。从前到后简单记录了自己面试时候遇到的问题,以及对面试给了一点点小的建议,给明年甚至以后的师弟师妹们一些参考。欢迎各位朋友一起交流。 关注我:私信回复“架构资料”获取往期Java高级架

NLP-预训练模型-2018:Bert字典

参考资料: 我的BERT!改改字典,让BERT安全提速不掉分(已开源)

2018中国金融科技竞争力100强榜单

2018--金融科技--榜单  2018--金融科技--评价标准   参考地址:https://biz.ifeng.com/a/20180630/45044607_0.shtml