题目链接:http://codeforces.com/problemset/problem/371/C
这题一开始用的贪心,但WA掉了。
正解是二分一个答案,查看能否用现有的钱买到相应的食材。
题目链接:http://codeforces.com/problemset/problem/371/C
这题一开始用的贪心,但WA掉了。
正解是二分一个答案,查看能否用现有的钱买到相应的食材。
这题是二分+贪心,关键在于贪心策略,移走石头即合并线段,从左向右扫描一个坐标区间,如果长度合适(大于等于二分的答案)就移动左端点,不合适就固定左端点同时进行一次合并(计数器加一),如果合并次数在m以内就认为存在一个方案。
笔记主要参考:Python网络爬虫与信息提取
| 概念 | 解释 | 
|---|---|
| Tag | 标签 | 
| Name | 标签名 .name | 
| Attributes | 属性 .attrs 返回值为字典类型 | 
| NavigableString | 字符串 .string | 
| Comment | 注释 .comment | 
.parent < Tag >.parents < Generator >.contents < list > 只会列出下一层孩子节点.children < list_Iterator >用于for循环遍历,只会遍历下一层孩子节点.descendants < Generator >用于for循环遍历,会递归遍历子树所有孩子节点.next_sibling < Tag >.previous_sibling.next_siblings < Generator >.previous_siblingsJSON是一种用有类型的键值对表达信息的方式(如ss的配置文件)
| 1 | "key" : "value" | 
YAML是一种用无类型键值对表达信息的形式(如hexo的_config.yml)
| 1 | key : value | 
各自特点
<>.get() 获取某个Tag下某项属性的值<>.find_all(name, attrs, recursive, string, \*\*kwargs)id = 'link1'这样直接搜索属性<>.find_all('p', string = 'Python Course')| 1 | <>.find_all()等价于<>() | 
·· / ·– ·· ·-·· ·-·· / ·–· · ·-· ··· ·· ··· - / ··- -· - ·· ·-·· / ·· / ·– ·· -·
笔记中的解释出处:Python网络爬虫与信息提取
r = requests.get("http://www.google.com", timeout = 30)
| 对象成员 | 解释 | 
|---|---|
| r.status_code | HTTP请求的返回状态,200表示连接成功,404表示失败 | 
| r.text | HTTP响应内容的字符串形式,即,url对应的页面内容 | 
| r.encoding | 从HTTP header中猜测的响应内容编码方式,如果header中不存在charset,则认为编码方式为ISO-8859-1 | 
| r.apparent_encoding | 从内容中分析出的响应内容编码方式(备选编码方式)这种方法比较慢 | 
| r.content | HTTP响应内容的二进制形式 | 
| 异常名称 | 解释 | 
|---|---|
| requests.ConnectionError | 网络连接错误异常,如DNS查询失败,拒绝连接等 | 
| requests.HTTPError | HTTP错误异常 | 
| requests.URLRequired | URL缺失异常 | 
| requests.TooManyRedirects | 超过最大重定向次数,产生重定向异常 | 
| requests.ConnectTimeout | 连接远程服务器超时异常 | 
| requests.Timeout | 请求URL超时,产生超时异常 | 
| r.raise_for_status() | 如果r.status_code不是200,会引发异常requests.HTTPError | 
| 方法 | 解释 | 
|---|---|
| requests.request() | 构造一个请求,支撑以下各方法的基础方法 | 
| requests.get() | 获取HTML网页的主要方法,对应于HTTP的GET | 
| requests.head() | 获取HTML网页头信息的方法,对应于HTTP的HEAD | 
| requests.post() | 向HTML网页提交POST请求的方法,对应于HTTP的POST | 
| requests.put() | 向HTML网页提交PUT请求的方法,对应于HTTP的PUT | 
| requests.patch() | 向HTML网页提交局部修改求求,对应于HTTP的PATCH | 
| requests.delete() | 向HTML页面提交删除请求,对应于HTTP的DELETE | 
| 操作 | 解释 | 
|---|---|
| GET | 请求获取URL位置的资源 | 
| HEAD | 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息 | 
| POST | 请求向URL位置的资源后附加新的数据 | 
| PUT | 请求向URL位置存储一个资源,覆盖原URL位置的资源 | 
| PATCH | 请求局部更新URL位置的资源,即改变该处资源的部分内容 | 
| DELETE | 请求删除URL位置存储的资源 | 
·· / ·– ·· ·-·· ·-·· / ·–· · ·-· ··· ·· ··· - / ··- -· - ·· ·-·· / ·· / ·– ·· -·
果然Python和C/C++系的语法差别很大。。在学了C/C++之后再学Python,有种当初从Pascal转C++的既视感,相比之下C/C++转Java感觉就简单多了。
这里记录一下学习Python的笔记,其中标注了部分Python与C/C++明显差别的用法。
其中大部分Python语法解释来源于Python语言程序设计
          
          
            
·· / ·– ·· ·-·· ·-·· / ·–· · ·-· ··· ·· ··· - / ··- -· - ·· ·-·· / ·· / ·– ·· -·
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2844
这题可以转化为多重背包问题,套用二进制优化即可,可以参考《背包九讲》。
          
          
            
·· / ·– ·· ·-·· ·-·· / ·–· · ·-· ··· ·· ··· - / ··- -· - ·· ·-·· / ·· / ·– ·· -·
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1207
这题一开始考虑过用时间和坐标作为状态来着,不过没有必要,直接用地鼠的序号做状态就行了,状态转移时判断一下坐标距离是否满足条件即可。
·· / ·– ·· ·-·· ·-·· / ·–· · ·-· ··· ·· ··· - / ··- -· - ·· ·-·· / ·· / ·– ·· -·
题目链接:https://hihocoder.com/problemset/problem/1139
二分索敌值,用BFS遍历,判断能不能在规定步数内走到终点即可。注意不能用DFS(可能是因为路径非最短)。
          
          
            
·· / ·– ·· ·-·· ·-·· / ·–· · ·-· ··· ·· ··· - / ··- -· - ·· ·-·· / ·· / ·– ·· -·
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1391
根据仔细分析题意后可以找出n和坐标x, y有如下关系:
| n%4 | x | y | 
|---|---|---|
| 0 | n/2 | n/2 | 
| 1 | n/2+1 | n/2+1 | 
| 2 | n/2+1 | n/2-1 | 
| 3 | n/2+2 | n/2 | 
枚举n求出对应的x, y并用二维的map建立索引就可以了。
          
          
            
·· / ·– ·· ·-·· ·-·· / ·–· · ·-· ··· ·· ··· - / ··- -· - ·· ·-·· / ·· / ·– ·· -·
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1285
题目给定战胜关系,求每队的排名,看起来与POJ3660很像,但前者是求出每队的排名(可能不唯一),后者是判断每一队的排名是否唯一。
这题可以用拓扑排序做,但要特别注意输出的次序是从小到大的,这里把拓扑排序的队列修改为优先队列,就能按顺序输出了。