![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Codeforces
大 聪 明
Big Smart
展开
-
C. Boats Competition(双指针)
传送门 题意:给你含n个数字的数组,可以任意两两相加,问你最多有多少对数字的和可以是同一个数字(一个数字不可以重复使用) 分析:范围小,可以使用暴力;如果满足条件,每个数字只可以使用一次,所以可以遍历相加的和,然后排序后,头和尾作为双指针相加,不满足条件就朝着接近满足的方向转移 ac代码: #include <bits/stdc++.h> using namespace std; typedef long long ll; int inf=0x3f3f3f3f; int a[110]; int原创 2022-05-06 19:21:48 · 496 阅读 · 2 评论 -
Gym - 101981A Adrien and Austin(思维)
链接 题意:给你n个石子,每次都可以移走几颗,最多一次移K颗,但是必须是连续的!!!adrien先移,最后到谁那没有石子可移动了谁就赢了。两个人都采用最优策略,问谁会赢 分析: 如果是奇数个,先手先中间移走奇数个变为偶数个,也就分为相等的两半,后手移哪个,先手跟着移就行,因为只能移连续的,所以可以一直保持对称,先手跟着走完最后一步 如果偶数个,先手移走偶数个分为两段同上。如果是k=1,且是偶数个,先手必败。还有注意开局为0先手也必败 AC代码: #include<bits/stdc++.h>原创 2022-03-20 21:33:08 · 334 阅读 · 0 评论 -
CodeForces - 1519D Maximum Sum of Products(dp 减枝优化)
链接 题意:分别给出各含有n的元素的ab数组,sum为a[i]b[i],现在可以使一个连续的子区间反转相乘,问你最大sum为多少 分析:先求出一般情况下sum,开两个for循环作为初末点,然后用深搜来反转,dp记录的是反转的变化值,所以最后求得的最大值还要加上sum *AC代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; int inf=0x3f3f3f3f; const int N=5050; ll原创 2022-03-17 21:14:08 · 289 阅读 · 1 评论 -
CodeForces - 1625B Elementary Particles(贪心)
传送门 题意:一个含n个元素的数组,求长度最大的两个子区间(要求至少有一个元素位置对应上,初末位置相同的算一个区间) 分析:举例两个1,为了对应上,第一个1最多可以前沿一个,所有第二个也前沿一个,第二个1后边最多可前沿两个,所以第一个也前沿两个,长度上再加上1点本身,所以为4。 所以发现最长的长度,为两个相同的点,前点位置到头的距离加上后点位置到尾的距离,所以如果有多个相同的点,最长距离一定出现在后边临近的两个点上。 AC代码: #include<stdio.h> #include<a原创 2022-01-17 19:59:12 · 676 阅读 · 0 评论