社区讨论
问区别
CF2180DInsolvable Disks参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mk10co5n
- 此快照首次捕获于
- 2026/01/05 18:18 2 个月前
- 此快照最后确认于
- 2026/01/08 23:55 2 个月前
用
double
存上下界会T
CPP#include<bits/stdc++.h>
using namespace std;
#define int long long
#define N 2000100
int T,n,dp[N][2];
double mx[N],mn[N],a[N];
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>T;
while(T--){
cin>>n;for(int i=1;i<=n;i++)cin>>a[i];
if(n==1){cout<<0<<'\n';continue;}
a[n+1]=3e9;
dp[1][0]=0,dp[1][1]=0;
mx[1]=a[2]-0.5,mn[1]=a[1]+0.5;
for(int i=2;i<=n;i++){
if(a[i+1]-a[i]>a[i]-mx[i-1])
dp[i][0]=dp[i-1][1]+1,mn[i]=a[i]+a[i]-mx[i-1];
else dp[i][0]=dp[i-1][1],mn[i]=a[i]+0.5;
if(a[i+1]-a[i]>a[i]-mn[i-1])
dp[i][1]=dp[i-1][0]+1,mx[i]=a[i]+a[i]-mn[i-1];
else if(a[i+1]-a[i]>a[i]-mx[i-1]){
dp[i][1]=dp[i-1][0]+1,mx[i]=a[i+1]-0.5;
}else{
dp[i][1]=dp[i-1][0],mx[i]=a[i+1]-0.5;
}
}
cout<<max(dp[n][0],dp[n][1])<<'\n';
}
return 0;
}
改成
int
能
AC
CPP#include<bits/stdc++.h>
using namespace std;
#define int long long
#define N 3000100
int T,n,dp[N][2],mx[N],mn[N],a[N];
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>T;
while(T--){
cin>>n;for(int i=1;i<=n;i++)cin>>a[i],a[i]*=2;
if(n==1){cout<<0<<'\n';continue;}
a[n+1]=6e9;
dp[1][0]=0,dp[1][1]=0;
mx[1]=a[2]-1,mn[1]=a[1]+1;
for(int i=2;i<=n;i++){
if(a[i+1]-a[i]>a[i]-mx[i-1])
dp[i][0]=dp[i-1][1]+1,mn[i]=a[i]+a[i]-mx[i-1];
else dp[i][0]=dp[i-1][1],mn[i]=a[i]+1;
if(a[i+1]-a[i]>a[i]-mn[i-1])
dp[i][1]=dp[i-1][0]+1,mx[i]=a[i]+a[i]-mn[i-1];
else if(a[i+1]-a[i]>a[i]-mx[i-1])
dp[i][1]=dp[i-1][0]+1,mx[i]=a[i+1]-1;
else
dp[i][1]=dp[i-1][0],mx[i]=a[i+1]-1;
}
cout<<max(dp[n][0],dp[n][1])<<'\n';
}
return 0;
}
求问原因~白吃一发罚时~
回复
共 3 条回复,欢迎继续交流。
正在加载回复...