没有准时参加比赛,在比赛中只AC3题,主要是我太菜了!!!
A,B两题送分题。
C题:
(搞得差不多了比赛却结束了??)
C Math Problem
https://ac.nowcoder.com/acm/contest/893/C
比赛结束后Ac代码:
//i-1肯定为192的倍数,求和可以看成等差数列求和
#include <iostream>
#define LL long long
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
LL l,r,ans = 0;
cin>>l>>r;
LL x = (l-1)/192,y = (r-1)/192;
if((l-1)%192) x++;//194 194
if(x <= y)
{
LL temp = (x+y)*(y-x+1)/2;
ans = 192*temp + (y-x+1);
}
cout<<ans<<endl;
}
return 0;
}
D Stone:
https://ac.nowcoder.com/acm/contest/893/D
思路:
先假设只有两堆石头,再假设只有三堆石头,再四堆,去找规律;
然后就会发现,一定要先合并相邻和最大的那堆,如果石头堆数为n,那么总共要合并n-1次。
最终发现ans = sum - max(a[0…n-1])
#include <stdio.h>
#include <algorithm>
#define LL long long
using namespace std;
LL a[10005];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
LL sum = 0,aim = 0;
for(int i = 0; i < n; i++)
{
scanf("%lld",&a[i]);
sum += a[i];
aim = max(aim,a[i]);
}
printf("%lld\n",sum-aim);
}
return 0;
}