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个数最多的方案。比如:

  1. 19 = 2 + 9 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 方案一
  2. 19 = 18 + 1 方案二
  3. 两者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的更多相关文章

  1. BZOJ 1020 [SHOI2008]安全的航线flight

    1020: [SHOI2008]安全的航线flight Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 847  Solved: 286[Submit][ ...

  2. 【BZOJ】1029: [JSOI2007]建筑抢修(贪心)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1029 按右端点排序后依次加入,并且每一次看是否能被修筑,如果能就修:否则查找原来修过的,如果原来修过 ...

  3. 【BZOJ 1020】 [SHOI2008]安全的航线flight

    [题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1020 [题意] [题解] 二分+判断点是否在多边形区域内+计算点到直线的最短距离 对于 ...

  4. BZOJ 1020 安全的航线flight

    Description 在设计航线的时候,安全是一个很重要的问题.首先,最重要的是应采取一切措施确保飞行不会发生任何事故,但同时也需要做好最坏的打算,一旦事故发生,就要确保乘客有尽量高的生还几率.当飞 ...

  5. 【BZOJ】【1020】【SHOI2008】安全的航线flight

    计算几何/二分/迭代/搜索+剪枝 写三个tag可能是因为从哪个方向来理解都可以吧…… 我完全不会计算几何所以抄了ydc的代码 题解:http://ydcydcy1.blog.163.com/blog/ ...

  6. BZOJ 1029 建筑抢修 贪心+堆

    又搞了一晚上OI,编了两道BZOJ和几道NOI题库,临走之前写两篇感想 noip越来越近了,韩大和clove爷已经开始停课虐我们了... 1029: [JSOI2007]建筑抢修 Time Limit ...

  7. 【BZOJ】【1029】【JSOI2007】建筑抢修

    贪心 按T2(完成时限)排序,然后从前往后依次枚举 如果sum+a[i].t1<=a[i].t2则加入 如果来不及修这个建筑: 如果当前这个建筑的维修时间t1比之前修过的建筑中耗时最长的耗时短, ...

  8. [BZOJ 1029] [JSOI2007] 建筑抢修 【贪心】

    题目链接:BZOJ - 1029 题目分析 使用一种贪心策略. 现将任务按照deadline从小到大排序. 然后枚举每一个任务,如果当前消耗的时间加上完成这个任务的时间不会超过这个任务的deadlin ...

  9. 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 ...

  10. BZOJ 1029 建筑抢修(贪心堆)

    原题代号:BZOJ 1029 原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1029 原题描述: 建筑抢修 小刚在玩JSOI提供的一个称之为 ...

随机推荐

  1. s3c2440栈分配情况(fl2440裸机 stack)

    //2440INIT.S ;The location of stacks UserStack EQU (_STACK_BASEADDRESS-0x3800) ;0x33ff4800 ~ SVCStac ...

  2. [Swust OJ 795]--Penney Game

    题目链接:http://acm.swust.edu.cn/problem/795/ Time limit(ms): 1000 Memory limit(kb): 65535   Description ...

  3. BZOJ 1677: [Usaco2005 Jan]Sumsets 求和( dp )

    完全背包.. --------------------------------------------------------------------------------------- #incl ...

  4. windows7 安装python

    首先去Python官网,https://www.python.org 找到downloads,我这里系统是win7 x64,下载的是最新版本3.4.2 下载完成后有个msi文件,选择文件安装目录,一路 ...

  5. python中mcmc方法的实现

    MCMC方法在贝叶斯统计中运用很多,MIT发布的EMCEE是实现的比较好的.介绍页面在下面.源代码中examples里的代码可以帮助理解各种功能,特别是line.py 列出了最小二乘法,最大似然法和M ...

  6. hdoj 2222

    http://acm.hdu.edu.cn/showproblem.php?pid=2222 第一道 AC自动机.....trie树的建立 和 AC自动机的查询,,可作模版... 解题思路:AC的应用 ...

  7. IE 兼容性问题

    1.IE6-IE7 可能会有2个class属性,真TMD蛋疼,一个是初始的,后来的是js赋值的 2.不同浏览器的标签默认的margin和padding不同 解决方法: * { margin:0; pa ...

  8. c++继承构造子类调用父类构造函数的问题及关于容器指针的问题及当容器里储存指针时,记得要手动释放

    看下面的一个问题: class Person { private: string name; public: Person(const string& s=""){ nam ...

  9. asp.net插入sql server 中文乱码问题解决方案

    创建数据库的代码---创建promary表 create table promary ( proID int primary key, proName varchar(50) not null ) 出 ...

  10. redhat6.3安装matlab运行时MCR7.8,初步测试ok

    redhat6.3安装完matlab2008a后在目录$MATLAB_HOME/toolbox/compiler/deploy/glnxa64中有MCRInstaller.bin 使用这个安装MCR即 ...