0x3f不够大吗?
查看原帖
0x3f不够大吗?
422348
Yang818楼主2023/9/5 21:48

80分代码:

#include<bits/stdc++.h>
#define F(_b,_e) for(int i=_b;i<=_e;i++)
#define int long long
using namespace std;

inline int read(){
	int f=1,x=0;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
	return f*x;
}
void write(int x) {
	if(x<0) putchar('-'),x=-x;
	if(x>9) write(x/10);
	putchar(x%10+'0');
}
int a[205],b[205];
int f[25][300];
int res(int t,int e,int p){
	F(1,p)
		t*=e;
	return t;
}
signed main(){
	//ios::sync_with_stdio(0);
	int n,m;
	m=read();
	n=read();
	for(int i=1;i<=n;i++){
		a[i]=read();
		b[i]=read();
	}
	memset(f,0x3f,sizeof(f));
	for(int i=0;i<=m;i++)
		f[0][i]=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			for(int k=0;k<=j;k++){
				if(i==1)
					f[i][j]=f[i-1][j-k]+res(a[i],k,b[i]);
				f[i][j]=min(f[i][j],f[i-1][j-k]+res(a[i],k,b[i]));
			}
		} 
	}
	cout<<f[n][m];
	return 0;
}


100分代码:

#include<bits/stdc++.h>
#define F(_b,_e) for(int i=_b;i<=_e;i++)
#define int long long
using namespace std;

inline int read(){
	int f=1,x=0;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
	return f*x;
}
void write(int x) {
	if(x<0) putchar('-'),x=-x;
	if(x>9) write(x/10);
	putchar(x%10+'0');
}
int a[205],b[205];
int f[25][300];
int res(int t,int e,int p){
	F(1,p)
		t*=e;
	return t;
}
signed main(){
	//ios::sync_with_stdio(0);
	int n,m;
	m=read();
	n=read();
	for(int i=1;i<=n;i++){
		a[i]=read();
		b[i]=read();
	}
	/*memset(f,0x3f,sizeof(f));
	for(int i=0;i<=m;i++)
		f[0][i]=0;*/
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			for(int k=0;k<=j;k++){
				if(i==1||f[i][j]==0)
					f[i][j]=f[i-1][j-k]+res(a[i],k,b[i]);
				f[i][j]=min(f[i][j],f[i-1][j-k]+res(a[i],k,b[i]));
			}
		} 
	}
	cout<<f[n][m];
	return 0;
}


仅仅把 memset+初始化改成了特判,就过了,请问各位是因为什么原因?

2023/9/5 21:48
加载中...