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提供的一个称之为 ...
随机推荐
- UVa----------1594(Ducci Sequence)
题目: 1594 - Ducci Sequence Asia - Seoul - 2009/2010A Ducci sequence is a sequence of n-tuples of inte ...
- JavaSE学习总结第18天_集合框架4
18.01 Map集合概述和特点 Map接口概述:将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值 Map接口和Collection接口的不同 1.Map是双列的,Coll ...
- JS 控制 form是否提交表单
问题背景:用php删除数据,希望在点击“删除”(button)的时候JS弹出confirm来确认是否删除. 此段代码为php中的form: <form action="?form=de ...
- PHP 导入excel
db.php为数据库操作类, $config为数据库配置,PHPExcel版本为PHPExcel_1.8.0, PHP代码: header("Content-type:text/html; ...
- python中的map,filter,zip函数
map() Return an iterator that applies function to every item of iterable, yielding the results 例如: a ...
- 【充电器】小米手机2S电池座充——小米手机官网
ligh@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.3 [充电器]小米手机2S电池座充--小米手机官网 小米手机2S电池座 ...
- <深入理解C指针>学习笔记和总结 第四章 指针和数组
数组是一个什么玩意: 数组和指针我的理解,有同样之处也有不同之处.因有同样之处,因此一些资料上说,数组和指针本质是同样的.因有不同之处,因此也有一些资料上说,数组和指针是不一样的. 同样之处: 数组名 ...
- 《数据通信与网络》笔记--虚电路网络:帧中继和ATM
在之前的文章中已经介绍过虚电路交换,详细请参见:http://blog.csdn.net/todd911/article/details/9069447 这边介绍下使用虚电路交换的2中WAN技术:帧中 ...
- C++拾遗
1三个概念 字符串字面值是一串常量字符(是一个常量),字符串字面值常量用双引号括起来的零个或多个字符表示,为兼容C语言,C++中所有的字符串字面值都由编译器自动在末尾添加一个空字符.字符串字面值的类型 ...
- Tomcat 内存设置
大型项目或者使用了SSH 的话, Tomcat 可能会报 java.lang.OutOfmemoryError: PermGen Space Windows: 在 bin/catlina.bat 最上 ...