摘要: 原题链接 题解 如果一个数的存量大于1,那么alice可以不着急去拿,只要在bob拿之后再拿就可以了,所以alice要先去拿存量少(==1)的数且尽可能先拿小的 所以可以从0开始遍历直到遇到数字的存量等于零或者第二次遇到存量为一的数 code #include<bits/stdc++.h> #def 阅读全文
posted @ 2024-03-18 01:08 纯粹的 阅读(71) 评论(0) 推荐(0)
摘要: 原题链接 题解 一看无从下脑,不妨造几个样例观察观察 1 2 3 4 1 2 3 4 此时两边取相同值即可 此时发现无论前半边数字的排列顺序是什么,只要是那几个数字,就不会影响答案 所以交换前半边和后半边的数字会影响答案 1 2 1 4 3 2 3 4 观察样例发现,交换之后,两边会出现一对相同的数 阅读全文
posted @ 2024-03-18 01:00 纯粹的 阅读(32) 评论(0) 推荐(0)
摘要: 原题链接 题解 1.数字最多两位,所以数字的拆解方案惟一 2.数字拆开一定变小,所以最后一个数不拆 3.如果拆开,代表当前数大于前一个数,此时拆开要满足几点要求:后面的个位数不大于前一个数,前面的个位数不大于后一个个位数 code #include<bits/stdc++.h> using name 阅读全文
posted @ 2024-03-18 00:50 纯粹的 阅读(57) 评论(0) 推荐(0)
摘要: 原题链接 题解 利用向量叉积的性质 对于一个组向量而言,如果a向量在夹角的右边,那么 \(a\times b>=0\) 而凸多边形,边是往左凸的,所以一定都是正的 code #include<bits/stdc++.h> using namespace std; struct { int x,y; 阅读全文
posted @ 2024-03-18 00:36 纯粹的 阅读(25) 评论(0) 推荐(0)
摘要: 原题链接 题解 考虑利用边界和墙来封锁坏人,封锁圈越大,好人的空间就越小。如果一个封锁圈是合理的,那么比他小的封锁圈也一定是合理的,无限小直到包裹坏人的四周 所以贪心地在坏人四周放墙,如果放的过周围有好人在周围,或者有好人但是把终点放了,或者从终点出发无法到达所有的好人(从多元深搜变成了单源广搜) 阅读全文
posted @ 2024-03-18 00:15 纯粹的 阅读(24) 评论(0) 推荐(0)