[bzoj4942] [洛谷P3822] [NOI2017] 整数】的更多相关文章

题目链接 https://www.luogu.org/problemnew/show/P3822 想法 这个啊,就是线段树哇 最初的想法是每位一个节点,然后进位.退位找这一位前面第一个0或第一个1,然后把中间一段修改了即可 但是每位一个节点太浪费了,会超时,故可以压位,30位一个节点 要找每个点前面第一个0或1的话,可以记录一下每个区间里是否全0或全1,不停地维护 反正基本思路就是这样,但是代码真心挺恶心的,调了一天呢!NOI题真是毒瘤! (初三一模前两天调这个代码,酸爽啊--qwq) 代码 #…
题目分析: 首先这题的询问和位(bit)有关,不难想到是用线段树维护位运算. 现在我们压32位再来看这道题. 对于一个加法操作,它的添加位置可以得到,剩下的就是做不超过32的位移.这样根据压位的理论.它最多只会对线段树的两个叶子产生影响,我们分开来考虑两个叶子. 对于一个加法的进位,它实际就是把它之后连续的全为1的位赋值成0,然后更改第一个不是全为1的位,不难想到用lazytag实现. 减法操作与加法操作相反.所以我们要两个标记和两个lazy标记. 对于一个询问,在线段树上查找即可. 代码: #…
原文链接http://www.cnblogs.com/zhouzhendong/p/8146041.html 题目传送门 - 洛谷3825 题解 我们考虑到地图中x的个数很少,最多只有8个. 所以我们可以考虑穷举. 我们只需要把x变成a和b,这样就涵盖了选择A,B,C的三种情况. 所以我们状压枚举每一个x可以变成什么情况. 然后对于每一种情况,几乎就是2-sat裸题了. 然后我们考虑特殊情况: 如果选了A就得选择B. 如果A的状态不合法,那么显然这条边是不用建立的. 否则: 如果B的状态不合法,…
题目链接 洛谷P3832 题解 字符串哈希然后丢到hash表里边查询即可 因为\(k \le 50\),1.2操作就暴力维护一下 经复杂度分析会发现直接这样暴力维护是对的 一开始自然溢出WA了,还以为是哈希冲突,改成双哈希后依旧WA 后来才发现是sb了漏了一句QAQ 不卡自然溢出 #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorith…
UOJ和洛谷上能A,bzoj 8ms即WA,现在也不是知道为啥--因为我太弱了 先看数据范围发现d非常小,自然想到了状压. 所以先假装都是只能跑两种车的,这显然就是个2-SAT问题了:对于x场没有hx的,直接跳过:对于y场没有hy的,连(x,x'),表示x不能选:对于都有的,连接(x,y),表示选了x必须选y,(y',x'),表示不选y的话也不能选x. 注意! 1 连(x,x')的时候不要直接add(i,i+n)!这里方便起见写成(x,x'),实际上应该是(x,不是x的另一个) 2 (x,y)(…
P1107 最大整数 题目描述 设有n个正整数 (n<=20), 将它们连接成一排, 组成一个最大的多位整数. 例如: n=3时, 3个整数13, 312, 343连接成的最大整数为: 34331213 又如: n=4时, 4个整数7,13,4,246连接成的最大整数为: 7424613 输入输出格式 输入格式: n n个数 输出格式: 连接成的多位数 输入输出样例 输入样例#1: 复制 3 13 312 343 输出样例#1: 复制 34331213 输入样例#2: 复制 4 7 13 4 2…
http://codevs.cn/problem/1860/ || https://www.luogu.org/problem/show?pid=1107#sub 题目描述 Description 设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数. 输入描述 Input Description 第一行一个正整数n. 第二行n个正整数,空格隔开. 输出描述 Output Description 连接成的多位数. 样例输入 Sample Input Sample 1: 3 13…
P1151 子数整数 题目描述 对于一个五位数a1a2a3a4a5,可将其拆分为三个子数: sub1=a1a2a3 sub2=a2a3a4 sub3=a3a4a5 例如,五位数20207可以拆分成 sub1=202 sub2=020(=20) sub3=207 现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1,sub2,sub3都可被K整除. 输入输出格式 输入格式: 输入由键盘输入,输入仅一行,为正整数K 输出格式: 输…
题目分析: 从$\sum|S|$入手.共考虑$\sum|S|$个$f(t)$.所以我们要一个对于每个$f(t)$在$O(1)$求解的算法.不难想到是哈希. 然后考虑分裂和合并操作.一次合并操作要考虑合并点之前的$O(k)$个点向后衔接的哈希值.共$O(k^2)$.看似超时实则不然.一个串最多$O(nk)$个哈希结果,所以均摊入手. 对于分裂和重合并不能均摊,所以多了一个$O(ck^2)$. 这题的合并和分裂只和合并点和分裂点有关,而这个信息是给出的,所以不需要额外使用数据结构维护结果. 时间复杂…
传送门 果然图论的题永远建图最麻烦……看着题解代码的建图过程真的很珂怕…… 先不考虑地图$x$,那么每一个地图都只能用两种赛车,于是我们可以用2-SAT来搞,用$i$表示这个地图能用的第一辆车,$i'$表示它能用的第二辆车 至于怎么连边呢,考虑限制条件$(i,h_i,j,h_j)$,如果$i$不能用$h_i$我们直接忽视这个限制条件,如果$j$不能用$h_j$说明无解,于是我们连边$(i,i')$表示如果选了$i$的第一辆车就无解 否则的话就按一般的2-SAT把上面的限制条件连边即可 然后考虑怎…