点开BC发现今晚没比赛。。然后似乎上一场有数位DP?...(幸好我没去

  一开始被BCDcode那题的思路带歪了。。后来发现得把n转成二进制才能搞TAT

  题目大概是要求一种类似逆序对的鬼东西:

    有一个长度为 n 的数组 A(下标为 1 到 n),A_i​​ 为 i 的二进制表示中的1的个数,例如 A[1]=1, A[3]=2, A[10]=2。

    现在勇太想知道数组 A 中满足 A[ i ]>A[ j ] 的数对 ( i , j )(1 ≤ i < j ≤ n) 的个数。


  f[i][j]表示二进制下,i位的数有j个1的方案数(其实也就是组合数了

  再预处理出g[i]表示二进制下,i位的数中,满足题意的数对的个数。

  统计的时候用pre[i]表示 之前的数中,1的个数为i的数的个数。

  其实有点像逆序对的那题(hdu5225)

  统计的时候,一开始脑残写了发树状数组,然后复杂度比正解多一个log神奇的200+ms过了(中途还在纠结树状数组怎么写233)

  吐槽了一下数据强度,然后发现自己傻逼了...弄个变量记录就行了TAT。。所以总的时间复杂度是O(10 * log²n)(logn是<1000的)

  然后就46ms跑过去啦。。并列#1。。。(因为是新题...目前这题才30+人过... 实在没法再卡常了

 #include<cstdio>
#include<iostream>
#include<cstring>
#define ll long long
#define MOD(x) x-=x>=modd?modd:0
#define modd 998244353
using namespace std; int f[][],g[],nowsm[],pre[];
int two[];
int i,j,k,n,m,len,len1;
char s1[],s[]; inline void turn(){
len=;
register int i,l=;
while(l<=len1&&s1[l]){
s[++len]=s1[len1]&;
for(i=l;i<=len1;i++)
s1[i+]+=(s1[i]&)?:,s1[i]>>=;
if(!s1[l])l++;
}
} inline int get(){
register int i,pr=,sm;int ans=g[len-];
memset(pre,,sizeof(pre));
memcpy(pre,f[len-],len<<);
pr=;
for(i=len-;i;pr+=s[i--])
if(s[i]){
for(ans+=g[i-],MOD(ans),sm=,j=len;j>=pr;j--)
sm+=pre[j],MOD(sm);
for(j=,k=pr;j<=i;j++,k++)
sm-=pre[k],sm+=sm<?modd:,
ans=(ans+(ll)f[i-][j]*sm)%modd,
pre[k]+=f[i-][j],MOD(pre[k]);
}
for(i=len;i>pr;i--)ans+=pre[i],MOD(ans);
return ans;
}
int main(){
register int i,j;
for(i=;i<=;i++)f[i][]=;f[][]=;
for(i=,g[]=;i<=;i++){
g[i]=g[i-]<<,MOD(g[i]);
ll sm=;
for(j=;j<=i;j++)
sm+=f[i-][j],f[i][j]=f[i-][j]+f[i-][j-],MOD(f[i][j]);
for(j=;j<i;j++)
sm-=f[i-][j+],
g[i]=(g[i]+sm%modd*f[i-][j])%modd;
} int T;scanf("%d",&T);
while(T--){
scanf("%s",s1);len1=strlen(s1);for(i=len1;i;i--)s1[i]=s1[i-]-;
turn(),
printf("%d\n",get());
}
return ;
}

[hdu5632][BC#73 1002]Rikka with Array的更多相关文章

  1. 【hdu 5632】Rikka with Array

    Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he gives Ri ...

  2. CA Loves GCD (BC#78 1002) (hdu 5656)

    CA Loves GCD  Accepts: 135  Submissions: 586  Time Limit: 6000/3000 MS (Java/Others)  Memory Limit: ...

  3. BC#32 1002 hash

    代码引用kuangbin大神的,膜拜 第一次见到hashmap和外挂,看来还有很多东西要学 维护前缀和sum[i]=a[0]-a[1]+a[2]-a[3]+…+(-1)^i*a[i] 枚举结尾i,然后 ...

  4. 【HDOJ】5632 Rikka with Array

    1. 题目描述$A[i]$表示二级制表示的$i$的数字之和.求$1 \le i < j \le n$并且$A[i]>A[j]$的$(i,j)$的总对数. 2. 基本思路$n \le 10^ ...

  5. 【HDU】4908 (杭电 BC #3 1002题)BestCoder Sequence ——哈希

    BestCoder Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  6. 73. Set Matrix Zeroes (Array)

    Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. Follow ...

  7. HDU 5632 Rikka with Array [想法题]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5632 ------------------------------------------------ ...

  8. BestCoder Round #73 (div.2)

    1001 Rikka with Chess ans = n / 2 + m / 2 1002 Rikka with Graph 题意:n + 1条边,问减去至少一条使剩下的图连通的方案数. 分析:原来 ...

  9. hdu5634 BestCoder Round #73 (div.1)

    Rikka with Phi  Accepts: 5  Submissions: 66  Time Limit: 16000/8000 MS (Java/Others)  Memory Limit: ...

随机推荐

  1. 第四节:dingo/API 最新版 V2.0 之 Responses (连载)

    因为某些某些原因,不能按时更新,唉.我会尽力,加快速度.(这句话不是翻译的哈) 原文地址--> https://github.com/dingo/api/wiki/Responses A fun ...

  2. DeepLearning.ai学习笔记(三)结构化机器学习项目--week1 机器学习策略

    一.为什么是ML策略 如上图示,假如我们在构建一个喵咪分类器,数据集就是上面几个图,训练之后准确率达到90%.虽然看起来挺高的,但是这显然并不具一般性,因为数据集太少了.那么此时可以想到的ML策略有哪 ...

  3. Linux 运行级别

    本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/47 运行级别 不同运行级别的描述 运行级别0:系统停机状态,系统 ...

  4. qt中线程的使用方法

    QT中使用线程可以提高工作效率. 要使用线程要经过一下四个步骤: (1)先创建一个c++ class文件,记得继承Thread,创建步骤如下: a.第一步 b.第二步 (2)自定义一个run函数,以后 ...

  5. 通过js添加的元素点击事件无法触发

    var blk_have ='<div class="sw-off"></div>'; $('#blk').prepend(blk_have); $(doc ...

  6. requireJS(版本是2.1.15)学习教程(一)

    一:为什么要使用requireJS? 很久之前,我们所有的JS文件写到一个js文件里面去进行加载,但是当业务越来越复杂的时候,需要分成多个JS文件进行加载,比如在页面中head内分别引入a.js,b. ...

  7. 转: 谈JAVA_OPTS环境变量不起作用

    谈JAVA_OPTS环境变量不起作用 2016-6-14 11:12 最近在处理运行一个java应用时,老是出现java.lang.OutOfMemoryError: Java heap space. ...

  8. 【官方文档】Nginx模块Nginx-Rtmp-Module学习笔记(三)流式播放Live HLS视频

    源码地址:https://github.com/Tinywan/PHP_Experience HTTP Live Streaming(HLS)是由Apple Inc.实施的非常强大的流视频协议.HLS ...

  9. 通过渲染改变tabBarItem的背景图片

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #703daa } p.p2 { margin: 0.0px 0. ...

  10. VMware虚拟机下为Ubuntu添加磁盘

    20G的磁盘还是不够用啊,正好复习下磁盘分区和逻辑卷. 关闭虚拟机,打开VMware,右键虚拟机点击设置,点下下方的添加,就可以添加磁盘了. 进入虚拟机,查看: root@ubuntu:/# fdis ...