(思维)(必要做题步骤)(皮卡丘与 Codeforces )D - 先来签个到
创始人
2024-05-28 20:33:53

目录

题目链接

一些话

流程

套路

ac代码


题目链接

D - 先来签个到(真心换真心)

皮卡丘与 Codeforces - Gym 103478A - Virtual Judge (csgrandeur.cn)

 


一些话

比赛时觉得很怪的一道题,为什么觉得很怪呢?因为我是傻逼。

wa5发纯纯的做题习惯与思维方式有问题

1.是比赛时在纠结分数小于0的能不能参加比赛,

2.是分数可不可以小于0还是到了0再扣分还是0

关于1,题目分数范围是-1e4~+1e4,全给负分账号是合法的,如果全给负分的话,怎么参加比赛?

关于2,还是题目分数范围的问题,初始分数都可小于0了,还在纠结分数可不可以小于0?还纠结扣到0再扣分的结果?

因为纠结这些东西,所以在关键的wa1后,又往上面纠结的情况做了尝试,然后出现4wa

至于最关键的1wa,是由于没有注意题目的边界数据引发的特殊情况,因为太久没遇到此类边界特殊情况的题,所以一直忽略了这个步骤,经过这次罚时应该得到教训,不要因为贪快而忽略解题步骤。


流程

题目要账号中的最大分数账号的分数最大,所以理所当然会想到能加分的比赛就用它来打,不能加分的比赛就用别的号。先找出最大分值,再将读到的正值加到最大分值中最后再输出即可,但这只是一般情况。

通过观察题目给的账号数目的数据范围可以发现,账号数是可以为1的,此时无论比赛加分还是扣分,你都只能拿同一个账号来打,所以流程就变为将读到的值加入账号分值中最后再输出


套路

必要做题步骤,无条件

考虑完一般情况后,观察题目边界值是否会导致题目出现特殊情况


ac代码

#include 
#include 
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
ll f[N];
int main(){ll n,m;cin >>n >>m;for(int i = 1;i <= n;i++){scanf("%lld",&f[i]);}sort(f+1,f+n+1);if(n > 1){while(m--){ll x;scanf("%lld",&x);if(x > 0) {f[n] += x;}}}   else if(n == 1){while(m--){ll x;scanf("%lld",&x);f[n] += x;}}cout << f[n] << endl;return 0;
}


相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...