:(
2025-03-30 22:04:14
发布于:江苏
35阅读
2回复
0点赞
脑子废辣!
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
#include<bits/stdc++.h>
using namespace std;
long long a,b,c,d,n,m,p[1000005],ccnt,bcnt,cnt,dcnt,ecnt,x,y;
int main()
{
cin>>a>>b>>c>>d>>n>>m;
cnt=n/2+n%2;
for(long long i=1;i<=m;i++)
{
cin>>p[i];
}
if(m>0)
{
for(long long i=1;i<=m;i++)
{
if(p[i+1]-p[i]==1&&p[i+1]%2==0&&p[i]%2)
{
continue;
}else if(p[i]!=n)
{
ccnt++;
}
}
bcnt=cnt-ccnt;
cout<<min(bcnt*d+ccnt*b,m*a+(n-m)*c);
}else
{
cout<<min(cnt*d,n*c);
}
return 0;
}
//有错吗?????????
全部评论 1
有个关键的问题,你有个判断条件是pi+1 - pi == 1且pi+1是偶数,pi是奇数。这个条件判断不一定对,例如,如果p数组未排序,那么相邻的两个页可能不是连续的,或者顺序颠倒。比如,p数组是3,4的话,按照当前逻辑会被认为是同一双面页,但如果p数组是2,3,那么他们的差是1,但2是偶数,3是奇数,这时候判断条件就不成立,但实际上页2和3属于不同的双面页。把这里改一下,改成(p+1)/2的形式分割
2025-03-30 来自 江苏
1天哪谢谢无敌了哥们
2025-04-10 来自 江苏
0
有帮助,赞一个