牛逼数据
  • 板块P1159 排行榜
  • 楼主dsj2012
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/31 17:02
  • 上次更新2024/7/31 18:51:13
查看原帖
牛逼数据
996107
dsj2012楼主2024/7/31 17:02

数据真强。我全排列枚举都对了

#include<bits/stdc++.h>
using namespace std;
int n,a[105];
struct pi{
	string a,b;
}s[105];
bool f[105];
void dfs(int k){
	if(k == n + 1){
		for(int i = 1 ; i <= n ; i ++){
			if(s[i].b == "UP"){
				
				if(a[i] <= i){
					return;
				}
			} 
			if(s[i].b == "DOWN"){
				if(a[i] >= i){
					return;
				}
			} 
			if(s[i].b == "SAME"){
				if(a[i] != i){
					return;
				}
			} 
		}
		for(int i = 1 ; i <= n ; i ++){
			for(int j = 1 ; j <= n ; j ++){
				if(a[j] == i){
					cout << s[j].a << endl;
					break;
				}
			}
		}
		exit(0);
	}
	for(int i = 1 ; i <= n ; i ++){
		if(!f[i]){
			if(s[k].b == "UP" && i <= k){
				continue;
			}
			if(s[k].b == "DOWN" && i >= k){
				continue;
			}
			if(s[k].b == "SAME" && i != k){
				continue;
			}
			a[k] = i;
			f[i] = 1;
			dfs(k + 1);
			f[i] = 0;
		}
	}
}
int main(){
	cin >> n;
	for(int i = 1 ; i <= n ; i ++){
		cin >> s[i].a >> s[i].b;
	}
	dfs(1);
	return 0;
}

2024/7/31 17:02
加载中...