题目
怪兽的血量ai与对下一个(i+1)怪兽的伤害bi,最后一个怪兽伤害首怪兽。问杀死所有怪兽所需子弹最少?一发伤害1。
每个点连坐后剩余血量,比较i的血量+连坐后其余all血量最小值
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=300010;
int t, n;
ll minn, sum, k, a[N], b[N];
int main()
{
scanf("%d",&t);
while (t--)
{
scanf("%d",&n);
sum = 0;
for (int i = 0; i < n; i++)
{
scanf("%lld %lld",&a[i],&b[i]);
if (i && a[i] > b[i - 1]) sum += a[i] - b[i - 1];
}
if (a[0] > b[n - 1]) sum += a[0] - b[n - 1], minn = b[n - 1];
else minn = a[0];
for (int i = 1; i < n; i++)
{
if (a[i] > b[i - 1]) k = b[i - 1];
else k = a[i];
minn = min(k,minn);
}
printf("%lld\n",minn+sum);
}
return 0;
}