这些题目在BZOJ上面有,可惜是权限题。话说BZOJ上面的题目真的挺好的,要不是我穷,早就去弄个号了!

言归正传,今年的题目难度可以由一个名人名言看出:

题目太水。——某某神犇

可是我掂量了一下,发现如果自己去的话,估计就没什么好果子了。估计只能拿个\(100+10+40=150\)分了,: (。

异或运算

对于每个询问,最基本的思路就是从高位到低位确定答案(因为异或元素位与位之间不影响)。

举个例子,如果询问第\(k\)大,那么首先确定最高位,我们可以统计这个询问的矩形里面最高位是\(0\)个数字个数,假设是\(x\),那么如果\(x \leq k\),则最高位是\(0\),否则是\(1\)。如法炮制,我们就能算出这个答案了。

看数据范围,发现\(n\)和\(p\)非常小(这很容易萌生暴搞的想法),我们要做的是,求在询问矩形里,形如YYYYYXXX的数字的数量,其中Y表示答案的最高的已知的几位,X则是任意的\(0\)或\(1\)。由于\(n\)很小,这里我们可以把矩形拆成一行一行的横条状,我们分开统计每一行。

这样我们的问题就变为,在\(Y\)序列的某段区间里,形如ZZZZZXXX的数量,其中Z是对应的Y与\(X_i\)的异或值(\(i\)表示是第几行),X的含义同上。这样的话,我们可以排序然后二分,或者是使用可持久化字母树。

时间复杂度:\(O(60 m \log m + 60 n p\log m)\)(排序二分)

\(O(60m + 60^2np)\)(字母树)

平方运算

这个应该是最难的一题了吧(对我而言??)。

由于\(p\)是给出的,打个表就能发现一些奇怪的性质。这里我用一副图(\(p=233\))展示:图片像素太大,不妨下载下来放大看。

可以发现,整个图是若干连通块,对于一个连通块来说,是一个环加上周围的若干棵树。由于我没写过,听被人说所有环的长度的最小公倍数在\(60\)左右,每个点到环的距离在\(20\)左右。

假设一开始所有的数都在环上,我们可以维护一个线段树,每个结点记下该区间被修改\(k\)次后,该区间所有数的和,其中\(k\)取决于所有环的长度的最小公倍数。这样,时间复杂度为:\(O(60n\log n)\),这里\(k\)当\(60\)算。

现在由于有些数不在环上,我们暴力改并维护线段树就好,因为对于一个数而言,暴力改的次数在\(20\)左右。

解密运算

这题的代码短得吓人!THUSC居然有这样的题。

假设所有的数不同,那么就是水题一道,因为我们能轻易地算出第一列,同时由知道最后一列,那么我们就知道了每个数字后一个是什么数字。接着,从\(0\)开始就能推导出答案。

但是,如果有相同的,举个例子:

0 * * 1
1 * * 0
1 * * 2
2 * * 1

*表示尚未知的数字。

我们并不知道跟在第二行的\(0\)后面的\(1\)究竟是第一行最后一个\(1\),还是第四行最后一个。

我们可以这么想:

对于下面的情况,最后一列究竟是怎样的。

1(1) ...... 1(2) ...
1(2) ... 1(1) ......

括号里边的是唯一的标识。

我们可以把第一列移到最后一列,得到的新的行,并且这样的行一定存在。这样我们就发现了:对于同一个数字,相对的位置还是不变的。对于最初的例子来说,第二行的\(0\)后面的\(1\)就是第一行最后一个\(1\)。

...... 1(2) ... 1(1)
... 1(1) ...... 1(2)

这样,相同的数字其实“不相同”,我们可以加上唯一的标识,那就跟所有数字不相同的做法一样了。

到此,我们就搞定的THUSC的题目了。你觉得它有NOI的难度吗?

THUSC2015的更多相关文章

  1. BZOJ4105 THUSC2015平方运算(线段树)

    注意到模数被给出且非常小,做法肯定要依赖于一些与此相关的性质.找题解打表可以发现循环节长度的lcm不超过60. 考虑怎么用线段树维护循环.对线段树上每个点维护这段区间的循环节.在循环中的位置,如果未进 ...

  2. 【洛谷5794】[THUSC2015] 解密运算(模拟)

    点此看题面 大致题意: 对于一个字符串,我们在其末尾添加一个'.',将字符串视作一个环,则可以从\(n+1\)个位置断开得到\(n+1\)个新串.现将这\(n+1\)个新串按字典序排序('.'的字典序 ...

  3. 蒟蒻的PKUWC2019划水记(更新ing)

    前言 (结束再补) \(Dec\ 20th\) 正式出发 今天,是正式出发的日子. 虽说是星期五,可并没有去学校晨跑.难得睡到了\(7\)点,起来匆匆吃完了早饭(一个手抓饼),就出发去火车站了. 到了 ...

随机推荐

  1. python的Error集,17个新手常见Python运行时错误

    python及相关工具安装Error集 . 如果升级python版本中出现error .so.1.0: cannot open shared object file: No such file or ...

  2. HDOJ 1043 Eight(A* 搜索)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 思路分析: <1> 搜索算法: A*算法, Heuristic函数:曼哈顿距离 &l ...

  3. [置顶] perl脚本中defined,exists和delete关键字的用法和区别

    刚学习perl脚本的时候,喜欢频繁使用defined关键字判断一个hash中某个key是否存在,后来程序出了问题才去perl官方文档查看关于defined关键字的准确使用方法.因此,这里我把perl中 ...

  4. Android 中文API (66) —— BluetoothClass.Device

    前言 本章内容是android.bluetooth.BluetoothClass.Device,为Android蓝牙部分的章节翻译,版本为Android 2.3   r1,翻译来自中山大学的" ...

  5. GridView事件分析

    GridView事件分析 (转) P1默认数据绑定过程 编号 事件名称 作用 E1 DataBinding 数据绑定之前触发,在这个事件之前(第一次生成GridView),GridView不存在行数据 ...

  6. asp.net MVC 使用JQuery.Ajax

    使用到:Jquery.js 以及 Newtonsoft.Json.dll 客户端调用方式: $("#ButAjax").click(function() {$.ajax({type ...

  7. C#主键类型选择

    1.SQL Server中两种常用的主键数据类型:int(或者bigint)+标识列(又称自动增长字段) uniqueidentifier(又称Guid.UUID) 2.Guid算法是一种可以产生唯一 ...

  8. FreeCodeCamp:Title Case a Sentence

    要求: 确保字符串的每个单词首字母都大写,其余部分小写. 像'the'和'of'这样的连接符同理. 结果: titleCase("I'm a little tea pot") 应该 ...

  9. SAE部署Java应用

    链接地址:http://blog.csdn.net/shuixin536/article/details/9031335 SAE为开发者提供了非常宽松的开发环境,你甚至不用做任何特别定制就能将各种Ja ...

  10. ThinkPHP第四天(U函数,URL类型参数配置,伪静态后缀名配置,数据传递与获取$_GET等)

    1.U('地址','参数','伪静态','是否跳转','是否显示域名'); 在模板中使用U方法而不是固定写死URL地址的好处在于,一旦你的环境变化或者参数设置改变,你不需要更改模板中的任何代码. 在模 ...