2020牛客多校第八场E-Enigmatic Partition(隔项差分)
Description
Solution
- 由题意
∴n=a1∗b1+a2∗b2+a3∗b3_\therefore\,\,n=a_1*b_1+a_2*b_2+a_3*b_3∴n=a1∗b1+a2∗b2+a3∗b3
∵a1+2=a2+1=a3_\because\,\,a_1+2=a_2+1=a_3∵a1+2=a2+1=a3
∴n=a1∗(b1+b2+b3)+b2+b3∗2=a∗m+b2+b3∗2_\therefore\,\,n=a_1*(b_1+b_2+b_3)+b_2+b_3*2=a*m+b_2+b_3*2∴n=a1∗(b1+b2+b3)+b2+b3∗2=a∗m+b2+b3∗2
以a=1,m=7a=1,m=7a=1,m=7为例
nnn | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
5个3 | 1233333 | |||||||||||
4个3 | 1123333 | 1223333 | ||||||||||
3个3 | 1112333 | 1122333 | 1222333 | |||||||||
2个3 | 1111233 | 1112233 | 1122233 | 1222233 | ||||||||
1个3 | 1111123 | 1111223 | 1112223 | 1122223 | 1222223 | |||||||
numnumnum | 1 | 1 | 2 | 2 | 3 | 2 | 2 | 1 | 1 | 0 | 0 | 0 |
差分序列 | 1 | 0 | 1 | 0 | 1 | -1 | 0 | -1 | 0 | -1 | 0 | 0 |
隔项差分 | 1 | 0 | 0 | 0 | 0 | -1 | -1 | 0 | 0 | 0 | 0 | 1 |
对应位置 | am+3 | 0 | 0 | 0 | 0 | (a+1)m+1 | (a+1)m+2 | 0 | 0 | 0 | 0 | (a+2)m |
- 所以我们只用在对应位置上加减,最后再还原为原序列即为f(n)f(n)f(n)
- 数据范围允许我们预处理出f(n)f(n)f(n)的前缀和,O(1)O(1)O(1)查询
Details
- (a+2)∗m(a+2)*m(a+2)∗m等项处理时可能超出NNN,适当扩大内存
- 为避免判a≤Nma\leq \frac{N}{m}a≤mN时整除与否带来的问题,我们把a∗ma*ma∗m合在一起处理,即
for(a=m;a<N;a+=m)
Code
#include <cstdio>
#include <cstring>
#define ll long long
const int N=1e5+10;
ll T,cas,l,r,s[N<<1],f[N<<2];
int main()
{register int i,m,a;for(m=3;m<N;++m)for(a=m;a<N;a+=m) ++f[a+3],++f[a+2*m],--f[a+m+1],--f[a+m+2];for(i=3;i<N;++i) f[i]+=f[i-2];for(i=1;i<N;++i) f[i]+=f[i-1];for(i=1;i<N;++i) s[i]=s[i-1]+f[i];scanf("%lld",&T);while(T--) scanf("%lld%lld",&l,&r),printf("Case #%d: %lld\n",++cas,s[r]-s[l-1]);
}
Summary
kuangbinkuangbinkuangbin的题总是很考验思维,想清楚了就是签到题
2020牛客多校第八场E-Enigmatic Partition(隔项差分)相关推荐
- 2021牛客多校第八场补题 D-OR
链接:https://ac.nowcoder.com/acm/contest/11259/D 来源:牛客网 题目描述 There are two sequences of length n−1n-1n ...
- 2020牛客多校第1场H-Minimum-cost Flow
解题思路: 首先我们要从费用流mcmf的算法入手:因为它每次增广是再费用增广路上跑的,根据贪心的思想费用小的路基本上能运多少就尽量运多少,所以我们可以假设初始的边容量是1,只跑一遍mcmf.记录一下每 ...
- 数论分块 ---- 2020牛客多校第7场H-Dividing[思维+数论分块]
题目大意: 解题思路:很明显满足条件的点是n%k==0∣∣n%k==1n\%k==0||n\%k==1n%k==0∣∣n%k==1 1.因为nnn是从111开始的如果一直乘以k[n=n∗k]k[n=n ...
- 2020牛客多校第7场C-A National Pandemic[树链剖分+思维]
题目大意 1.首先我们看一下操作1:实际上可以说成在所有位置上加上w−dist(x,y)w-dist(x,y)w−dist(x,y),因为dist(x,x)=0dist(x,x)=0dist(x,x) ...
- 2020牛客多校第5场B-Graph完全图异或最小生成树
因为这里边是可以任意加的但是要保证联通性所有这里可以看成一个完全图,每条边的权值=a[u]^a[v] 1.那么我们可以将每个点的权值sort一遍,将每个a[i],从高位到低位,按照最高位的1出现的顺序 ...
- 2020牛客多校第3场:Two Matchings[找规律+dp]
题目链接 解题思路:这题规律......无语: #include <iostream> #include <cstdio> #include <stack> #in ...
- 2020牛客多校第3场:[Points Construction Problem + 思维题+构造]
题目链接 题目大意:就是给你n个边长为1的正方形,要求用这些正方形拼成周长为m的图形,并输出这些正方形的坐标,如果没有输出No 首先如果这些正方形都零散分布那么周长就是4∗n4*n4∗n,如果将这些正 ...
- 2020牛客多校第三场[C Operation Love+基础计算几何 判断多边形顺逆时针]
题目链接 题目大意:就是给你两个左右手的模型,下面给出这两只手通过平移变换之后坐标问你这只手是左手还是右手?[题目保证坐标是按照顺时针或者逆时针给出的] 解题思路:首先我们先观察一下这只右手:假如数据 ...
- 贪心 ---- 2020牛客多校第3场[Clam and Fish+贪心]
题目链接 解题思路:1.根据贪心的思想肯定是如果是第2或者第3种状态肯定是钓鱼且不需要鱼饵的,如果是在第0种状态有鱼饵肯定也钓鱼,对于第1种状态就是可以钓鱼也可以造鱼饵的状态我们如何考虑 2.我们从后 ...
最新文章
- java实验的技术问题及解决方法,2018-2019-2 20175313 实验一《Java开发环境的熟悉》实验报告...
- 自己编译redhat 9.0内核心得
- NET问答: 如何实现读写 file 的时候不用锁模式 ?
- 大数据之-Hadoop之HDFS_hadoop集群中的安全模式_操作案例---大数据之hadoop工作笔记0075
- java基础----java调用oracle存储过程(转)
- 优秀的Git客户端:Tower for mac
- 音频格式转换Java代码,以mp3转amr为例
- Winform自动升级系统的设计与实现(源码)
- 自我救赎,成就希望——小说《致加西亚的信》的读后感范文3400字
- 武科大计算机科学与技术教务处,欢迎访问武汉理工大学计算机科学与技术学院...
- 政府应用系统应用解决方案
- Kafka Consumer 消费逻辑
- 删除快照出现提示框:删除时出错 字典问题
- android获取设备的型号,Android获取手机设备信息
- 多线程 委托 匿名函数 拉姆达 事件
- 股票入门基础知识1:什么是股票和股份?
- log4cpp库的使用
- 003_JS实现图片轮播与点击播放
- JS中设计模式的深入理解
- 用Python做一个愿望清单,2020年计划让小美女来督促吧!