题解:P17129 [ICPC 2025 Shanghai R] Round screws
模拟赛暴砍
因为
但这个是
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+7,M=520;
int t,n,C,a[N];
ll g[520][520],f[N];
inline void add(int x,ll val){
int h=x>>9,l=x&((1<<9)-1);
for(int i=0;i<(1<<9);i++)g[h][i]=min(g[h][i],val+(l^i));
}
inline ll ask(int x){
int h=x>>9,l=x&((1<<9)-1);
ll ans=4e18;
for(int i=0;i<(1<<9);i++)ans=min(ans,g[i][l]+((i^h)<<9)-C);
return ans;
}
inline void work(){
cin>>n>>C,a[0]=a[n+1]=0;
for(int i=1;i<=n;++i)cin>>a[i];
for(int i=0;i<=n+1;++i)f[i]=4e18;
memset(g,0x3f,sizeof(g));
f[0]=1ll*(n+1)*C;add(0,f[0]);
for(int i=1;i<=n+1;++i)f[i]=ask(a[i]),add(a[i],f[i]);
cout<<f[n+1]<<'\n';
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>t;
while(t--)work();
return 0;
}