快来围观这个乐子
  • 板块灌水区
  • 楼主Atwi_llljx
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/10/28 00:49
  • 上次更新2024/10/28 13:29:58
查看原帖
快来围观这个乐子
886208
Atwi_llljx楼主2024/10/28 00:49

J T3赛事代码(30pts)

/*
0 6

1 2
2 5
4 4

6 6

7 3
8 7 


*/
#include<bits/stdc++.h>
#define r read()
#define int long long
#define MAX 0x3f3f3f3f
#define MIN -0x3f3f3f3f
using namespace std;
int read();
const int mp[20]={6,2,5,0,4,0,6,3,7},hd[10]={0,1,2,4,6,7,8},tl[10]={9,0,1,2,4,7,8};
int hdd,n,T,d[100010];
bool fl;
int read(){
	int dx=0,x=1;
	char xx=getchar();
	for(;xx<'0'||xx>'9';xx=getchar())
		if(xx=='-')
			x=-1;
	for(;xx>='0'&&xx<='9';dx=dx*10+xx-48,xx=getchar());
	return dx*x;
}
int fd(int x){
	for(int i=1;i<=6;i++)
		if(tl[i]==x)
			return i;
}
void dfs(int id,int x){
	if(fl)
		return;
	if(id==ceil(n/7.0)){
		cout<<x;
		if(x==0){
			fl=1;
			cout<<hd[hdd];
			for(int i=1;i<ceil(n/7.0);cout<<d[i],i++);
			cout<<"\n";
			return;
		}else
			return;
	}
	int rest=ceil(n/7.0)-id;
	if(7*rest<x||2*rest>x)
		return;
	for(int i=fd(d[id]-1);i<=6;i++){
		int xx=tl[i];
		d[id]=xx;
		dfs(id+1,x-mp[xx]);
	}
}
signed main(){
	freopen("sticks.in","r",stdin);
	freopen("sticks.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	T=r;
	for(int o=1;o<=T;fl=0,o++){
		n=r;
		if(n%7==0){
			for(int i=1;i<=ceil(n/7.0);cout<<"8",i++);
			cout<<"\n";
			continue;
		}
		for(hdd=1;hdd<=6&&fl==0;dfs(1,n-mp[hd[hdd]]),hdd++);
		if(fl==0)
			cout<<"-1\n";
	}
	return 0;
}

AC代码

/*
0 6

1 2
2 5
4 4

6 6

7 3
8 7 


*/
#include<bits/stdc++.h>
#define r read()
#define int long long
#define MAX 0x3f3f3f3f
#define MIN -0x3f3f3f3f
using namespace std;
int read();
const int mp[20]={6,2,5,0,4,0,6,3,7},hd[10]={0,1,2,4,6,7,8},tl[10]={9,0,1,2,4,7,8};
int hdd,n,T,d[100010];
bool fl;
int read(){
	int dx=0,x=1;
	char xx=getchar();
	for(;xx<'0'||xx>'9';xx=getchar())
		if(xx=='-')
			x=-1;
	for(;xx>='0'&&xx<='9';dx=dx*10+xx-48,xx=getchar());
	return dx*x;
}
int fd(int x){
	for(int i=1;i<=6;i++)
		if(tl[i]==x)
			return i;
}
void dfs(int id,int x){
	if(fl)
		return;
	if(id==ceil(n/7.0)){
		if(x==0){
			fl=1;
			cout<<hd[hdd];
			for(int i=1;i<ceil(n/7.0);cout<<d[i],i++);
			cout<<"\n";
			return;
		}else
			return;
	}
	int rest=ceil(n/7.0)-id;
	if(7*rest<x||2*rest>x)
		return;
	for(int i=fd(d[id-1]);i<=6;i++){
		int xx=tl[i];
		d[id]=xx;
		dfs(id+1,x-mp[xx]);
	}
}
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	T=r;
	for(int o=1;o<=T;fl=0,o++){
		n=r;
		if(n%7==0){
			for(int i=1;i<=ceil(n/7.0);cout<<"8",i++);
			cout<<"\n";
			continue;
		}
		for(hdd=1;hdd<=6&&fl==0;dfs(1,n-mp[hd[hdd]]),hdd++);
		if(fl==0)
			cout<<"-1\n";
	}
	return 0;
}

原因:第56行

for(int i=fd(d[id-1]);i<=6;i++){

打成:

for(int i=fd(d[id]-1);i<=6;i++){

:<

违规紫衫

2024/10/28 00:49
加载中...