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的更多相关文章

  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. (转)WINDOWS内核对象

    WINDOWS内核对象 原文地址:http://blog.csdn.net/misterliwei/article/details/976988  支持原创 一.前言 Windows中有很多像进程对象 ...

  2. r语言之散点图绘制及参数

    一个简单的例子: > plot(cars$dist~cars$speed,+ main="车位移与速度的关系",+ xlab="速度",+ ylab=&q ...

  3. django cbv

    django 提供了一系列现成的类视图,他们都继承自一个 View 基类(django.views.generic.base.View).在这个基类里实现了与 URLs 的接口(as_view).请求 ...

  4. javascript 检测密码强度

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. EAN 通用商品条形码

    商品条形码是指由一组规则排列的条.空及其对应字符组成的标识,用以表示一定的商品信息的符号.其中条为深色.空为纳色,用于条形码识读设备的扫描识读.其对应字符由一组阿拉伯数字组成,供人们直接识读或通过键盘 ...

  6. C++堆和栈的比较(7个区别)

    基础知识: 堆 栈是一种简单的数据结构,是一种只允许在其一端进行插入或删除的线性表.允许插入或删除操作的一端称为栈顶,另一端称为栈底,对堆栈的插入和删除操作被称 为入栈和出栈.有一组CPU指令可以实现 ...

  7. cocos2dx进阶学习之CCSprite

    继承关系 CCSprite -> CCNodeRGBA       ->   CCNode, CCRGBAProtocol CCTextureProtocol 从继承关系可以看出,CCSp ...

  8. 动态弹球的实现 加入了多线程技术--javaSE游戏准备工作

    任务描述:实现了动态弹球的功能,对于有弹球功能的SE游戏奠定了基础. package 运用线程技术的小球; import java.awt.*; import java.awt.event.*; im ...

  9. 使用Intel编译器获得一致的浮点数值计算结果

    使用Intel编译器获得一致的浮点数值计算结果大多数十进制的浮点数, 用二进制表示时不是完全一致的; 与此同时, 大多数与浮点数值相关的计算结果, 存在着固有的不确定性.通常, 编写浮点计算应用软件希 ...

  10. BZOJ 2435: [Noi2011]道路修建( dfs )

    NOI的水题...直接一遍DFS即可 ------------------------------------------------------------------------- #includ ...