bzoj 1020-1029
1020 SHOI2008 安全的航线flight
这题的代码写了很久,主要是因为几何题的东西都忘得差不多了。除去写代码的2个小时,今晚又调了一晚上,终于AC了。
这题的做法还是很有参考价值的。
最简单的方法:
二分一个答案\(ans\),把小岛向外变大\(ans\)的距离。这个“变大”可以把点变成圆,把线段变成矩形。然后判断线段(航线)是否被完全覆盖,此做法巨烦。
除了上面所说的做法外,还百度到了一篇ydc的题解:http://ydcydcy1.blog.163.com/blog/static/21608904020131492229367/ 《迭代思想的应用》(莫涛)这篇论文硬是没找着。
1021 SHOI2008 Debt 循环的债务
一道动态规划。注意到钱的总数比较小,所以设\(f(i,a,b)\)为使用前i中钞票,使得Alice有\(a\)元,Bob有\(b\)元,Cynthia有\(sum-a-b\)元(\(sum\)是钱的总数)的最小交换次数。
注意到,如果Alice给了Bob\(X\)元,Bob又给了Cynthia\(X\)元那么干脆让Alice给Cynthia\(X\)元,因为题目要求交换次数最小。所以转移的时候只有\(6\)种可能(用ABC代替他们的名字):
1.A->B,A->C
2.B->A,B->C
3.C->A,C->B
4.B->A,C->A
5.A->B,C->B
6.A->C,B->C
时间复杂度\(O(6 \cdot 1000^2 \cdot x^2)\),x是转移时的钞票数量,理论上是过不了的,但。。。。
1022 SHOI2008 小约翰的游戏John
传说中的anti-nim。判断方法:
根据《组合游戏略述——浅谈SG游戏的若干拓展及变形》(贾志豪)的说法:
设条件一为SG的值为零;
条件二为某单一游戏的SG大于一。
那么,当且仅当 其中一个条件满足 而 另外一个不满足,那么就是必胜态。
证明也很容易,利用数学归纳法即可。
1024 SCOI2009 生日快乐
暴搜即可。
1025 SCOI2009 游戏
题目易转化为:将\(n\)进行整数拆分,问:拆分成的若干整数的lcm有多少种可能?
QAQ
如果有两种拆分方案的lcm相等,我们只取1个数最多的方案。比如:
19 = 2 + 9 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 方案一
19 = 18 + 1 方案二
两者lcm都是18。
我们统计方案一的。
这样的话,如果lcm的结果为$ {p_1}^{q_1} {p_2}^{q_2} {p_3}^{q_3} ...\(,那么我们统计的拆分方案一定为:
\) n = {p_1}^{q_1} + {p_2}^{q_2} + {p_3}^{q_3} + 1 + 1 + ...$(也可能没有+\(1\),反正+\(1\)是为了刚好凑成\(n\))。
这样就可以dp了,dp过程不再累赘叙述!
1026 SCOI2009 windy数
DP,记\(f(i,upper,isZero,lastNum)\),分别表示第几位、有没有上界、是否为\(0\)、上一个填的数字。
1027 JSOI2007 合金
样例居然是错的,囧。
QAQ
高一的数学数学看起来学得不好啊QAQ。
不妨把合金表示为向量\((x,y,z)\),\(x,y,z\)就是读入的那个合金比例。
如果是两个材料合起来,能够合成怎样的合金呢?
设两种材料分别为\(\vec a\)和\(\vec b\),成品为\(\vec c\),使用第一种材料的比例是\(p(0\leq q \leq 1)\),那么有$$\vec c = p\vec a + (1-p)\vec b$$
这说明\(\vec c\)和\(\vec a - \vec b\)是共线的,并且点!由于无论怎样合成,\(x+y+z=1\),所以可以去掉一维,变成平面上的点。
如果是三种(或以上)的材料,可以合成的成品就是一个面(凸包)!
问题就变为:有一些白点和一些黑点,需要选出最少的白点,使得所有的黑点都在白点的凸包里。
这个问题居然可以转化成图论:
枚举两两白点(设为点\(A\)和点\(B\))形成的向量,如果其他所有的黑点都在向量的“左边”,那么就连一条有向边\(A\)->\(B\),如果都在右边,连一条有向边\(B\)->\(A\),然后在图的长度最小的环的长度就是答案,不过要特判几个东西:
- \(n=0\)的情况,答案为\(0\)
- 需要合成的点都在一个点上,答案为\(1\)
- 需要合成的点都在一条直线上,特判答案为\(-1\)还是\(1\)
1028 JSOI2007 麻将
以前做过这道题,不过一直wa,看了看代码,原来是判断胡牌错了,根据贪心,应该先取刻子(即完全相同的三张牌),再取顺子(即同花色且序数相连的序数牌)。
1029 JSOI2007 建筑抢修
考虑一个更简单的问题:判断是否能把所有的建筑抢修完?
判断方法应该不难想到:按T2从小到大排序,扫描一遍计算即可。
这个贪心证明也不难,先假设它们之中存在:对于$ i < j \(,有\) T2_i > T2_j \(,然后发现交换\)i\(和\)j$后必然不会更差!
这样子的话,我们就先按T2排序。接着我想到做个DP:设\(f(i,j)\)表示前\(i\)个建筑抢修\(j\)个需要的最少时间。当然这个DP是\(n^2\)的。
QAQ
其实我们采用“后悔”的方式贪心就可以了。
先按T2从小到大尝试添加一个建筑,有两种情况:
- 这个建筑可以抢修,那么就抢修,并将答案加一。
- 这个建筑建造花费的时间比前面某一个已经抢修的建筑花费的时间要少,那么我们“后悔”抢修之前的那个建筑,替换成现在的建筑。
bzoj 1020-1029的更多相关文章
- BZOJ 1020 [SHOI2008]安全的航线flight
1020: [SHOI2008]安全的航线flight Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 847 Solved: 286[Submit][ ...
- 【BZOJ】1029: [JSOI2007]建筑抢修(贪心)
http://www.lydsy.com/JudgeOnline/problem.php?id=1029 按右端点排序后依次加入,并且每一次看是否能被修筑,如果能就修:否则查找原来修过的,如果原来修过 ...
- 【BZOJ 1020】 [SHOI2008]安全的航线flight
[题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1020 [题意] [题解] 二分+判断点是否在多边形区域内+计算点到直线的最短距离 对于 ...
- BZOJ 1020 安全的航线flight
Description 在设计航线的时候,安全是一个很重要的问题.首先,最重要的是应采取一切措施确保飞行不会发生任何事故,但同时也需要做好最坏的打算,一旦事故发生,就要确保乘客有尽量高的生还几率.当飞 ...
- 【BZOJ】【1020】【SHOI2008】安全的航线flight
计算几何/二分/迭代/搜索+剪枝 写三个tag可能是因为从哪个方向来理解都可以吧…… 我完全不会计算几何所以抄了ydc的代码 题解:http://ydcydcy1.blog.163.com/blog/ ...
- BZOJ 1029 建筑抢修 贪心+堆
又搞了一晚上OI,编了两道BZOJ和几道NOI题库,临走之前写两篇感想 noip越来越近了,韩大和clove爷已经开始停课虐我们了... 1029: [JSOI2007]建筑抢修 Time Limit ...
- 【BZOJ】【1029】【JSOI2007】建筑抢修
贪心 按T2(完成时限)排序,然后从前往后依次枚举 如果sum+a[i].t1<=a[i].t2则加入 如果来不及修这个建筑: 如果当前这个建筑的维修时间t1比之前修过的建筑中耗时最长的耗时短, ...
- [BZOJ 1029] [JSOI2007] 建筑抢修 【贪心】
题目链接:BZOJ - 1029 题目分析 使用一种贪心策略. 现将任务按照deadline从小到大排序. 然后枚举每一个任务,如果当前消耗的时间加上完成这个任务的时间不会超过这个任务的deadlin ...
- HDU 1029 Ignatius and the Princess IV / HYSBZ(BZOJ) 2456 mode(思维题,~~排序?~~)
HDU 1029 Ignatius and the Princess IV (思维题,排序?) Description "OK, you are not too bad, em... But ...
- BZOJ 1029 建筑抢修(贪心堆)
原题代号:BZOJ 1029 原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1029 原题描述: 建筑抢修 小刚在玩JSOI提供的一个称之为 ...
随机推荐
- spring的常用配置
bean.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http ...
- Hibernate之工具类HibernateUtil
原创文章,转载请注明:Hibernate之工具类HibernateUtil By Lucio.Yang 1.最简单的工具类,实现SessionFactory的单例共享,session的管理 pack ...
- 第2章 Python基础语法 -- 数据类型
2.2数据类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间.基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 2.2.1 标准数据类型 在内存中存储 ...
- 转:不会定义jQuery插件,不要说会jQuery
一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写$("#"),$("."),写了几年就对别人说非常熟悉JQuery.我曾经也是这样的人 ...
- Android项目增加混淆
主要介绍向Android项目中添加混淆功能 增加混淆的原因 提高安全性,增加反编译的难度 减少APK的文件大小 实践 混淆的配置 一般情况下,app module 的 build.gradle 文件默 ...
- 字符串操作函数<string.h>相关函数strcpy,strcat,等源码。
首先说一下源码到底在哪里找. 我们在文件中包含<cstring>时,如果点击右键打开文档, 会打开cstring,我们会发现路径为: D:\Program Files\visual stu ...
- 2013 ACM/ICPC 成都网络赛解题报告
第三题:HDU 4730 We Love MOE Girls 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4730 水题~~~ #include < ...
- 【转】管理员必备的Linux系统监控工具
原文连接: 管理员必备的Linux系统监控工具 #1: top - 进程活动 top提供一个当前运行系统实时动态的视图,也就是正在运行进程.在默认情况下,显示系统中CPU使用率最高的任务,并每5秒钟刷 ...
- java--String方法
String : 字符串类型 一.构造函数 String(byte[ ] bytes):通过byte数组构造字符串对象. String(char[ ] value):通过char数组构造字符串对象. ...
- 编写存储过程导出oracle表数据到多个文本文件
1.测试表和数据: create table test(id )); begin .. loop insert into test values(k,'test'||k); end loop; end ...