求组站外题目,求hack
  • 板块学术版
  • 楼主nothing__
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/8/17 15:58
  • 上次更新2023/11/3 03:07:56
查看原帖
求组站外题目,求hack
649246
nothing__楼主2023/8/17 15:58

机房一个同学打的暴力,结果薄纱标程 原题链接:https://www.acwing.com/problem/content/373/ 求巨佬把hack数据甩我脸上 代码如下:

#include<bits/stdc++.h>
using namespace std;
const int N=2100;
int n, cnt, t[N]; bool v[N];
struct type{int x, y;} h[N];
struct node{int st, ed, d;} a[N];
bool cmp(type a, type b) {return a.x<b.x;}
void hh(int k, char s[], int w)
{
	int h=(s[0]-'0')*10+(s[1]-'0');
	int m=(s[3]-'0')*10+(s[4]-'0');
	if(w==0) a[k].st=h*60+m; else a[k].ed=h*60+m;
}
bool dfs(int k)
{
	if(k==n+1) return true;
	bool bk=false;  
	int f1=(t[a[k].st]>0), f2=(t[a[k].st+a[k].d]>0);
	for(int i=a[k].st;i<=a[k].st+a[k].d;i++) 
	{
		if((i==a[k].st&&t[i]==2)||(i==a[k].st+a[k].d&&t[i]==1)) {v[i]=true; continue;}
		if(v[i]==true) 
		{
			for(int j=i-1;j>=a[k].st+f1;j--) 
				v[i]=false; bk=true; break;
		} 
		else v[i]=true;
	}
	if(!bk)
	{
		t[a[k].st]=1, t[a[k].st+a[k].d]=2;
		h[++cnt]={a[k].st, a[k].st+a[k].d};
		if(dfs(k+1)) return true;
		else 
		{
			for(int i=a[k].st+f1;i<=a[k].st+a[k].d-f2;i++) v[i]=false;
			t[a[k].st]=f1, t[a[k].st+a[k].d]=f2;
		}
	}
	f1=(t[a[k].ed-a[k].d]>0), f2=(t[a[k].ed]>0);
	for(int i=a[k].ed-a[k].d;i<=a[k].ed;i++)
	{
		if((i==a[k].ed-a[k].d&&t[i]==2)||(i==a[k].ed&&t[i]==1)) {v[i]=true; continue;}
		if(v[i]==true) {for(int j=i-1;j>=a[k].ed-a[k].d+f1;j--) v[i]=false; return false;} 
		else v[i]=true;
	}
	t[a[k].ed]=2, t[a[k].ed-a[k].d]=1;
	h[++cnt]={a[k].ed-a[k].d, a[k].ed};
	if(dfs(k+1)) return true;
	else 
	{
		t[a[k].ed]=f2, t[a[k].ed-a[k].d]=f1;
		for(int i=a[k].ed-a[k].d+f1;i<=a[k].ed-f2;i++) v[i]=false;
	}
	return false;
}
int main()
{
	cnt=0; scanf("%d", &n);
	for(int i=1;i<=n;i++)
	{
		char s1[10], s2[10]; scanf("%s", s1);
		scanf("%s", s2); scanf("%d", &a[i].d);
		hh(i, s1, 0); hh(i, s2, 1);
	}
	if(dfs(1))
	{
		sort(h+1, h+1+n, cmp); 
		puts("YES");
		for(int i=1;i<=n;i++)
		{	
			int x=h[i].x, y=h[i].y;
			printf("%02d:%02d %02d:%02d\n",x/60, x%60, y/60, y%60);
		}
	} 
	else puts("NO");
	return 0;
}
2023/8/17 15:58
加载中...