AHPJ我洛谷测215能一等奖吗
  • 板块灌水区
  • 楼主jcz20070303
  • 当前回复8
  • 已保存回复8
  • 发布时间2020/11/9 13:01
  • 上次更新2023/11/5 08:23:56
查看原帖
AHPJ我洛谷测215能一等奖吗
385259
jcz20070303楼主2020/11/9 13:01

如题

第一题100分

第二题100分

第四题洛谷测出来15分 希望比赛数据水一点

能得一等奖吗?求大佬解答

附程序

第一题
#include<bits/stdc++.h>
using namespace std;
int a[10000005];
int s,i;
int work(int x){
	i=0;
	while(1){
	s=2;
	i++;
	while(s*2<=x){
		s=s*2;
		}
	if(s==a[i-1]) return 0;
	a[i]=s;
	if(s==x) return 1;
	x=x-s;
	}
}
int main(){
	int n,j;
	cin>>n;
	if(n%2==1) cout<<"-1"<<endl;
	else{
		if(work(n)==1)
		{
			for(j=1;j<=i;j++)
				cout<<a[j]<<" ";
				cout<<endl;
		}
		if(work(n)==0) cout<<"-1"<<endl;
		}
		return 0;
	}
第二题
#include<bits/stdc++.h>
using namespace std;
int a[100005],s[605];
int main(){
	int n,i,j,sum,m,sum1=0;
	cin>>n>>m;
	for(i=1;i<=n;i++)
		cin>>a[i];
	for(i=1;i<=n;i++)
	{
		s[a[i]]++;
		sum=max(1,i*m/100);
		j=601;
		sum1=0;
		while(sum1<sum&&j>0){
			j--;
			sum1+=s[j];
		}
		cout<<j<<" ";
	}
	cout<<endl;
	return 0;
}
	
第四题
#include<bits/stdc++.h>
using namespace std;
int f[1010][1010];
int map1[1010][1010];
int z,h;
long long maxn=-100000000;
int go[3][2];
void work(int x,int y,long long ans)
{
	if(x==z&&y==h)
	{
		maxn=max(maxn,ans);
		return;
	}
	for(int i=0;i<=2;i++)
	{
		if(x+go[i][0]<=z&&x+go[i][0]>=1&&y+go[i][1]<=h&&y+go[i][1]>=1&&map1[x+go[i][0]][y+go[i][1]]==0)
		{
			map1[x+go[i][0]][y+go[i][1]]=1;
			work(x+go[i][0],y+go[i][1],ans+f[x+go[i][0]][y+go[i][1]]);
			map1[x+go[i][0]][y+go[i][1]]=0;
		}
	}
	return;
}
int main(){
	go[0][0]=1;go[0][1]=0;
	go[1][0]=-1;go[1][1]=0;
	go[2][0]=0;go[2][1]=1;
	cin>>z>>h;
	for(int i=1;i<=z;i++)
		for(int j=1;j<=h;j++)
			cin>>f[i][j];
	work(1,1,f[1][1]);
	cout<<maxn<<endl;
	return 0;
}
感谢感谢
2020/11/9 13:01
加载中...