Solution P11891 [XRCOI Round 1] B. 稻花香里说丰年

news/2025/3/15 21:02:38/文章来源:https://www.cnblogs.com/unigravity/p/18774178

一种思维难度小但比难写的做法。

考虑钦定一段区间然后统计区间被算多少次。发现 \([l,r]\) 一共会被算 \(2^{l-2}2^{n-r-1}\) 次。注意这里把 \(2^{-1}\) 看作 \(1\)

首先考虑如何算出 \(A(l,r)\),考虑 \(c_{i,k}\) 表示 \(\sum_{j=1}^i[a_j=k]\),然后记 \(s_i\) 表示 \(\sum_{j=1}^i[a_j=1]c_{j,0}\),即 \(s_i=A(1,i)\)

\(A(l,r)=s_r-s_{l-1}-(c_{r,1}-c_{l-1,1})c_{l-1,0}\),代表把 \(s_i\) 中多出的 \(c_{l-1,0}\) 扣出去。

那么区间 \([l,r]\) 只算 \(A\) 的答案即为 \(2^{l-2}2^{n-r-1}(t_r-t_{l-1})[s_r-s_{l-1}-(c_{r,1}-c_{l-1,1})c_{l-1,0}]\)。这里 \(t_i=\sum_{j=1}^i[a_j=b_j]\)。发现贡献对于 \(l,r\) 是独立的,因此可以通过前缀和 \(O(1)\) 统计。\(B\) 的做法和 \(A\) 一样。

难写的地方是要对拆开上面的式子然后每一项分别前缀和。同时这个做法常数比较大,卡常的方法是把相同的几项并在一起并且 \(A,B\) 一起做。时间复杂度 \(O(n)\)

const int N=50000005,P=1000000007;
int n,a[N],b[N];ll ans=0;
ll pwn,i2;
il ll fpow(ll x,ll n){ll a=1;while(n){if(n&1)a=a*x%P;x=x*x%P,n>>=1;}return a;}
il void addto(ll &x,ll y){x+=y;if(x>=P)x-=P;}
il void delto(ll &x,ll y){x-=y;if(x<0)x+=P;}il void solve(){ll s1=0,s2=0,s3=0,s4=0,s5=0,s6=0,s7=0,s8=0,t=0,s=0,c0=0,c1=0,c2=0,c3=0,res,pw1=1,pw2=pwn;forto(i,1,n){addto(s1,pw1);addto(s2,pw1*c0%P);addto(s3,pw1*c2%P);addto(s4,pw1*(c1*c0%P+c3*c2%P-s+P)%P);addto(s5,pw1*t%P);addto(s6,pw1*t%P*c0%P);addto(s7,pw1*t%P*c2%P);addto(s8,pw1*t%P*(c1*c0%P+c3*c2%P-s+P)%P);t+=(a[i]!=b[i]);if(a[i])addto(s,c0),c1++;else c0++;if(!b[i])addto(s,c2),c3++;else c2++;res=0;addto(res,s1*t%P*s%P);delto(res,s2*t%P*c1%P);delto(res,s3*t%P*c3%P);addto(res,s4*t%P);delto(res,s5*s%P);addto(res,s6*c1%P);addto(res,s7*c3%P);delto(res,s8);addto(ans,res*pw2%P);if(i>1)pw1=2*pw1%P;if(i<n-1)pw2=i2*pw2%P;}
}unsigned ll f[800005];
il void init(int a[]){unsigned ll x=read(),y=read(),z=read();f[1]=read(),f[2]=read();forto(i,3,(n-1)/64+3)f[i]=f[i-2]*x+f[i-1]*y+z;forto(i,1,n)a[i]=(f[(i-1)/64+3]>>((i-1)%64))&1;
}signed main(){n=read();int op=read();pwn=1;forto(i,1,n-2)pwn=2*pwn%P;i2=fpow(2,P-2);if(!op)forto(i,1,n)a[i]=read(),b[i]=read();else init(a),init(b);solve();printf("%lld\n",ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/899378.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android开发--Lesson01--页面布局

一.View视图 在Android开发中所有的UI元素都是由View和ViewGroup构建而成的。ViewGroup作为一个容器既可以装载View视图空间,同时也可装载ViewGroup。即一种布局可以嵌套另一种布局。二.ViewGroup RelativeLayout RelativeLayout是Android中一种非常灵活的布局方式,它允许子…

第十八届全国大学生信息安全竞赛暨第二届“长城杯”铁人三项赛web方向部分wp

第十八届全国大学生信息安全竞赛暨第二届“长城杯”铁人三项赛web方向部分wp hello_web查看源代码发现有两个文件,访问一下Tips是phpinfo 里面可以看到disable_functions hackme.php中$lapUCm=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%…

使用WLAN接口将温度和相对湿度发送到家庭网络web服务器

在本文中,我想利用WLAN接口,为家庭网络中的web服务器提供温度和相对湿度。但是,我将使用物有所值的DHT20传感器和带有SH1106驱动IC的1.3英寸OLED,以尽量减少重复。 但首先是树莓派Pico W的引脚图,以及树莓派Pico和Pico W的区别:虽然外形尺寸和引脚(很大程度上)保持不变,…

【水】洛谷 P3913 (待续)

今天NaN在刷水题时碰到这么一道题:洛谷P3913 https://www.luogu.com.cn/problem/P3913 代码的思路特别简单:用全部格子数 - 没被車侵占的行数 \(\times\) 列数即可. code void solve() {cin >> n >> k;g = h = n;for (ll i = 1; i <= k; i++){cin >> x …

web77笔记(POST+FFI)

web77 命令执行最后一题,php7.4 FFI,php7.4以上才有 https://www.php.net/manual/zh/ffi.cdef.php https://www.php.cn/php-weizijiaocheng-415807.html $ffi = FFI::cdef("int system(const char *command);");//创建一个system对象 $a=/readflag > 1.txt;//没…

day:22 python函数——介绍及自定义函数运用

一.函数的定义 函数是组织好,可以重复使用,用来实现单一,或者关联功能的代码段 二.pycharm中运用的结构三.函数的优点? a.降低代码的冗余 b.增加代码的复用性,提高开发效率 c.提高程序的拓展性 d.把代码片段放在函数当中 四.定义函数 (1)自定义函数 (一)自定义函数 a.函数格式…

英语单词音标重读符号读法作用

比如explicit,重读的是`后面的第一个元音即i

量子网络操作系统 QNodeOS 资料收集

2025年3月14日,通过科技日报的报道知道了这个量子计算领域的重大突破 —— 全球首个量子网络操作系统 QNodeOS 问世。欧洲的量子互联网联盟(QIA)的研究人员2025年3月12日在《自然》(Nature)杂志上发表了论文 An operating system for executing applications on quantum n…

Typora的基本的一些使用用法

markdown 标题 二级标题 (在最前面两个#号加空格) 三级标题 (在最前面三个#号加空格) 字体 Hello,World!(粗体:两边各两个星号) Hello,World!(斜体:两边各一个星号) Hello,World!(粗体加斜体:两边各三个星号) Hello,World!(删除体:两边各两个波浪号) 引用(大于加…

http--nodejs原生web服务

创建http服务const http = require(node:http) const url = require(node:url)http.createServer((req, res) => {}).listen(98, () => {console.log(server is running on port 98) }) 区分请求方法 例如常见的 POST、GET req表示前端的入参(请求参数)。 res 表示后…

Windows server 中 静默安装SQL SERVER 数据库 命令 参数

这篇文章记录一下自己如何在Windows Server Core上安装和配置SQL Server。 安装之前的检查 安装SQL Server的操作系统要求检查 第一件事是需要仔细检查SQL Server的要求文档,这个文档里详细的列出了目前SQL Server支持的操作系统版本,最重要的一条就是检查当你在使用云上的虚…

(3).工厂方法模式

我们接上一个模式的实例: (1).创建水果接口 IFruit:1 namespace 工厂方法模式2 {3 public interface IFruit4 {5 /// <summary>6 /// 水果的单价7 /// </summary>8 double Amount { get; }9 10 11 /// <s…