

P7542 [COCI2009-2010#1] MALI 题解
基本思路:贪心,每次将 $A$ 中的数从大到小与 $B$ 中的数从小到大一一对应组合,即 $A$ 中最大的数与 $B$ 中最小的数组合, $A$ 中第二小的数与 $B$ 中第二大的数组和,其中最大的数对即为所求。 像这样: 非常简单易懂的贪心。 但是俗话说得好,贪心不难,但是难的是证明。 非常随意的证明: 设数对 $(A_1,B_1)$ 是最大数对,下一个数对为 $(A_2,B_2)$ 。 根据我们之前的贪心思路,可知 $A_1B_2$ 而要使最大数对的最大值减小,要么将 $A_1$ 与 $B$ 中更小的数组合,要么将 $B_1$ 与 $A$ 中更小的数组合,以前一种方法为例,新的两个数对为 $(A_2,B_1)$ 和 $(A_1,B_2)$ 很容易发现 $A_2+B_1>A_1+B_..


P7541 DOBRA の题解
题意:给定一个只包含下划线和大写字母的字符串,将下划线全部换成大写字母,问有多少种填法能使这个字符串不包含 3 个及以上连续的元音字母、3 个及以上连续的辅音字母,并且至少包含一个大写字母 L。 这道题可以用深搜做的,从左到右进行遍历,遇到一个下划线搜一次并进行讨论,由于最多只有十个下划线,因此并不会TLE。 附代码: #include<bits/stdc++.h> using namespace std; long long dfs(int n); string s; int a[105],lens,l,x; int main(){ cin>>s; lens=s.size();//字符串长度 for(int i=0;i<lens;i++){ if(s[i]=='..


P6607 [Code+#7]蚂蚁 の 题解
蒟蒻第一篇题解 传送门 P6607 [Code+#7]蚂蚁 首先,由于所有蚂蚁始终在运动且不会陷入死循环,因此所有蚂蚁都能爬到终点(也就是说题目的-1是拿来误导的) 接下来考虑穿过的情况,由于相遇会立刻反向,点与点之间的相对位置不变,可以看作存在一种特殊的”传递”(虽然时间不同所对的点也不同) example:(图丑不要在意) 因此两点相遇前后一秒也可以看作两点相互穿过 综合起来可以发现,假如有一点向东(或西)走,且距离东(或西)x个单位,那么x个单位后必有一个点到达东边(或西边)端点。因此各个点的到达时间都可以确定,只需依次对应输出即可。 那么怎么对应呢?以第一个点为例,若向东走,则所需时间即为p[i]。若向西走,没有另一个向东走的点,则为l-p[i];有点向东走的话,t即为p[向东走的第一个..