^ A ^ B ^ C ^ D ^ E ^ | + | + | + | + | O | rank:202 =====A===== * 题意:过水已隐藏。 * 题解:过水已隐藏。 =====B===== * 题意:$n$个物品,每个有一定的价格,你一共有$m$元钱,每次可以有两种购买方式,一种是直接花对应的价格买一个物品,另一种是恰好选择$k$个物品,将它们全部购买,只用花这$k$个物品价格中的最大值,每个物品只能买一次,问最多能买多少个物品。$(2 \le n \le 2 \cdot 10^5)$ * 题解:贪心,最优方案一定是先单独买几个最便宜的,然后剩下全部连续$k$个的买直到买不了为止,排序扫一遍+二分即可。 =====C===== * 题意:试卷上有一些题,做完每道题需要耗费一定时间(一共只有两种不同的值),此外每道题还有一个时间限制,如果在某一时刻交卷,所有时间限制$\le$交卷时刻的题目必须完成。你可以在考试时间内的任意时刻交卷,问最多能完成几道题。 * 题解:考虑每个时间限制的前一秒,在优先做完所有必做题的情况下,最多还能完成几道题,枚举一遍即可。 =====D===== * 题意:交互题。猜一个只由$ab$组成的字符串,长度未知(不超过$300$)。每次可以查询一个长度不超过$300$由$ab$组成的字符串$s$,返回通过替换、删除、插入最少需要多少步可以将$s$变为目标串。设目标串的长度是$n$,要求使用不多于$n+2$询问使得最后一次询问返回的值为$0$,即询问的字符串与目标串完全相同。 * 题解:首先询问一个$a$,返回的值记为$x$。然后再询问$x+1$个$a$,如果返回的值$=x$,说明目标串全由$b$组成,直接输出即可。(这里要注意如果是$300$个$b$,那么第二次询问长度会是$301$,不符合题意,这里WA了一万年,需要进行特判)否则说明目标串$ab$都有,返回的值就是$b$的个数,然后分别将某一位设定成$b$其它位都是$a$询问$x$次,最后一个位置可以通过总数判断是否为$b$不需要再浪费一次询问,最后输出答案即可,一共$n+2$次。 =====E===== * 题意:把一个凸包进行三角剖分,给出剖分出的所有三角形的三个顶点。将这个凸包还原出来,顺时针输出所有顶点,并对上述的数个三角形进行排序使其成为一个合法的三角剖分顺序。 * 题解:第一问,观察图可以发现我们考虑输入的三角形的所有边,只出现一次的边就是原凸包上的边,因此将这些边找出来遍历一遍即可。第二问,可以发现如果一个顶点在所有输入的点中只出现了一次,那么它所在三角形一定可以是先被剖分的,然后删除这个三角形,维护每个顶点的出现次数,继续寻找只出现一次的顶点即可,可以使用队列实现。