2019.11.08【NOIP提高组】模拟 A 组

今天的比赛终于没有那么难看了,但还是有一些值得改进的地方。

 

T1:这时一道水题,但是我想复杂了。

首先我们把所有点按y从大到小排序,然后对于每一个点我们只需要考虑哪些y值比它的的就行了。

我们枚举每一个点,然后把它当做原点,接着把y值比它大的点按极角排序,最后用叉积来算三角形的面积即可。

这里可以用前缀和优化成O(n^2)的。

 

总结:

1、这一类计算几何一般要想到极角排序和叉积。

2、在极角排序时,一二象限的极角值时正数,三四象限的极角值时负数。这是因为一条射线的极角值取决于(1,0)这条射线转到它的度数及方向。在极角排序时要注意这个的影响。

 

T2:首先发现这个图是一个简单环套树。

对于最大值,我们发现一个入度为0的点一定是要保留的。同时,对于一个所有点的入度都为1的简单环,也至少有一个点要保留。这样我们就求出了最大值。

对于最小值,我们用拓扑排序。对于一个入度为0的点,它是必保留的,所以它指向的点是必须要干掉的。这样一来,我们只需在拓扑的时候确定哪些点一定会被干掉,把剩下保留的点加入队列继续拓扑即可。

 

T3:这道题的题目大意可以转换为求一个前缀AB和后缀BA,使得它们的长度最大。

设f[i]表示A为1~i时B的最大长度,通过画图我们发现:f[i+1]>=f[i]-2

变形后得:f[i]<=f[i+1]+2

接着我们倒着求f,每次从f[i+1]+2开始枚举,枚举倒第一个成立的答案就是f[i]。

用哈希判断两个字符串是否相等就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值