小信喂狗狗 wa8

#include<bits/stdc++.h>
using namespace std;
int n,ans=0x3f3f3f3f;
int dp_0[300005][2],dp_1[300005][2],a[300005];
int main()
{
	memset(dp_0,63,sizeof(dp_0));
	dp_0[2][1]=a[2];
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	for(int i=3;i<=n;i++)
	{
		dp_0[i][1]=min(dp_0[i-1][1],dp_0[i-1][0])+a[i];
		dp_0[i][0]=dp_0[i-1][1];
	}
    ans=dp_0[n][1];
    dp_1[1][1]=a[1];
	for(int i=2;i<=n;i++)
	{
		dp_1[i][1]=min(dp_1[i-1][1],dp_1[i-1][0])+a[i];
		dp_1[i][0]=dp_1[i-1][1];
	}
	ans=min(min(dp_1[n][0],dp_1[n][1]),ans);
	cout<<ans; 
	return 0;
}
C.  小信喂狗狗
Problem ID: 8576
Contest ID: 5883
必做题
Wrong Answer
8 分
时间:2s 空间:256M
题目描述:
小信家里有
�
n只狗狗围成了一圈要吃零食,第
�
i和第
�
+
1
i+1只狗狗吃到价格为
�
�
a 
i
​
 的零食就会开心,特别的,第
�
n和第
1
1只狗狗吃到价格为
�
�
a 
n
​
 的零食会开心,请问让所有狗狗开心的最少花费。



输入格式:
第一行包含一个整数 
�
n。

第二行包含 
�
n 个整数 
�
�
a 
i
​
  。



输出格式:
输出一个整数表示答案。



样例1输入:
5
2 5 3 2 5
样例1输出:
7


约定与提示:
对于100%的数据,
2
≤
�
≤
3
⋅
1
0
5
2≤n≤3⋅10 
5
 ,
1
≤
�
�
≤
1
0
9
1≤a 
i
​
 ≤10 
9
 。

样例1解释:购买第1,3,4种零食能让所有狗狗开心,花费是
2
+
3
+
2
=
7
2+3+2=7。



2 个赞
#include<bits/stdc++.h>
using namespace std;
int n,ans=0x3f3f3f3f;
int dp_0[300005][2],dp_1[300005][2],a[300005];
int main()
{
	memset(dp_0,0x3f3f3f3f,sizeof(dp_0));
	memset(dp_1,0x3f3f3f3f,sizeof(dp_1));
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	dp_0[2][1]=a[2];
	for(int i=3;i<=n;i++)
	{
		dp_0[i][1]=min(dp_0[i-1][1],dp_0[i-1][0])+a[i];
		dp_0[i][0]=dp_0[i-1][1];
	}
    ans=dp_0[n][1];
    dp_1[1][1]=a[1];
	for(int i=2;i<=n;i++)
	{
		dp_1[i][1]=min(dp_1[i-1][1],dp_1[i-1][0])+a[i];
		dp_1[i][0]=dp_1[i-1][1];
	}
	ans=min(min(dp_1[n][0],dp_1[n][1]),ans);
	cout<<ans; 
	return 0;
}

WA24

2 个赞

buhui

2 个赞

改 long long OK

2 个赞