日期:2023-10-1周六
学号:S00338
目录
-
简述
总分数:190
T1【人员借调transfer】70
T2【计算calc】20
T3【智能公交transit】100
T4【异或和exclusive】0
-
比赛过程
这次我还是按顺序做的。
T1在草稿纸上模拟了一下样例。慢慢打了一个贪心,没想到啊,少想了一种一直在B的情况,导致丢了30。
T2没有想到打表的办法(看来还我见识太少了QwQ),于是打了暴力,结果多组输入ans忘了清空,直接G掉了,只拿到了特殊点判断()的20分,痛失30pts。
T3我一开始没想到前缀和与差分的做法,我感觉选择不同的位置的站台经过数是单调有规律可循的,画了画区间示意图,感觉不像有单调性。然后输出样例中选不同位置的答案找了找,发现这堆数居然可以找到规律!然后利用单调性手写了一个二分,改了改死循环的错,居然过了所有样例!然后我也没想到这是我唯一一个A掉的题目。
T4题目越短,事情越大。我对于不同的数据分别打了暴力,结果暴力炸掉了,我也不太清楚为啥。可能因为没有考虑到m。而且正解是人能想出的思路?(
反正这次没有能直接淼过的题
-
题目分析
【人员借调transfer】
1、题目大意
小可在AB两地往返,要去B地按顺序处理n件事,小可处理第 i 件要 min,但是当小可在B地连续待大于等于240min时,小可回来后必须在 A 地滞留10080 min ,然后才能继续活动。
现在他准备从 A 地出发,需要在 B 地处理完所有事,然后回到 A 地正常的工作。
求小可至少需要多少分钟
2、比赛中的思考
一开始,我仔细读了读题,然后在纸上稍稍推了推,然后直接贪心。
结果少考虑了一种小可一直待在B点的情况。不过话说A地是什么病娇老板啊(
3、解题思路
利用贪心。如果就回A地,如果
分两种情况讨论,一个是
,一个是
。
4、AC code:(主体部分)
const int N=1e4+10;
int n,a[N],ans;
int main(){
//freopen("transfer.in","r",stdin);
//freopen("transfer.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
int sum=0;
for(int i=1;i<=n;i++){
if(a[i]>=240){
ans+=10480+a[i];
if(sum){
ans+=sum;
sum=0;
}
}
els