THUSC 2017 D1T2 杜老师】的更多相关文章

这是个非常有趣的数学题啦... 其实大概推一推式子就能得到一个信息,就是答案一定是$2$的整数次幂,并且其实答案就是$2^{R-L+1-sum}$,其中$sum$表示有多少个数不能用$L-i-1$的数表达出来. 另外,根据寿司晚宴那道题给予的启发,我们只需要统计质数小于$\sqrt {10^7}$的就可以了,然后打一个表就可以知道,一共大概有$450$个左右. 那么$70$分的部分分就很容易到手了. 我们可以通过$O(n)$的时间复杂度,预处理出$10^7$以内的所有数的最大质因子,显然,每个数…
听说LOJ传了THUSC题赶紧上去看一波 随便点了一题都不会做想了好久才会写暴力爆了一发过了... LOJ #2978 题意 $ T$次询问,每次询问$ L,R$,问有多少种选取区间中数的方案使得选出的数的积为完全平方数 $ T \leq 100,R \leq 10^7 \sum\limits R-L \leq 6·10^7$ 时限$ 5s$ 题解 随便写个暴力发现答案都是$2$的若干次幂 首先对于每个数,每个质因子出现的次数显然只有奇偶性是有用的 用一个$ bitset$存储每个数中每个质因数…
题面 传送门 题解 感谢yx巨巨 如果一个数是完全平方数,那么它的所有质因子个数都是偶数 我们把每一个数分别维护它的每一个质因子的奇偶性,那么就是要我们选出若干个数使得所有质因子的个数为偶数.如果用线性基来维护的话,设\(k\)为自由元的数目,答案就是\(2^k\) 然而直接线性基爆搞复杂度太大了,因为每个元素只会有一个大于\(\sqrt{r}\)的因子,我们把所有数按照最大质因子排序(最大质因子小于\(\sqrt{r}\)的看做\(0\)),那么一堆相同最大质因子的数我们钦定第一个插进线性基里…
题目:https://loj.ac/problem/2978 题解:https://www.cnblogs.com/Paul-Guderian/p/10248782.html 第 i 个数的 bitset 的第 j 位表示 i 是否含有奇数个 “第 j 个质数” . 想到用 bitset ,就开始考虑怎样 DP …… 其实是求选一些数,使得它们的 bitset 异或和为 0 .所以求线性基,答案就是 2R-L+1-线性基大小 . 然后考虑根号分治. 大于 \( \sqrt{n} \) 的质数,每…
题目描述 杜老师可是要打+∞年World Final的男人,虽然规则不允许,但是可以改啊! 但是今年WF跟THUSC的时间这么近,所以他造了一个idea就扔下不管了…… 给定L,R,求从L到R的这R−L+1个数中能选出多少个不同的子集,满足子集中所有的数的乘积是一个完全平方数.特别地,空集也算一种选法,定义其乘积为1. 由于杜老师忙于跟陈老师和鏼老师一起打ACM竞赛,所以,你能帮帮杜老师写写标算吗? 输入格式 从标准输入读入数据. 每个测试点包含多组测试数据. 输入第一行包含一个正整数 T(1≤…
Day0 早上在家里整理东西. 下午坐飞机去北京.(怎么又去北京,上周刚去的北京) 一开始飞机爬升的时候太无聊就睡着了.醒了以后就开始吃东西.吐槽一句:厦航的飞机就是好啊.上面的点心也比上次海航的好吃...吃完点心以后无聊就开电脑听音乐,玩osu!.我tm是有多无聊.玩腻了看了一会儿13年的集训队论文集,因为上次校内训练刚刚出了一道Polya所以学习了一会.看了一会感觉看不懂也不会考(flag)就放弃了. 下飞机完来到酒店.路上是E.space的亲戚(?)来接送.好像他的一个亲戚也是做程序员的?…
题目大意 给你 \(l,r\),求从 \(l\) 到 \(r\) 这 \(r-l+1\) 个数中能选出多少个不同的子集,满足子集中所有的数的乘积是一个完全平方数. 对 \(998244353\) 取模. \(1\leq l,r\leq {10}^7\) 有 \(100\) 组数据,\(\sum r-l+1\leq 6\times {10}^7\) 题解 对于每个数,求出这个数中包含了哪些出现次数为奇数的质数. 那么就可以直接高斯消元,记矩阵的秩为 \(r\),答案就是 \(2^{r-l+1-r}…
https://www.luogu.org/problemnew/show/P4948 这篇博客主要目的是存一下的dls的神奇板子,本来应该是推公式或者二分做的 但是dls的插值板子直接写好了这个特殊式子的算法...... #include <bits/stdc++.h> #define endl '\n' #define ll long long #define ull unsigned long long #define fi first #define se second #define…
一个序列,每个物品有三个权值 $A,B,C$ 要求维护: 1.区间 $A_i+=B_i$ 2.区间 $B_i+=C_i$ 3.区间 $C_i+=A_i$ 4.区间 $A_i+=v$ 5.区间 $B_i \times = v$ 6.区间 $C_i = v$ 7.询问区间 $A,B,C$ 各自的和 线段树,每个点维护 $A,B,C,区间长度$ 每次修改相当于区间乘一个转移矩阵 时间复杂度 $O(16nlogn)$ 垫底 #include <bits/stdc++.h> #define LL lon…
算法一(50pts) 分析 有一个很显然的暴力做法,对于区间内的每个数开个bitset,然后暴力分解质因数.如果对于一个数,它的一个质因子的指数是奇数,那么就把bitset的对应位设成\(1\).答案就是异或方程组解的个数,也就是\(2^{fail}\),\(fail\)表示向线性基插入失败的数的个数. 代码 #include <bits/stdc++.h> #define rin(i,a,b) for(register int i=(a);i<=(b);++i) #define iri…