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

待填坑

     

Mutual Training for Wannafly Union #6的更多相关文章

  1. 【Mutual Training for Wannafly Union #1 】

    A.Phillip and Trains CodeForces 586D 题意:过隧道,每次人可以先向前一格,然后向上或向下或不动,然后车都向左2格.问能否到达隧道终点. 题解:dp,一开始s所在列如 ...

  2. Mutual Training for Wannafly Union #1解题报告

    ---恢复内容开始--- q神等人组织的vjudge上的多校训练,题目基本上都来自于CF,#1是上周进行的,参加后感觉收获很多,因为上周准备期中比较忙,解题报告现在补上. 比赛地址(兼题目地址) A题 ...

  3. Mutual Training for Wannafly Union #6 E - Summer Trip(并查集)

    题目链接:http://www.spoj.com/problems/IAPCR2F/en/ 题目大意: 给m个数字代表的大小,之后n组数据,两两关联,关联后的所有数字为一组,从小到大输出组数以及对应的 ...

  4. Mutual Training for Wannafly Union #2

    codeforces 298A. Snow Footprints 分类讨论三种情况: ①..RRRRRR…  ②..LLLLLLL… ③..RRRLLLL.. //AC by lwq: #includ ...

  5. Mutual Training for Wannafly Union #8 D - Mr.BG Hates Palindrome 取余

    Mr.BG is very busy person. So you have been given enough time (1000 milliseconds) to help him. Mr. B ...

  6. Mutual Training for Wannafly Union #9

    A(SPOJ NPC2016A) 题意:给一个正方形和内部一个点,要求从这个点向四边反射形成的路线的长度 分析:不断做对称,最后等价于求两个点之间的距离 B(CF480E) 题意:求01矩阵内由0组成 ...

  7. Mutual Training for Wannafly Union #5

    A(UVA12336) 题意:给一个n*m(n,m<=1e5)的棋盘,棋盘上有一些障碍点不能放棋子,现在要在棋盘上放4个棋子,满足A->B->C->D->A,其中走的规则 ...

  8. Wannafly Union Goodbye 2016

    A 题意:平面上有n个点(n<=100000),给你一个p(20<=p<=100) 判断是否存在一条直线至少过[np/100](向上取整)个点,时限20s,多组数据 分析:概率算法 ...

  9. Wannafly Union#1

    题目链接:http://vjudge.net/contest/142053#overview A.题意:有一个3*n的隧道,人和车轮流走,人先向右走一步,然后选在是在原地不动还是上下移动一格,之后车开 ...

随机推荐

  1. bnu 51640 Training Plan DP

    https://www.bnuoj.com/bnuoj/problem_show.php?pid=51640 dp[i][j]表示前j个数,分成了i组,最小需要多少精力. 那么,求解订票dp[i][j ...

  2. 致创业者:APP已死 服务永生

    前几日,有位创业者和我讲他在带领团队做一个将爱踢球的人集中在一起的App,我告诉他你的创业方向错了.原因在于你的目的是要为爱踢球的人提供服务,而你现在却在竭尽全力的做App,你应该做的是设计你为爱踢球 ...

  3. [Python实战] 功能简单的数据查询及可视化系统

    前言 数据时代,数据的多源集成和快速检索查询是第一步,配上数据分析及可视化才能算窥得大数据一角. 创建这个项目的主要目的一是对前期工作的一些总结,二是提升自己. 这里简单介绍一下sqlpro这个项目的 ...

  4. elasticsearch 查询优化

    首先对不必要的字段不做分词也就是不做索引,禁止内存交换 1.shard 一个Shard就是一个Lucene实例,是一个完整的搜索引擎. 分片数过多会导致检索时打开比较多的文件,多台服务器之间通讯成本加 ...

  5. JavaScript(八)日期对象

    Date对象 1.创建方式 var now = new Date(); //现在返回的直接就是 当前的时间 不需要进行换算了   返回格式  (星期 月 日 年 时 分 秒 时区) 2.日期的格式化方 ...

  6. 全面介绍Android Studio中Git 的使用(一)

    来源 :http://blog.csdn.net/gao_chun/article/details/49817229/

  7. Android ListView绑定数据

    ListView绑定数据的三层: ListView绑定数据源从逻辑上可以分为三层:UI层,逻辑层,数据层. UI层:UI层即是ListView控件. 数据层:要展示到ListView控件上面的数据. ...

  8. 联想 Vibe Shot(Z90-3) 免recovery 获取ROOT权限 救砖 VIBEUI V3.1_1625

    >>>重点介绍<<< 第一:本刷机包可卡刷可线刷,刷机包比较大的原因是采用同时兼容卡刷和线刷的格式,所以比较大第二:[卡刷方法]卡刷不要解压刷机包,直接传入手机后用 ...

  9. NX自动出图 发布啦

    经过4个月的努力,终于面世啦!!!!1.安装文件 :http://yunpan.cn/Q49TWSJmy2i5Z    请下载后,按照“安装说明.txt ”进行安装!2.学习视频:http://yun ...

  10. Django之auth登录认证

    前言:我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个完美主义者的 ...