再解 [NOI2017] 整数】的更多相关文章

[BZOJ4942][Noi2017]整数 题目描述去uoj 题解:如果只有加法,那么直接暴力即可...(因为1的数量最多nlogn个) 先考虑加法,比较显然的做法就是将A二进制分解成log位,然后依次更新这log位,如果最高位依然有进位,那么找到最高位后面的第一个0,将中间的所有1变成0,那个0变成1.这个显然要用到线段树,但是复杂度是nlog2n的,肯定过不去. 于是我在考场上yy了一下,这log位是连续的,我们每次都要花费log的时间去修改一个岂不是很浪费?我们可以先在线段树上找到这段区间…
[NOI2017]整数 题目大意: \(n(n\le10^6)\)次操作维护一个长度为\(30n\)的二进制整数\(x\),支持以下两种操作: 将这个整数加上\(a\cdot2^b(|a|\le10^9,b\le30)\). 询问这个整数第\(k\)位的值. 题目保证任何时刻\(x\ge0\). 思路: 维护每一位的值,并在线段树上记录每个区间是否含有\(0\)或\(1\),以便发生进退位时快速查找到进退位结束的位置.区间修改,单点查询.时间复杂度\(\mathcal O(n\log(30n))…
4942: [Noi2017]整数 Time Limit: 50 Sec  Memory Limit: 512 MBSubmit: 363  Solved: 237[Submit][Status][Discuss] Description http://www.lydsy.com/JudgeOnline/upload/Noi2017D1.pdf Input Output Sample Input Sample Output HINT 分析:  如果维护一个3*10^7次方的数组表示这个数,只有加…
NOI2017 整数 题意: ​ 让你实现两个操作: 1 \(a\) \(b\):将\(x\)加上整数\(a \cdot 2 ^ b\),其中 \(a\)为一个整数,\(b\)为一个非负整数 2 \(k\):询问 \(x\)在用二进制表示时,位权为\(2 ^ k\)的位的值(即这一位上的\(1\)代表\(2 ^ k\)) ​ 一百万次操作,$ |a| \leq 10^9,b,k\leq30n$. 题解: ​ 线段树+压位,30位一位,没了 #include<cstdio> #include&l…
[BZOJ4942][NOI2017]整数(分块) 题面 BZOJ 洛谷 题解 暴力就是真正的暴力,直接手动模拟进位就好了. 此时复杂度是模拟的复杂度加上单次询问的\(O(1)\). 所以我们需要优化的是模拟的复杂度. 首先如果一位位单位加入,这个复杂度是均摊\(O(1)\)的.因为是均摊,所以我们不能支持撤销(即减法操作),所以加法减法必须分开处理. 对于位运算加法我们考虑压位(或者说分块也是一样的啦) 那么加法就很容易处理了,只需要压位之后找到对应的块,然后直接暴力加上去就行了. 这里稍微注…
在本地先处理好要上传的站点文件之后,可能会因为一些网页切图导致ftp上传不稳定,中断,或者文件占用的问题. 那么换了一种实现思路,要借助jenkins的工具jenkins-cli.jar. 解决思路: 1.本地处理好要上传的站点文件,通过压缩软件进行打包,其中压包的命名有规律,比如日期+BuildID的形式. 2.用FTP插件进行上传到外网的目录. 3.外网的机器上也同样安装Jenkins的环境,并新建好一个Job,这个Job增加参数化构建,参数为BuildID,然后增加批处理进行BuildID…
分析: 30+暴力应该还是蛮水的,可以随便写写... 60+的就没那么容易了,但是应该挺裸的,往上架一颗线段树,查询连续1或0的长度,或者找到前缀中,第一个1或0,之后区间覆盖,单点查询,开bool,完全可做,手动模拟二进制加减法就可以了,O(nlog^2) 96的是被卡常了...仔细思考一下,如果开long long的话,时间复杂度是2*log(n/2)=2*(logn-log2),自己给自己找麻烦,多出来了二倍常数...(本来想优化,结果是劣化) 100的算法其实和60+的一样,只是需要压位…
之前的文章我们都是在ctf的基础上学习工控协议知识的,显然这样对于S7comm的认识还不够深刻,这次就做一个实战补全,看看S7comm还有哪些值得我们深挖的地方. 本篇是对S7comm的补全和实战,阅读本篇之前一定要先阅读以下文章,掌握基本的S7comm知识: 工控安全入门(二)—— S7comm协议 本篇文章依然有很多笔者自己摸索的内容,可能存在错误,同时也发现了wireshark对于s7comm解析的几个模糊之处,希望大家能帮忙指正.本次选用的流量包来自于github的w3h,有兴趣的同学可…
目录 LeetCode_007_整数反转 题目描述 总体分析 解决方案 小结 LeetCode_007_整数反转 题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1].请根据这个假设,如果反转后整数溢出那么就返回 0. 来源:…
今天看到一篇文章中,写了关于java中的String.我看了后,是我从学java来觉得是最好的一篇关于String类的文章.看了这篇文章你就会对String的认识会提高一个层次.故将原作者的文章特意转载过来分享下. 作者: chenssy 出处: http://cmsblogs.com/?p=863 今天朋友问我String的内容是真的不可变吗?我肯定告诉他是的?因为在我的主观意识里String就是一个不可变的对象.于是他给我发了这段程序: public class StringTest { p…