![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
BC
文章平均质量分 65
wlhz2017
这个作者很懒,什么都没留下…
展开
-
HDU 5435/BC 54E AB String
由于询问的是原串中不存在的第k小的子串,而不存在的子串应该有很多,长度为32的串有232个,而原串的子串最多有4*108个,所以第109小的不存在串长度一定小于等于32。所以可以讲长度小于等于32的串都处理出来,排序去重,由于原串只有AB两种字母,可以令A为0,B为1,将串hash成一个数,由于0(A)和00(AA)是不同的串,所以可以在最前面加个1,即10表示串"A"。然后对于某个可以二分答原创 2016-10-18 21:03:09 · 443 阅读 · 0 评论 -
HDU 4908/BC B BestCoder Sequence
题意概括求以m为中位数的子区间有多少个,注意到数列是1~n的,m只会出现一次,那么我们要统计的子区间一定是包涵m的,只要统计m的每一侧,每个以m为界的区间,有多少比m大和比m小的就可以了,可以直接记录其差值,那么左右两区间对应就应该是互为相反数。用map统计下即可#include#include#include#include#include#include#include原创 2016-07-06 22:32:41 · 333 阅读 · 0 评论 -
HDU 4907 /BC 3A Task schedule
如果将已经分配任务的时间点标记,则原问题可以转换为,对于每个询问,找出该时间点及之后的,首个未标记的时间点。所以我们时间点的数组,标记任务后反向扫描,每一个未必标记的时间点及其左侧连续的标记地点的答案都是该未标记时间点。询问O(1)查询即可。#include#include#include#include#include#include#include#include#incl原创 2016-07-06 21:56:33 · 345 阅读 · 0 评论 -
HDU 4994 / BC 9B Revenge of Nim
题意:n堆石子,每次只能从左面第一个非空堆拿任意个 不能拿者输其实仔细分析 每堆石子数量只有0 1 和其他3种 其中0就表示要拿下堆 1只能转移到0 多可以转移到0或1 从最右堆倒着推就可以发现 只要你当前操作遇到多 你就可以掌控接下来的局势 即必胜态 而其实面对1也不代表必败 因为可以下一堆也是1 所以可能两个人轮流拿1 直到一个人面对多或拿光了为止#include #include原创 2016-07-17 16:30:20 · 266 阅读 · 0 评论 -
HDU 4993 / BC 9A Revenge of ex-Euclid
题意:给定abc求满足ax + by = c的正整数解的个数因为c的范围只有1000000所以暴力枚举x即可#include #include #include #include #include #include #include #include #include #include#include#define bug puts("bugbugbug");usi原创 2016-07-17 16:21:00 · 224 阅读 · 0 评论 -
HDU 4991 / BC 8C Ordered Subsequence
题意:求原序列有多少个长度不大于m的上升子序列注意到m只有100,所以dp即可,对于当前值,左侧比它小的值作为序列末尾有a[i]个长度为i的,则可以推算出以当前值为末尾的有a[i]个长度为i+1的 并且会新形成一个长度为1的至于如何计算左侧长度为i的可选序列的个数,可以用m个树状数组来维护#include#include#include#include#include#inc原创 2016-07-17 10:24:53 · 278 阅读 · 0 评论 -
HDU 4990 / BC 8B Reading comprehension
题意要求输出题目中代码的输出代码很好理解 i从1到n i为奇数时ans=ans*2+1 i为偶数时ans*=2可以把两步操作合成到一起 即 ans=ans*4+2 然后执行n/2次 (n为奇数就再补上一次即可)然后用矩阵快速幂就可以了 #include #include #include #include #include #include #include #inc原创 2016-07-17 10:11:21 · 253 阅读 · 0 评论 -
HDU 4989 / BC 8A Summary
n个数,将其两两相加生成n(n-1)/2 去重后求和因为n很小,所以直接按照题意中所说的暴力生成去重求和即可#include #include #include #include #include #include #include #include #include #include#include#define bug puts("bugbugbug");usi原创 2016-07-17 09:42:15 · 295 阅读 · 0 评论 -
HDU 5085/BC 15D Counting problem
题意:设函数f(x,k)为x的每一位的k次方的和,求a到b中有多少i满足,f(i,k)=S (a,b,k,S给定)题解:自己想的比较复杂 首先k为1 2时可以特殊处理 因为此时的S也很小,正常的数位dp就可以了而k>2时 可以先拆分S 这时S的拆分种数较少,对每一种再进行计算即可。但这样不好敲啊=。= 忍不住看了题解,果然机智,分治即可,预处理储存S的后几位,再枚举S的前几位既原创 2016-07-26 22:20:34 · 378 阅读 · 0 评论 -
HDU 5084/BC 15C HeHe
题意:给出数值T,按图片构造出M矩阵,求的是M*M的结果矩阵中,i行j列的值,并且i和j是+前一组ans的 也就是强制在线题解:因为是赛后做的,队友发现在杭电上竟然可以暴力M*N水过...什么强制在线都是逗你玩的... 不过其实BC的服务器要慢一些,所以比赛时是不能暴力的,所以还是想了n²的做法因为矩阵很特殊,所以第i,j的值和第i+1,j+1的值 只差了两对数的乘积,所以先暴力跑出最原创 2016-07-26 22:13:20 · 314 阅读 · 0 评论 -
HDU 5083/BC 15B Instruction
题意:两种串让你互相转换,前六位对应一个字符串,中间五位和后五位分别对应一个二进制数值 题解:没什么难度,只是有一点不符合的就算非法,有两个要考虑的细节,首先SET的时候后面R2是为0的 其次注意b、c的范围#include#include#include#include#include#include#include#include#include#include#i原创 2016-07-26 21:23:28 · 261 阅读 · 0 评论 -
HDU 5082/BC 15A Love
题意:分别求两个串_后面的部分 中间加个small题解:也没什么好说的,水题#include#include#include#include#include#include#include#include#include#includeusing namespace std;int main(){ char a[100],b[100]; while(原创 2016-07-26 21:13:37 · 362 阅读 · 0 评论 -
HDU 5661/BC 79B Claris and XOR
开始时想按照数位dp来做 先考虑x 有a≤x≤b 从高位到低位考虑 举个例子 a为11101110100b位11100101010若开始的几位相同 则x的取值固定 前4位一定是1110 从第五位开始有两种选法 设x的第五位为1 第六位为0 那么剩下的位就没有限制 (因为x一定满足a≤x≤b了) 我们称没有限制为自由态,当x到达自由态后 无论y的当前位是0还是1 x只要选与之相符的原创 2016-04-14 19:59:55 · 448 阅读 · 0 评论 -
HDU 5660/BC 79A jrMz and angles
正n边形的内角度数为 (n-2)/n*180 所以可以设取a个n角b个m角(a,b≤6)枚举ab即可#include#include#include#include#include#include#include#include#include#include#include#include#include#define mem(x,y) memset(x,y,siz原创 2016-04-14 19:45:28 · 280 阅读 · 0 评论 -
HDU 4958/BC 5C Poor Rukaw
博弈+概率dp题目大意:2个人玩游戏,其中甲随手玩。。。乙认真玩,开始n堆石子,每次拿2堆相减后放回去,最后剩奇数甲赢,否则乙赢。赢的得n分,下一轮n堆石子恢复,上轮输者删掉其中一堆,问最后乙得分的期望。首先,由于是博弈,从必败态开始分析,对于甲来说,最后一次奇数是必胜的,而每次转移状态的操作,只有 拿出两个奇数 变成偶数,奇偶变奇,偶偶变偶三种,不管哪种,奇数数量是减少2个或0个,即每次原创 2015-08-01 11:20:37 · 514 阅读 · 0 评论 -
HDU 4909 / BC 3C String
开始没注意到只有1个问号 ,想了很久... 首先可以用前缀和的方式,用类似状压的方式存储,在不考虑问号的情况下,某段复合要求,等价于首位的前缀和异或为0,也就是对应当前的前缀和对应状态,查询出现过的相同状态,加起来即可。 对于问号,可以等价于26种变化,所以问号及其问号后的状态,可以再枚举问号的变化,然后查询问号之前相同状态的数目,而对于同样处于问号之后的状态,其区间内不包含问号,所以应该原创 2016-07-06 22:48:05 · 291 阅读 · 0 评论 -
HDU 4910 / BC 3D Problem about GCD
首先打表,发现一部分是n-1其他是1找规律发现,对于 素数的n次方 及 2倍素数的n次方 其结果是 n-1 (除2和4外 不能是2的n次方)对于判断一个数是不是素数 直接米勒罗宾即可 对于判断是不是素数的n次方 有两种方法 可以先判能否开平方和三次方 再暴力处理10^4之内素数即可我直接套pollard_rho 分解质因数 发现不同质因数就否定#include#include原创 2016-07-06 22:59:37 · 316 阅读 · 0 评论 -
HDU 4984 / BC 6D Goffi and Graph
题意:给一个n点m边的无环图,边有权重a+bt 其中a,b给定,t为时间变量,f(i,t)表示,在t时间的时候 点1到点i的k条路径中,每条路径的最小边的最大值。最后求题目中的积分公式就行了。点和边的范围都非常小,所以图也只会在很少的时间点发生变动,对于两个点之间的时段,其f(i,t)所执向的边都是稳定的a+bt,所以可以取每段的中点,给所有边赋对于值,求出执向的边后再乘时段长度即可。对于原创 2016-07-08 20:50:35 · 296 阅读 · 0 评论 -
HDU 5434/BC 54D Reflect
反射n次即共n+1个点。可以设定从最下面的点出发,然后每次跳x个点,这样如果可以访问到每个点后再返回到原点,就是满足要求的。也就是如果x和(n+1)互质,就可以满足要求。答案即为euler(n+1)#include#include#include#include#include#include#include#include#include#include#include原创 2016-10-18 20:52:33 · 297 阅读 · 0 评论 -
HDU 5433/BC 54C Geometric Progression
大数判断等比数列,要求公比不能为0, 套用大数模板,判断等比时可以判断a[i]*a[i]与a[i-1]*a[i+1]是否相等。对于公比为0的判断,如果首项为0,则其余数均为0。首相不为0,则其余数均不为0。#include#include#include#include#include#include#include#include#include#include#in原创 2016-10-18 20:48:36 · 284 阅读 · 0 评论 -
HDU 5432/BC 54B The Factor
题意有点绕,实质是求所求数列乘积的最小的两个素因子的积,没有输出-1。先筛素数,对于数列中的每个数质因数分解(剪枝可以分解出两个素因子后就退出),将得到的素因子排序,找到最小的两个输出,不足两个特判即可,注意结果可能超出int,需要用long long #include#include#include#include#include#include#include#inclu原创 2016-10-18 20:44:14 · 360 阅读 · 0 评论 -
HDU 5431/BC 54A A problem of sorting
结构体排序,注意是年份约大年龄越小排的约靠前,因为输入的名字中可能含有空格,所以用gets读入,最后4位再导出为年份。#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define mem(x,y) me原创 2016-10-18 20:38:28 · 318 阅读 · 0 评论 -
Bestcoder题解汇总
bestcoder题解第1场:A:B:C:D:第2场:A:B:C:D:第3场:A:B:C:D:第4场:A:http://blog.csdn.net/weilehuozhe/article/details/47373909B:http://blog.csdn.net/weilehuozhe/article/d原创 2015-09-28 21:39:14 · 1059 阅读 · 1 评论 -
HDU 5805/BC 86B NanoApe Loves Sequence
题解:首先计算出每两个相邻数之间的差值,统计出其中最大的三个。然后枚举删每一个点,对于删除当前点,首先删除当前点与左右两个点之间的距离 (只有删除的距离为最大的两个时才会有影响),然后处理没被删掉的最大值与新生成的左右两个点之间的差值作比较,取最大值加到答案上。对于前三大的值可以开三个变量统一,为了方便也可以sort,我比赛的时候脑抽用multiset维护的 ,也就是6倍sort的时间,终判就原创 2016-08-07 16:14:11 · 352 阅读 · 0 评论 -
HDU 5804/BC 86A Price List
题解:因为是要求一定“记多了”,也就是记录的值大于总和的最大值注意:sum取long long#include#include#include#include#include#include#include#include#include#include#include#include#include#define mem(x,y) memset(x,y,size原创 2016-08-07 16:00:18 · 271 阅读 · 0 评论 -
HDU 5779/BC 85D Tower Defence
题解:因为要满足从点1到所有点没有最短路等于k(不考虑无穷,也就是都小于k) 可以分成维护 第i层到1的距离为i-1 第一层只有1这一个点 dp维护之前用了多少个点 上一层用了多少个点 每次再枚举这一层用了多少个点 那么dp[i][j+now][now](到第i层 共用了j+now个 这层用了now个) 应该由 dp[i-1][j][k]推过来 此时方案数应该为dp*原创 2016-07-31 10:22:48 · 397 阅读 · 0 评论 -
HDU 5778/BC 85C abs
题解:因为要找与x最近的 质因数均为2的y 不妨找 sqrt(x)最近的 质因数均为1的y1和y2 最后再比较y1² y2² 和x的差值 对于sqrt(x)暴力的向上和向下扫y1,y2即可 判断一个数是否每个质因子都只包涵一次 可以先筛素数 每次暴力跑到根号n即可#include#include#include#include#include#inc原创 2016-07-31 09:58:42 · 395 阅读 · 0 评论 -
HDU 5777/BC 85B domino
题解:模拟一下不难发现原问题可转换为去掉k-1个数 其他数求和 最后再加上n 也就是贪心的去掉前k-1大的即可注意:k可能大于n#include#include#include#include#include#include#include#include#include#include#include#include#include#define mem(x,y原创 2016-07-31 09:44:15 · 309 阅读 · 0 评论 -
HDU 5776/BC 85A sum
题解:这题正解为处理前缀和模m ,当前位置的前缀和查询之前是否已经出现过,如果出现过则说明此区间满足条件。复杂度O(n)注意:开始要初始mp[0]=1比赛的时候脑抽了,没想前缀和,发现n大于m时一定YES,n小的时候暴力跑,复杂度O(m²)至于为什么n大于m一定YES 因为前缀和只有m种 所以n大于m时一定出现两种前缀和 也就一定存在和为m的子区间(赛后才证的)注:队友直接n²加小原创 2016-07-31 09:39:02 · 367 阅读 · 0 评论 -
HDU 4959 / BC 5D Poor Akagi
题意比较简单,就是求数列Li的k次方的前n项和 看了之后感觉无从下手,看了这个题解后才知道http://blog.csdn.net/ahm001/article/details/38724607 这个数列是有规律的 准确的说是叫卢卡斯数,通项公式为L(i)=((1+√5) ^ n + (1-√5) ^ n)/ 2^n 然后再把k次方打开,然后枚举第i项,定义二次域 然后 用快速幂和分治求原创 2016-07-09 15:05:31 · 383 阅读 · 0 评论 -
HDU 5596/BC 66B GTW likes gt
很巧妙的一道题 首先在要发功影响的时间点添加标记 然后从后往前扫 同时累计标记 并且记录两组中已经扫过的最大值 扫到当前位置时 就可以进行统计了#include#include#include#include#include#include#include#include#include#include#include#include#define INF (1ll原创 2016-01-30 18:09:14 · 331 阅读 · 0 评论 -
HDU 5595/BC 66A GTW likes math
注意题目要求是整数区间 即区间内只能取整数值 而l,r又很小 所以暴力for一遍就可以了如果优化 可以去对称轴附近的两个整数点 而且要注意a为0的情况#include#include#include#include#include#include#include#include#include#include#include#include#define INF (原创 2016-01-30 17:26:43 · 292 阅读 · 0 评论 -
HDU 5604/BC 67E merge
首先要算清对于某一个集合时的最优方案 即在其中间值附近的两个点上 他们做最后一步移动 两个点分别为 a[i]和a[i+1] 则 最后答案为 max(a[i]-small, big-a[i+1])+(a[i]+a[j])/2;所以如果把集合放在set里 那么我们只要找到(small+big)/2附近的几个点 计算一下即可 对于集合的合并 学习了启发式合并 启发式 即将小的向大的上合并 可原创 2016-01-30 16:29:10 · 441 阅读 · 0 评论 -
HDU 5060/BC 12C War
题目大意 给出一个以原点为中心的球的半径 和一个以原点为中心的圆柱的半径和高 求他们相交体积与总体积的比总体积 是由球体积加圆柱体积减相交体积得到。接下来说相交体积怎么求。首先基础的几何 球体积是4/3πR³ 圆柱是πR²H 另外补充 球被平面切后形成的较小的部分叫球冠(自己定的义,并不严谨,只是方便大家理解) 球冠是有体积公式的π π(3R-h)×h²/3你不知道公式也不要原创 2015-08-10 16:00:15 · 430 阅读 · 0 评论 -
HDU 5059\BC 12B Help him
题目大意 给你个字符串 判断是否是合法的整数 (没前导0) 且值在给出的a b之间感觉上是很水的一道题,实际上坑点挺多首先字符串不包括 回车'\n' 和 换行'\r' 结果我把'\r'给当成空格了 这顿wa啊。。。 后来反应过来了,既然有空格,肯定不能再用scanf了 我用的gets 但gets会吃单回车 所以输入完a b要getchar吃回车 输入弄完了 判断是很容易的 有符号就从第一位原创 2015-08-10 15:22:40 · 301 阅读 · 0 评论 -
HDU 4982/BC 6B Goffi and Squary Partition
题面大意 给定n,k问是否有k个不同正整数 和为n 且其中k-1个数 是某个数的平方数设 k-1个数等于 i²,每次从大到小枚举i,看是否存在合法的,由于k个数 必须不同,所以 出来k-1个数 剩下一个数 z=n-i²。当z>k时 k-1个数从1 到k-1 排列,只要比i²小,比i²小的部分 可以从大到小 不断加一的方式 来完美的 凑出所以比 k(k-1)/2大的所有数。但当z=k时,k-1原创 2015-08-01 14:05:29 · 367 阅读 · 0 评论 -
HDU 4956/BC 5A Poor Hanamichi
题面数据吓人,其实可以暴力,因为不符合要求的数还是蛮多的,所以从左向右暴搜就好,至于为什么多,可以脑补下,整除11的数 ,如果加了3,产生了进位就(极可能出错,有少数反例 所以我只判这个就wa了),还有一些其他情况,也满足条件,所以满足条件的情况蛮多的,而且分布均匀,所以暴大好。#include #include #include #include #include #include原创 2015-08-01 10:56:33 · 376 阅读 · 0 评论 -
HDU 5058/BC 12A So easy
题目大意 判断两个集合出现过的数是不是完全一样(不考虑出现的次数)只需将两串排序去重后判断即可 可以用set来操作 但我当时想编得再优越一些 结果编的稍挫了一点(>﹏<) 其实时间是差不多的。。。#include #include #include #include #include #include #include #include #include #include原创 2015-08-10 15:12:46 · 292 阅读 · 0 评论 -
HDU 4932/BC 4B Miaomiao's Geometry
最近在刷最开始的几次bc的题,没有中文题不说还比较难,而且trick点多容易wa,而且偏数学类,所以赶紧补上一些题解。题目大意 n个定点,用一些线段去覆盖,线段不能重叠,覆盖时定点必须为线段端点。求合法线段的最大长度。当时第一感觉就是2分啊,题面还让输出4位小数,这不是2分是什么,然后当然wa了2发 ,判了特例也白费。调了精度,精度太高t了,稍低一点还是wa。然后就觉得是2分精度的问题原创 2015-08-01 10:48:48 · 412 阅读 · 0 评论 -
hdu 5365 /BC 50CThe mook jong
简单dp 还是习惯 用记忆化搜素去写 以为这样不用初始化1 2 3的值 更优美唯一tirck点是 数据在接近60时会爆int#include #include #include #include #include #include #include #include #include #include#include#define bug puts("bugbugbu原创 2015-08-09 10:27:23 · 277 阅读 · 0 评论