为啥会CE?
  • 板块灌水区
  • 楼主liuyi0905
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/8/31 07:23
  • 上次更新2023/11/3 00:15:10
查看原帖
为啥会CE?
717971
liuyi0905楼主2023/8/31 07:23

我这份代码为什么会CE,编译器弹出来的都看不懂。

#include<bits/stdc++.h>
#define int long long
#define INF 0x7f7f7f7f
using namespace std;
const int N=35;
int a,b,c,n,dp[N][N][N][N][2];
int lowbit(int x){int sum=0;for(;x;x>>=1)sum+=x&1;return sum;}
void Min(int &x,int y,int z){if(y<x)x=y;if(z<x)x=z;}
signed main(){
	memset(dp,INF,sizeof(dp));
	dp[0][0][0][0][0]=0;
	cin>>a>>b>>c;
	n=max(log2(a),log2(b),log2(c))+1;
	a=lowbit(a),b=lowbit(b),c=lowbit(c);
	for(int i=0;i<n;i++)
		for(int x=0;x<=a;x++)
			for(int y=0;y<=b;y++)
				for(int z=0;z<=c;z++){
					int x1=dp[i][x][y][z][0],x2=dp[i][x][y][z][1];
					Min(dp[i+1][x][y][z][0],x1,x2);
					Min(dp[i+1][x+1][y][z+1][0],x1+(1<<i),x2+(1<<i));
					Min(dp[i+1][x][y+1][z+1][0],x1+(1<<i),x2+(1<<i));
					Min(dp[i+1][x+1][y+1][z+1][1],x1+(1<<i+1),x2+(1<<i+1));
				}
	if(dp[n][a][b][c][0]>=INF)cout<<-1;
	else cout<<dp[n][a][b][c][0];
	return 0;
}
2023/8/31 07:23
加载中...