尝试用过clock骗分,但是不行,请求帮助
查看原帖
尝试用过clock骗分,但是不行,请求帮助
920234
froth_reciprocal楼主2023/8/12 20:52

刚知道clock()函数,实战一下,但一直是57分

真的不太懂clock(),请求大佬们讲解,谢谢

可能有一点繁琐,请大家宽恕

以下是几回的代码:

1.#7#8#9#11#12WA
#include<iostream>
#include<ctime>
using namespace std;
const int N=10000;
int a[N],b[N],ans,n,m;//分别表示蛋糕,嘴,和,已知蛋糕总数量,已知嘴的总数量 
double start_time;//程序起始时间 
void dfs(int x,int y){//x是当前考虑到的那张嘴,y是有多少张嘴吃到了蛋糕
	if(((clock()-start_time)/CLOCKS_PER_SEC)>0.9){
		return;//本题时间限制为1.00s,所以可以用这个函数提高分数 	
	}
	if(x==m+1){
		ans=max(ans,y);
		return;
	} 
	dfs(x+1,y);
	for(int i=1;i<=n;i++)
		if(a[i]>=b[x]){
			a[i]-=b[x];//标记 
			dfs(x+1,y+1);
			a[i]+=b[x];//回溯 
		}
} 
int main(){
	start_time=clock(); 
	cin>>n;
	for(int i=1;i<=n;i++)	cin>>a[i];
	cin>>m;
	for(int i=1;i<=m;i++)	cin>>b[i];
	dfs(1,0);
	cout<<ans<<endl;
	return 0;
}

这个代码↑↑↑无ios...,>0.9

2.#7#8#9WA,#11#12TLE
#include<iostream>
#include<ctime>
using namespace std;
const int N=10000;
int a[N],b[N],ans=0,n,m;//分别表示蛋糕,嘴,和,已知蛋糕总数量,已知嘴的总数量 
double start_time;//程序起始时间 
void dfs(int x,int y){//x是当前考虑到的那张嘴,y是有多少张嘴吃到了蛋糕
	if(((clock()-start_time)/CLOCKS_PER_SEC)>0.99){
		return;//本题时间限制为1.00s,所以可以用这个函数提高分数 	
	}
	if(x==m+1){
		ans=max(ans,y);
		return;
	} 
	dfs(x+1,y);
	for(int i=1;i<=n;i++)
		if(a[i]>=b[x]){
			a[i]-=b[x];//标记 
			dfs(x+1,y+1);
			a[i]+=b[x];//回溯 
		}
} 
int main(){
	start_time=clock(); 
	ios::sync_with_stdio(0);
	cin>>n;
	for(int i=1;i<=n;i++)	cin>>a[i];
	cin>>m;
	for(int i=1;i<=m;i++)	cin>>b[i];
	dfs(1,0);
	cout<<ans<<endl;
	return 0;
}

这个代码↑↑↑ ios...在clock()下,>0.99

3.#7#8#9#11WA,#12TLE
#include<iostream>
#include<ctime>
using namespace std;
const int N=10000;
int a[N],b[N],ans=0,n,m;;//分别表示蛋糕,嘴,和,已知蛋糕总数量,已知嘴的总数量 
double start_time;//程序起始时间 
void dfs(int x,int y){//x是当前考虑到的那张嘴,y是有多少张嘴吃到了蛋糕
	if(((clock()-start_time)/CLOCKS_PER_SEC)>0.99){
		return;//本题时间限制为1.00s,所以可以用这个函数提高分数 	
	}
	if(x==m+1){
		ans=max(ans,y);
		return;
	} 
	dfs(x+1,y);
	for(int i=1;i<=n;i++)
		if(a[i]>=b[x]){
			a[i]-=b[x];//标记 
			dfs(x+1,y+1);
			a[i]+=b[x];//回溯 
		}
} 
int main(){
	ios::sync_with_stdio(0);
	start_time=clock(); 
	cin>>n;
	for(int i=1;i<=n;i++)	cin>>a[i];
	cin>>m;
	for(int i=1;i<=m;i++)	cin>>b[i];
	dfs(1,0);
	cout<<ans<<endl;
	return 0;
}

这个代码↑↑↑ ios...在clock()上,>0.99

4.无clock(),#7#8#9#11#12TLE
#include<iostream>
#include<ctime>
using namespace std;
const int N=10000;
int a[N],b[N],ans,n,m;//分别表示蛋糕,嘴,和,已知蛋糕总数量,已知嘴的总数量 
void dfs(int x,int y){//x是当前考虑到的那张嘴,y是有多少张嘴吃到了蛋糕
	if(x==m+1){
		ans=max(ans,y);
		return;
	} 
	dfs(x+1,y);
	for(int i=1;i<=n;i++)
		if(a[i]>=b[x]){
			a[i]-=b[x];//标记 
			dfs(x+1,y+1);
			a[i]+=b[x];//回溯 
		}
} 
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)	cin>>a[i];
	cin>>m;
	for(int i=1;i<=m;i++)	cin>>b[i];
	dfs(1,0);
	cout<<ans<<endl;
	return 0;
}

这个代码↑↑↑ 无ios...无clock()

谢谢你们看完~~~

我怕被喷

2023/8/12 20:52
加载中...