- 博客(64)
- 收藏
- 关注
原创 Python爬虫初体验(3):线程锁,线程同步与异常问题的解决
前情提要:Python爬虫初体验(2):多线程的应用及爬取中的实际问题从来没想过,写一个功能较为完备的爬虫代码,要花好几天的时间……这次算是增长了许多编程经验。好的废话不多说,进入正题上次的代码中,由于部分XKCD漫画有特殊格式(还有 404 彩蛋),而我的代码中 try-except 结构只处理了连接超时的问题,没有对漫画本身的格式变化进行处理,导致线程意外中断。虽然最后写了重试...
2019-07-30 23:13:46
518
1
原创 Python爬虫初体验(2):多线程的应用及爬取中的实际问题
前情提要:Python爬虫初体验(1):利用requests和bs4提取网站漫画前几天有些放松懈怠,并没有做多少事情……这几天要加油了!7月的计划要抓紧时间完成!今天疯狂肝这个程序,算是暑假睡得最晚的一天了……(不过程序仍然有问题)好的废话不多说,进入正题总结了下上次的爬虫体验。虽然能保证稳定下载,但是下载 50 张XKCD漫画花费的时间达到了将近 10 分钟,效率比较低。所以...
2019-07-28 23:59:30
479
原创 Python爬虫初体验(1):利用requests和bs4提取网站漫画
emm……真实的高三暑假是,整天无事可做然后找事,于是开始学习Python好的废话不多说,进入正题由题,作为一名初学者,想要玩转爬虫这类玩意还要花很大功夫。所以我就从简单的开始:提取XKCD漫画(网页简单,提取方便)使用 requests 和 bs4 模块提取网页内容+分析html,然后再存入硬盘内首先,requests 和 bs4 都是 Python 的第三方库,使用 pip...
2019-07-18 11:19:49
1116
原创 Python正则表达式:字符集及内部顺序
1.基础内容[] (中括号)用于描述正则表达式中的字符集,可以通过向字符集内部输入字符来自定义匹配的内容。import reregex1 = re.compile('[ABC]')message1 = "Hello. This is ABC club. A man will serve you then."print(regex1.findall(message1))输出:[‘A’...
2019-06-30 12:50:30
1647
原创 NOIP2017 酱油记
NOIP2017 真的是剧毒,根本想不到还有这种操作,唉,不说了,滚粗辣day 0下午 4 点,我们二十多人从 CDQZ_GX 离开,花了一个多小时,前往电子科技大学(UESTC)附近的酒店 诶……好像这个酒店还挺好的啊……就在大学正对面,3 分钟就过去了…… 酒店下面还有一家鸡排店??那晚上岂不是可以“吃鸡”咯?这么舒服的吗……晚上。我们一行人分成 4 组去那个被称作“天街”的商业街吃饭,最后
2017-11-26 13:16:14
778
原创 [BZOJ 2456] mode 常数时间求众数/队列压缩
题目传送门:【BZOJ 2456】题目大意: 给你一个 n 个数的数列,其中某个数出现了超过 n/2 次即为众数。请你找出那个数。数据保证存在这样的众数。 时间限制:1 Sec 空间限制:1 MB 题目分析:又是最近才考过的题的“原版”。果然“原版”要简单多了,比考试的题代码要少好几十行。。。由题,这道题的难点在于空间限制,仅 1MB 的空间意味着我们不能用普通的“数组保存法”解决这道题。观察题
2017-11-06 19:48:20
745
原创 [BZOJ 2815][ZJOI 2012] 灾难 LCA+拓扑排序(支配树)
题目传送门:【BZOJ 2815】 题目描述:【BZOJ 2815 题面】题目大意: 我们用一种叫做食物网的有向图来描述生物之间的关系: 一个食物网有 N 个点,代表 N 种生物,如果生物 x 可以吃生物 y,那么从 y 向 x 连一个有向边。 这个图没有环。图中有一些点没有入边,这些点代表的生物都是生产者,可以通过光合作用来生存; 而有入边的点代表的都是消费者,它们必须通过吃其他生物来生存
2017-11-03 16:34:40
465
原创 [BZOJ 3523] Bricks 贪心+优先队列/堆
题目传送门:【BZOJ 3523】 此题为权限题题目大意:有 n 种颜色的砖块,第 i 种颜色的砖块有 ai_i 个,你需要把他们放成一排,使得相邻两个砖块的颜色不相同,限定第一个砖块的颜色是 start,最后一个砖块的颜色是 end,请构造出一种合法的方案或判断无解。(Special Judge,1 ≤ n,m ≤ 106^6,1 ≤ start,end ≤ n)输入的第一行包含 3 个数,n,
2017-11-01 21:55:41
528
原创 [BZOJ 4565][HAOI 2016] 字符合并 状压DP+区间DP
题目传送门:【BZOJ 4565】题目大意:有一个长度为 n 的 01 串,你可以每次将相邻的 k 个字符合并,得到一个新的字符并获得一定分数。得到的新字符以及得到的分数由这 k 个字符确定。你需要求出你能获得的最大分数。输入第一行为两个整数 n,k。接下来一行为长度为 n 的 01 串,表示初始串。接下来 2k2^k 行,每行一个字符 ci_i 和一个整数 wi_i,ci_i 表示长度为 k 的
2017-10-31 21:48:49
758
原创 NOIP2011 聪明的质检员
题目大意:小 T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有 n 个矿石,从 1 到 n 逐一编号,每个矿石都有自己的重量 wi 以及价值 vi 。检验矿产的流程是:1 、给定m 个区间[Li,Ri]; 2 、选出一个参数 W; 3 、对于一个区间[Li,Ri],计算矿石在这个区间上的检验值Yi:这批矿产的检验结果 Y 为各个区间的检验值之和。即: Yi=∑j1∗∑j
2017-10-30 17:16:43
742
转载 一道好题:机房小测-Tarjan判断必经点
转自 http://blog.csdn.net/izumi_hanako/article/details/78376731说在前面没什么好说的=w=(但是要保持格式)题目(原样例实在是太水了,我自己出了几组,在程序末尾)解法一个很经典的模型:”一张无向图从1走到N的必经点” 考试的时候写出来的程序在逻辑上有点问题,不过me的代码自带容错性,卡不掉
2017-10-29 18:19:20
546
原创 [BZOJ 2761] 不重复数字 STL各种花式过题方法合集
题目传送门:【BZOJ 2761】题目大意: 多组数据。每组数据给出 N 个数组成的数列,要求把其中重复的去掉,只保留第一次出现的数。 例如,当前数据给出的数列为 1 2 18 3 3 19 2 3 6 5 4,其中 2 和 3 有重复,去除后的结果为 1 2 18 3 19 6 5 4。 要求按顺序输出去掉重复数后的数列。(1 ≤ N ≤ 50000,数据量大)题目分析:做了太多的难题?来这里
2017-10-29 00:31:31
350
原创 [BZOJ 1925][SDOI 2010] 地精部落 DP/递推
题目传送门:【BZOJ 1925】题目大意: 我们认为 n 个位置的高度形成了 1 到 n 的一个排列,这个排列要么满足奇数项的高度比相邻位置都大,要么满足偶数项的高度比相邻位置都大(即:一高一低型)。给定 n,求出符合条件的排列数对 P 取模的值。(3 ≤ n ≤ 4200,P ≤ 109^9)题目分析:这道题是我认为非常好的题了,它的解题关键就在于想到 DP/递推转移方程式。如题,看到这道题,我
2017-10-27 11:04:01
436
原创 [BZOJ 4726] Sabota? 树形DP+贪心思想
题目传送门:【BZOJ 4726】本题为权限题,下面有详细题意题目大意:公司有 n 个人,(除老板以外)每个人有且只有一个直接上司。公司里有一个叛徒(未给明)。若一个人的下属(直接或者间接,不包括他自己)中叛徒占的比例超过 x,他和他的所有下属都会变为叛徒。求出叛徒的个数不会超过 k 的情况下最小的 x。(本题为 SPJ)输入的第一行包含两个正整数 n , k(1 ≤ k ≤ n ≤ 5*105^5
2017-10-26 17:18:49
356
原创 [BZOJ 1028][JSOI 2007] 麻将 模拟+贪心思想
题目传送门:【BZOJ 1028】题目大意: 这里,我们考虑一种特殊的麻将。在这种特殊的麻将里,没有字牌,花色也只有一种。但是,序数不会被限制在 1 到 9 的范围内,而是在 1 到 n 的范围内。同时,也没有每一种牌恰好四张的限制。一组和了的牌由 3m + 2 张牌组成,其中两张组成对子,其余 3m 张组成三张一组的 m 组牌,每组须为顺子(连续的三张牌)或刻子(相同的三张牌)。现给出一组 3m
2017-10-25 20:57:48
535
原创 埃及分数问题 迭代加深搜索(IDDFS)
题目传送门:【CodeVS 1288】题目大意:在古埃及,人们使用单位分数的和(形如1/a的分数, a是自然数)表示一切有理数。 如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。 对于一个分数a/b,表示方法有很多种,但是哪种最好呢? 首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越好。 如: 19/45=1/3 + 1/12 + 1/
2017-10-24 14:25:37
1531
原创 [HDU 2089] 不要62 数位DP(记忆化搜索)
题目传送门:【HDU 2089】题目大意:多组数据。求给定区间 [n,m] 中,不含数字串“4”或“62”的数的个数。(0 < n ≤ m < 1000000) 当输入为 n=m=0 时表示输入结束。题目分析:本人真正写的第一道数位 DP 题就是它了。 这道题应该是裸的数位 DP。题目中让你求区间中不含“4”或“62”的数的个数,如果我们用记忆化搜索的思想,那么在我们 DFS 的时候,参数里面还
2017-10-18 19:55:54
574
原创 [POJ 1144] Network Tarjan算法求割点
题目传送门:【POJ 1144】题目大意:有 n 个点(1 ≤ n ≤ 100),每个点之间都有相连的边。问图中有多少不同的割点。题目分析:模板题。直接用 Tarjan算法求割点即可。 具体操作:void tarjan(int u,int fa) //fa 表示父节点这道题输入很奇怪啊……真的是读不懂……下面附上代码:[cpp] view plain copy print?#include<cs
2017-10-15 22:18:32
334
原创 [HDU 4738] Caocao's Bridges Tarjan算法求桥
题目传送门:【HDU 4738】题目大意: 多组数据。给出一个含有 n 个点和 m 条边的无向图(1 ≤ n ≤ 1000,1 ≤ m ≤ n2^2),现在,你要找出一条边,使得删除这条边之后,整个图变得不连通;找出满足的边里权值最小的那条边并输出结果,找不到则输出 -1。输入为两个 0 时结束。题目分析:模板题。题目大意已经十分明确,直接使用 Tarjan 算法求桥,然后维护最小权值即可。 具体
2017-10-15 22:12:03
359
原创 [POJ 1275] Cashier Employment 差分约束系统
题目传送门:【POJ 1275】题目大意: (摘自 http://blog.csdn.net/wangjian8006/article/details/7956356)德黑兰的一家每天24小时营业的超市,需要一批出纳员来满足它的需求。超市经理雇佣你来帮他解决一个问题————超市在每天的不同时段需要不同数目的出纳员(例如,午夜只需一小批,而下午则需要很多)来为顾客提供优质服务,他希望雇佣最少数目的纳员
2017-10-15 21:11:41
465
原创 浅谈一类差分约束系统问题的解法与总结
例题——题目传送门:【POJ 1364】King【POJ 3159】Candies【POJ 3169】Layout题目大意,以及题目分析在后面。-关于差分约束系统-差分约束系统充满了玄妙之处:它在一些特定的场合下,能够把许多的限制条件转化在一起,形成一个系统类问题,极大地方便了问题的求解;另一方面,它的运用是一大难点,我们需要对原问题进行分析,建模,建立出合适的模型之后,才能使用差分约束进行
2017-10-15 16:01:47
447
原创 [BZOJ 4562] 食物链 拓扑排序+递推
题目传送门:【BZOJ 4562】题目大意:现在给你 n 个物种和 m 条能量流动关系(1 ≤ N ≤ 100000,0 ≤ m ≤ 200000),求其中的食物链条数。物种的名称从 1 到 n 编号,M条能量流动关系形如(a1 b1),(a2 b2),(a3 b3)……(am-1 bm-1),(am bm) 其中(ai bi)表示能量从物种 ai流向物种 bi。注意单独的一种孤立生物不算一条食物
2017-10-12 19:16:47
754
原创 [POJ 1201] Intervals 差分约束系统
题目传送门:【POJ 1201】题目大意:给定一个长度为 n 的序列(1 ≤ n ≤ 50000),序列中所有数字都为非负数且不相同。 题目将会以一些三元组 [a,b,c] 对这个数列进行描述,表示第 i 个序列中数值在 [ai_i,bi_i] 之间的数字至少有 ci_i 个。 询问使得所有条件都成立的序列长度最短是多少。(0 ≤ ai ≤ bi ≤ 50000,1 ≤ ci ≤ bi - a
2017-10-12 16:43:38
475
原创 [POJ 1041] John's trip Fleury算法求欧拉回路
题目传送门:【POJ 1041】题解在题意下面题目大意:给你一个无向图,一共有 m 个点,n 条边(1 ≤ m ≤ 44,1 ≤ n ≤ 1995),每个点连接着最多不超过 44 条边,每条边都恰好连接两个点。每个点和每条边都有自己的编号,并且任意两个点/两条边的编号不同。现在,Johnny 想要遍历这个无向图,并且要使每一条边都恰好地被走一次。输入多组数据,每组数据包含三个整数 x , y , z
2017-10-11 19:52:41
562
原创 [BZOJ 1833] count 数字计数 数位DP(附数位DP总结)
题目传送门:【BZOJ 1833】题目大意:给定两个正整数 a 和 b,求在 [a,b] 中的所有整数中,每个数码 (digit,指 0-9 ) 各出现了多少次。其中 a ≤ b ≤ 1012^{12}。题目分析:真正的题解在下面,前面为总结。由题,观察这道题的题目性质及数据范围,那么,这道题用线性的 for 一遍肯定是不行的了;于是,我们考虑缩小数据处理范围。又因为这道题满足“前缀和相减”的性质,
2017-10-11 12:15:47
1984
原创 [BZOJ 3884] 上帝与集合的正确用法 欧拉定理
涨知识了……2 的无穷大次方,看似无穷无尽……真是玄妙……妙哉,妙哉……**题目传送门:**[【BZOJ 3884】](http://www.lydsy.com/JudgeOnline/problem.php?id=3884)----------**题目大意:**多组测试数据。输入整数 p,求$$2^{2^{2^{2^{2^{...}}}}}(无穷多个2) \mod p $$其中1 ≤ p ≤
2017-10-01 23:47:19
383
原创 [BZOJ 2818] Gcd 线性筛+欧拉函数前缀和
题目传送门:【BZOJ 2818】题目大意:输入整数 N,求 1 ≤ x , y ≤ N 且 gcd ( x , y ) 为质数的数对 ( x , y ) 的数目。其中 1 ≤ N ≤ 10710^7。题目分析:由题,欲求 gcd ( x , y ) = p(1 ≤ x , y ≤ N,p 为质数),根据 gcd 的性质, 我们可将其转化一下,变成:求 gcd ( x , y ) = 1(1 ≤
2017-10-01 15:47:34
486
原创 [BZOJ 4034][HAOI 2015] 树上操作 树链剖分+DFS序
题目传送门:【BZOJ 4034】题目大意:有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个节点 x 到根的路径中所有点的点权和。题目分析: (经实验证明,本人的查错能力越发低下,又花了三个小时来做这道题)由题,结合树链
2017-10-01 00:58:06
312
原创 [POJ 1715] Hexadecimal Numbers 求排列数/数位DP
题目传送门:【POJ 1715】题目大意: 输入一个正整数 n,求第 n 大的不超过 8 位的各位数字不同的 16 进制数。注意,最后得到的 16 进制数不含前导 0(即:前面的 0 可以重复)。保证输入合法。样例输入:11 样例输出:FEDCBA87题目分析: (mmp浪费时间浪费生命的辣鸡排列组合题,又耗我一下午)由题,这道题看起来可以根据 n 与每一位数的关系暴力求出每一位数的值,但这样做
2017-09-29 17:46:30
480
原创 [BZOJ 2243][SDOI2011] 染色 树链剖分 模板题
题目传送门:【BZOJ 2243】题目大意:给定一棵有 n 个节点的无根树和 m 个操作,操作有2类: 1、将节点a到节点b路径上所有点都染成颜色c; 2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“112221”由3段组成:“11”、“222”和“1”。题目分析: (说好的是一道模板题,结果花了本人 4 个小时修改之后的线段树) 如题,通常来讲,询问一棵树上的节
2017-09-29 11:42:32
336
原创 [BZOJ 4569][SCOI 2016] 萌萌哒 区间并查集(ST表思想)
题目传送门:【BZOJ 4569】题目大意: 有一个长度为 n 的大数。告诉你一些限制条件,每个条件表示为四个数,L1,R1,L2,R2,即两个长度相同的区间,表示区间内对应的数相同。比如 n=6 时,某限制条件 L1=1,R1=3,L2=4,R2=6,那么 123123,351351 这两组数均满足条件,但是 12012,131141 这两组数不满足条件,前者数的长度不为 6,后者第二位与第五位不
2017-09-26 21:43:22
502
原创 [BZOJ 3098] Hash Killer II
题目传送门:【BZOJ 3098】题目大意:(见最后)题目分析: 这道题让你卡掉 VFleaKing 的字典序哈希的代码。 其实这道题的 HINT 已经写得很清楚了:如果一个房间里有 23 个或 23 个以上的人,那么至少有两个人的生日相同的概率要大于 50%;这就是著名的生日悖论。 应用这个结论,我们可以利用“两个集合相交”问题的原理生成散列函数碰撞,达到目的的攻击称为生日攻击,也称为平方根
2017-09-26 08:24:56
835
原创 [BZOJ2440] 完全平方数 莫比乌斯函数+容斥+二分
题目传送门:【BZOJ 2440】题目大意:多组数据,求第 k 个不含平方数因子的数。(T ≤ 50,1 ≤ k ≤ 109^9)题目分析: 一看题目中求出不含平方数因子的数,马上就能想到,它很有可能和 μ(x) != 0 有关。(这里的 x 为任意一整数)由题,由于 k 最大为 109^9,线性算法(例如暴力扫一遍求出第 k 个这样的数)时间复杂度无法承受,于是考虑二分。这时,我们需要对题目进行
2017-09-25 09:50:02
358
原创 NOIP2016 换教室
题解在下面题目大意:对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的 课程。 在可以选择的课程中,有 2n 节课程安排在 n 个时间段上。在第 i ( 1 ≤ i ≤ n )个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先被安排在教 室 ci 上课,而另一节课程在教室 di 进行。 在不提交任何申请的情况下,学生们需要按时间段的顺序依次完成所有的
2017-09-02 14:39:24
589
原创 NOIP2016 组合数问题
题目大意:组合数CmnC_n^m表示的是从 n 个物品中选出 m 个物品的方案数。举个例子,从(1 , 2 , 3)三个物品中选择两个物品可以有( 1 , 2 ) , ( 1 , 3 ) , ( 2 , 3 ) 这三种选择方法。根据组合数的定 义,我们可以给出计算组合数的一般公式: Cmn=n!m!(n−m)!C_n^m=\frac {n!}{m!(n-m)!} 其中 n! = 1 × 2 ×
2017-08-25 20:45:52
713
原创 [BZOJ 1823] 满汉全席 2-SAT
题目传送门:【BZOJ 1823】题目大意: ……为了招收新进的厨师进入世界满汉全席协会,近日该协会将举办满汉全席大赛。协会将派遣许多会员当作评委,为的就是要在参赛的厨师之中,找到满汉料理界的明日之星。每位参赛的选手可以得到 n 种菜品材料,选手可以自由选择用满式或是汉式料理将该材料当成菜肴。共有 m 位评审员分别把关,每一位评审员都有两种喜欢的菜品种类。只要参赛者能在评审员所喜爱的两种菜品中,做出
2017-08-10 00:13:21
372
原创 [POJ 3207] Ikki's Story IV - Panda's Trick 2-SAT
题目传送门:【POJ 3207】题目大意: Liympanda 有一个魔法圆环,他把这个圆环放在一个平面上。圆环上有 n 个点:0,1,2,…,n-1。Evil panda 声称他要连接圆环上的 m 对点。为了连接两个点,Liympanda 需要把这条连线整个地放在圆的内部,或者是放在圆的外部。Liympanda 告诉你,任意两条(圆外和圆内的)连线都不能相交,每个点都最多只会连上一条线。现在他想让
2017-08-08 09:51:21
384
原创 [BZOJ 1059] 矩阵游戏 Hungary算法
题目传送门:【BZOJ 1059】题目大意:小 Q 很喜欢玩矩阵游戏。矩阵游戏在一个 N * N 黑白方阵进行。每次可以对该矩阵进行两种操作:行交换操作:选择矩阵的任意两行,交换这两行(即交换对应格子的颜色)列交换操作:选择矩阵的任意行列,交换这两列(即交换对应格子的颜色)游戏的目标,即通过若干次操作,使得方阵的主对角线(左上角到右下角的连线)上的格子均为黑色。对于某些关卡,小 Q 百思不得其解,以
2017-08-05 00:31:24
432
原创 [HDU 1054] Stragetic Game Hungary算法求最小点覆盖
题目传送门:【HDU 1054】题目大意: Bob喜欢玩电脑游戏,尤其是策略游戏,但是有时候他不能很快地找到答案。现在他正面临着一个困难。他必须守护一个中世纪古城,而这个古城内的道路是一棵树。他想要派最少的守城卫士到每个节点上,使这些卫士能够与每条边都相邻。你能帮他解决吗?输入多组数据。每组数据第一行有一个整数 N ( 0 < N ≤ 1500 ),代表古城内的节点数量。之后 N 行,每行输入两个数
2017-08-04 11:59:15
397
原创 [POJ 3041][USACO 2005] Asteroids Hungary算法求最小点覆盖
题目传送门:【POJ 3041】题目大意:贝茜想驾驶她的飞船穿过危险的小行星群。小行星群是一个 N * N 的网格 (1 ≤ N ≤ 500),在网格内有 K 个小行星 ( 1 ≤ K ≤ 10000)。幸运地是贝茜有一个很强大的武器,一次可以消除所有在一行或一列中的小行星。这种武器很贵,所以她希望尽量地少用。给出所有的小行星的位置,算出贝茜最少需要多少次射击就能消除所有的小行星。输入第一行为 N
2017-08-04 11:41:06
391
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人