3828. 三角形计数 3829. ZCC loves Isaac 3830. 字符消除

3828

给定n个点的坐标(0<=xi,yi<=10000)求选出任意三个点能组成的三角形的总面积。

题解

太naive了

枚举三角形的y最小的点,把剩余的点按角度排序

然后随便算,可以用叉积求前缀和,或者累加x和y用旋转公式算

3829

表箱关有一个房间非常可怕,它由n个变异天启组成。
每个天启都会在进入房间后吐出绿弹并炸向某一个位置且范围内只有一个天启。若该位置的天启已经死亡则没有事情发生,否则该位置的天启会死亡。每个天启只能且必须吐一次绿弹(除非在它吐弹以前他就挂了)。
绿弹的飞行速度很快,在某个绿弹落地之前不会有新的绿弹被吐出。
虽然房间的天启位置和吐弹位置固定,但是吐弹顺序是随机的,所以ZCC不能很好地制定策略。
现在ZCC想知道,最少和最多有几个天启被干掉。

题解

给出的是一棵环套树

贪心,干掉最少的话就让当前的尽可能存活

因为如果干掉当前的来保证后面的存活,不比干掉后面的更优

干掉最多的就随便搞,如果环上的有一个可以被环外的干掉就可以干掉除度数为0的

否则会少干掉环上的一个(自环除外)

如果一个环上一个都没被干掉,那么环上被干掉的最少为(长度+1)/2

不然就会分成若干段,每段被干掉的最少为 长度/2

3830

给出一个串,求最长同构前后缀

题解

一个存在同构前后缀的串必定能表示为ABCBA的形式

枚举A的长度i,设f[i]表示当A长度为i时B的最长长度

有f[i]<=f[i+1]+2,因为如果f[i]>f[i+1]+2,那么把i时的B删掉头尾的长度必然>f[i+1]

从后往前枚举,每次从f[i+1]+2往下枚举f[i],hash判断

上一篇:ContentProvider官方教程(3)ContentResolver查询、遍历 示例


下一篇:Highcharts结合PhantomJS在服务端生成高质量的图表图片