A

=w=

B

QvQ

C

题意:有长度为n的序列(n<=5e5),求满足条件的a,b,c,d的组数,要求满足条件:min([a,b])<=min([c,d]),a<=b<c<=d

分析:数据结构(set+BIT)

   不妨把所有点按照从小到大的顺序加入数组

   那么当一个数x进入数组时候,已经在数组里的数一定小于等于它

   我们考虑以x为min([a,b])的方案数

   很明显我们可以找到该位置的l和r(set)

   那么a只能在l~x之间,b只能在x~r之间,而c,d只能在空隙之中

   用乘法原理计数,关键问题就是计算r后面的所有空隙对答案的贡献

   这个贡献可以用树状数组来维护

   c[i]表示i位置的板子到前驱板子之间的空隙对答案的贡献,那么对于每次询问,计算r后面的所有空隙对答案的贡献就是query(n+1)-query(r)

   对于每个修改,x插入到l和r之间,c[l]值不需要改变,c[x]值加上l~x长度的贡献,c[r]需要减去原来l~r长度的贡献,再加上x~r长度的贡献

D

题意:T组数据,n*m的格子(T,n,m<=1000),将1~n*m填入这些格子中,规定位置(i,j)的高度为(i xor j),要求若位置A的高度严格大于位置B,那么A中的数字也必须严格大于B中的数字,求放置方案数

分析:各种方法

   对于极限情况,异或值最大为1023

   如果我们按照i xor j对所有位置排序,那么异或值相同的位置必定只能取1~n*m中连续的一段,所以如果p[x]表示异或值为x的位置有多少个,那么答案就是π(p[x]!) (0<=x<=1023)

   方法一:暴力

     有了上面的结论,很直观的想法就是对于每组数据,直接n*m统计xor值,时间复杂度O(TNM),是1e9级别的,但是因为运算是异或,所以跑得过,而且跑得十分快……

   方法二:离线+二维树状数组

     将询问离线,枚举每个异或值x,计算各个询问中该异或值出现了多少个

     这相当于提前预处理得到每个异或值x的出现位置有哪些,用vector记下来

     然后对于每个枚举的x,把那些位置在二维数组中标1,其他标0,

     对于每个询问T的n和m,也就是询问[1,n][1,m]数组的和,这当然可以用二维树状数组完成

     O(T*1023*logn*logm),最坏是1e8级别的,实际和暴力时间差不多

   方法三:数位dp

     dp[i][j][k][l]表示前i位,第一个数字是否有限制,第二个数字是否有限制,当前异或值为l的方案数

     O(T*10*2*2*1023*2*2),大概是1e8级别的,实际跑很慢,比暴力慢

   方法四:FWT

     设s[x]表示异或值x出现的个数

     那么计算方法是s[x]=Σf[i]*g[j] (i xor j==x),此题中f[i]=i,g[j]=j

     这种卷积不再是i+j==x,而是i xor j==x,可以用FWT优化到nlogn的

     那么复杂度就是O(Tnlogn)是1e7级别的,实际跑得是最快的

     另外,FWT还可以处理OR、AND、~AND、~OR、~XOR

E

WVW

F

待填坑

     

最新文章

  1. IIS下Asp.Net应用程序多进程设置及Session共享
  2. 在Winform开发框架中,利用DevExpress控件实现数据的快速录入和选择
  3. win10自动更新彻底关闭
  4. RMAN备份与恢复之参数文件与控制文件
  5. IIS部署网站
  6. 【 Quartz】使用 JobListener (任务监听器可实现) 我想在一个任务执行后在执行第二个任务怎么办呢
  7. Filezilla FTP Server 设置帐号主目录文件夹的方法和多个帐号共享一个文件夹的方法
  8. 浅谈MVC模式
  9. eCharts的随笔
  10. 天天模拟器极速畅玩靠谱游戏《仙境传说RO:复兴》
  11. 【转载】从头编写 asp.net core 2.0 web api 基础框架 (5) EF CRUD
  12. 初涉扫码登录:edusoho实现客户端扫码登录(简版)
  13. javaWeb之使用servlet搭建服务器入门
  14. SpringBoot项目单元测试
  15. Jobs深入学习
  16. sqli-labs(十七)
  17. 学习笔记之Matplotlib
  18. JSP页面java代码报错:Purgoods cannot be resolved to a type
  19. iOS 坐标转换
  20. linux查看进程的线程数

热门文章

  1. 用SpringMVC实现的上传下载方式二(多文件上传)
  2. 转 awr自动收集脚本
  3. Kerberos 简介——教你做个好人
  4. html与html5 总结
  5. tensorboard在windows系统浏览器显示空白的解决
  6. Mysql5.7多源复制,过滤复制一段时间后增加复制一个库的实现方法
  7. echarts之我用
  8. GDB 学习
  9. MySql学习笔记(三) —— 聚集函数的使用
  10. Apache Maven 3.0.3 (yum) 安裝 (CentOS 6.4 x64)