夏令营day7总结

(Maple说我们回家一定抽机或者各种浪,反正改题/写总结什么的都是骗他的。现在就打他脸。233333)

嗯,一转眼就day7了呢。。week1就这么完结了?

今天来了一发test,然而lkb考的并不算好,也不算差。

四个小时的考试时间,四道题,最终0+71+0+70=141,rank13。
(yhf神犇0+100+50+10=160,rank8,orz。)

下面简要分析一下试题吧。

T1:平面上有 N 条直线,用方程Aix+Biy+Ci=0表示。这些直线没有三线共点的。现在要你计算出用这些直线可以构造出多少三角形?

查了一下,如果没错的话这题应该是 coi 2013-2014 round 5 原题。

由于lkb只是初一的弱菜,所以并没有学过一次函数,所以并不懂这题怎么乱搞,所以并没有做,华丽爆零。

评讲的时候听了一下,按照Maple的说法,只要注意到组成三角形的三条直线其中任意两条不能互相平行,那么先求出斜率相同的直线(也就是互相平行的直线),然后组合数学乱搞一下就好。

药丸,到时候研究一下tmk的程序再看看吧。

T2:有 n 个不同的物品,它们的编号为1 n 。现在要得到编号为1的物品。

获得一个物品有两种方式:

  1. 直接购买该物品,第 i 件物品花费的钱为ci
  2. 用两件其他物品合成所需的物品,一共有 m 种合成方式。

求最少用多少钱能获得编号为1的物品。

这题应该是2014年中山市选T2原题。

这题可以用类似spfa的bfs+迭代或者类似dijkstra的不断优化搞。

  • 如果用前一种方法,那么具体的实现就是:先把第 2 n个点入队,每次取队首元素 i ,看它能改进谁,对于每一个能被(i,j)改进的 k ,如果满足ci+cj<ck,那么更新 ck ,并把 k 入队,直至队列为空为止。最后c1就是答案。
  • 如果用后一种方法,那么具体的实现就是:每次取花费最小的物品 i ,易知它已经无法被改进(这是显然的),那么就直接用它去尝试改进别的物品,直到无法改进为止。此时算法结束,c1就是答案。

这两种算法都可以过,但是考试的时候lkb并没有想出正解,只打了个记忆化搜索:

  • 定义 f(k) 为物品 i 的最小花费,则解为f(1)
  • 对于每一对能改进 k (i,j),递归求解 f(i) f(j) ,那么就有 f(k)=min{ck,min{f(i)+f(j)}}
  • 求得 f(k) 的解后保存起来,当再次求解时可直接取之前保存的值

但是容易举出反例说明这种做法是错误的,并且时间复杂度比较高,有超时的风险。

不过最终lkb凭借这个奇怪的搜索居然骗到了71分,然而其实正解并不难实现。

T3:对于字符串 S 的前i个字符构成的子串,既是它的后缀同时又是它的前缀,并且该后缀与该前缀不重叠,将这种字符串的数量记作 numi 。求 i=1L(numi+1)

此题是 noi 2014 day2 原题。

我们来分析一下暴力的做法:枚举 i ,对于每一个i再枚举既是后缀又是前缀的的子串长度 j (范围是[1,j÷2]),然后用一重循环逐位进行比较,时间复杂度是 Θ(|S|3) 。(事实上,题目要求多组测试数据,应该还要乘上数据组数 n ,不过系数比较小,最多只有5,基本可以忽略不计。)

理论上这种算法应该可以通过30%的测试数据,但是lkb居然诡异的爆零了。zzr说,应该是没有开long long。于是lkb试着把ans改成long long,然后重测,然后

30分了。

Excuse me???

真的被自己蠢哭了哎。

下面说一下正解吧,现在知道的有两种解法:

  • 考虑简化问题,去除“该后缀与该前缀不重叠”的限制后,问题变成了一个简单的 DP —— numi=numnexti+1 。考虑限制条件 —— 我们需要对 next 数组设置同样的限制条件,并设其为 next2 。然后对于带限制的 num (设为 num2 ),发现 num2i=num2next2i+1 并不成立,观察后可发现 num2i=numnext2i+1 。(然而lkb其实并不会,这是借(chāo)鉴(xí)神犇blog的。)
  • 还有一种ex_kmp的做法,然而lkb并没有听懂。

T4:有 n 个男孩、m个女孩和 k 个宠物,给出每对男孩和女孩、男孩和宠物、女孩和宠物互相喜欢的状态(0为互不喜欢,1为互相喜欢。),求最大匹配数。每个匹配由一个女孩,一个男孩和一个宠物组成(当然要保证他们三者互相喜欢),并且每一个女孩,男孩和宠物只能在一个匹配中。

这题是hdu3121。

是的,这题的数据范围看似比较小,n,m,k20。因此lkb第一时间想到了暴力解法,直接搜索。然后加上各种玄学剪枝之后,居然奇奇怪怪的搞到了70分!

不过其实正解是最大流。不过其实lkb不会正解。233

这次考试发挥的一般,虽然骗到了点分,不过应该拿到的T2居然爆零了,这就很tm尴尬了。只能说毕竟还是too young,不过以后要避免了。

之后的夏令营,剩下的几天好好加油吧。嗯,不能再颓了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值