hdu 5439 Aggregated Counting(找规律)

来源:互联网 发布:u盘数据恢复文件乱码 编辑:程序博客网 时间:2024/05/18 00:34

题目大意:

一个序列1、2、2、3、3、4、4、4、5、5、5……

第i项的数a[i]表示连续的i的个数,依次下去。

现给出n(n<=1e9),记最后出现n的位置为last[n],求last[last[n]]。


规律:last[last[n]]=a[1]+a[2]+……+a[last[n]]。比如last[3]=5,则last[last[3]]为序列的前5项的和,为11

知道了这个还不能算,因为n太大了。

再对上式进行归纳整理,可以得到:

last[last[n]]=1*1+(2+3)*2+(4+5)*3+……+(k+k+1+k+2+……+a[last[p-1]])*(p-1)+(a[last[p- 1]]+1+……+n)*p

其中每一个括号里面的数字构成等差序列,第i个括号里面的项数恰好是a[i](最后一个括号除外,最多只加到n),最后一项为a[last[i]]。


n最大可达到1e9,而p的最大值相对而言会小得多。

通过测试可以知道最大的p不会超过500000(事实上只有43万多一点)

那么,可以预处理出500000以内的序列a[i],last[i]。

以及前缀和ans[i]。

这里的ans[i]=1*1+(2+3)*2+(4+5)*3+……+(k+k+1+k+2+……+a[last[i])*i

对于每一个n,通过二分查找,找到p(其前面的括号项数刚好是a[i]的最大的p),即可马上得出答案。




#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;#define maxn 500000#define mod 1000000007typedef __int64 LL;int a[maxn],last[maxn],tot;LL ans[maxn];void init(){    int i;    a[1]=last[1]=1;    a[2]=2;    last[2]=3;    a[3]=2;    LL sum=3;    for(i=3;sum<1000000000;++i){        sum+=a[i];        last[i]=sum;        for(LL j=sum-a[i]+1;j<=min(sum,(LL)maxn);++j) a[j]=i;    }    tot=i-1;    ans[0]=0;    for(i=1;i<maxn;++i)        ans[i]=(ans[i-1]+(LL(i)*(last[i]-a[i]+1+last[i])%mod)*a[i]%mod*500000004%mod)%mod;}int Find(int n){    int l=1,r=tot,ans;    while(l<=r)    {        int m=(l+r)>>1;        if(last[m]<=n) {ans=m;l=m+1;}        else r=m-1;    }    return ans;}int main(){    init();    int T,n;    scanf("%d",&T);    while(T--)    {        scanf("%d",&n);        int p=Find(n);        LL res=ans[p];        if(last[p]<n) res=(res+LL(p+1)*(last[p]+1+n)%mod*(n-last[p])%mod*500000004)%mod;        printf("%I64d\n",res);    }    return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机上浏览器搜索时字在右边怎么办 酷比魔方平板开不开机怎么办 红米手机摔了有一角黑屏了怎么办 红米手机刷机黑屏打不开怎么办 魅蓝x一打电话就黑屏怎么办 红米手机黑屏打不开怎么办充电发烫 小米手机打电话来是关机的怎么办 红米手机打电话自动灭屏怎么办 红米5s手机白屏怎么办 红米手机黑屏开不了机怎么办 红米note开机键不灵了怎么办 红米2忘记锁屏密码怎么办 红米1手机忘记锁屏密码怎么办 红米4x关不了机怎么办 红米4a手机屏幕黑屏打不开怎么办 红米手机为什么开不了机怎么办 红米note手机刷机失败怎么办 金立手机来电屏幕不亮怎么办 小米5s桌面相机图标不见了怎么办 小米手机锁屏密码忘了怎么办? 小米平板电脑锁屏密码忘了怎么办 小米手机进水了黑屏了嗡嗡响怎么办 华为诺娃2手机声音小怎么办 华为平板锁屏密码忘记了怎么办 华为麦芒6手机按键摔坏了怎么办 定频空调加错了佛里昂怎么办 定频空调外机噪音大怎么办 老美的定频空调出现p0怎么办 华为揽阅m2青春版卡顿了怎么办 华为揽阅M2青春版发热卡顿怎么办 全民突击网速不给力经常掉线怎么办 华为手机微信视频黑屏了怎么办 相机拍照后找不到拍的照片怎么办 苹果手机下载软件不被信任怎么办 苹果x手机下载软件不受信任怎么办 华为畅享7plus主板坏了怎么办 华为手机手机主板坏了没备份怎么办 华为手机一年内主板坏了怎么办 华为手机保修期内主板坏了怎么办 华为手机外置sd卡满了怎么办 红米4充不进去电怎么办