求调!
查看原帖
求调!
844496
J_Kobe楼主2024/5/2 08:09
#include <bits/stdc++.h>
using namespace std;

const int N = 100005;
int t, n, x[N];
struct node{
	int c, a;
} a[N], q[20];
bool cmp(node a, node b)
{
	if (a.c != b.c)
	{
		return a.c < b.c;
	}
	return a.a < b.a;
}
bool cmp2(node a, node b)
{
	return a.a > b.a;
}

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie();cout.tie();
	cin >> t;
	while (t--)
	{
		cin >> n;
		int cnt1 = 0, cnt2 = 0, cnt3 = 0;
		for (int i = 1; i <= n; i++)
		{
			cin >> a[i].c;
			if (a[i].c == 1)
			{
				cnt1++;
			}
			else if (a[i].c == 2)
			{
				cnt2++;
			}
			else
			{
				cnt3++;
			}
		}
		for (int i = 1; i <= n; i++)
		{
			cin >> a[i].a;
		}
		int sum = 0;
		for (int i = 1; i <= 8; i++)
		{
			cin >> x[i];
			sum += x[i];
		}
		sort(a + 1, a + 1 + n, cmp);
		int tot = 0;
		for (int i = 1; i <= n; i++)
		{
			if (a[i].c == 1 && i >= cnt1 - 6)
			{
				tot++;
				q[tot].c = 1;
				q[tot].a = a[i].a;
			}
			if (a[i].c == 2 && i == cnt2 + cnt1)
			{
				tot++;
				q[tot].c = 2;
				q[tot].a = a[i].a;
			}
			if (a[i].c == 3 && i >= n - 2)
			{
				tot++;
				q[tot].c = 3;
				q[tot].a = a[i].a;
			}
		}
		sort(q + 1, q + 1 + tot, cmp2);
		int sum1 = 0, sum2 = 0, sum3 = 0;
		int ans = 0;
//		for (int i = 1; i <= tot; i++)
//		{
//			cout << q[i].c << ' ' << q[i].a << endl;
//		}
		for (int i = 1; i <= tot; i++)
		{
			if (q[i].c == 1)
			{
				if (sum1 < 7)
				{
					sum1++;
					ans += q[i].a;
				}
			}
			else if (q[i].c == 2)
			{
				if (sum2 == 0)
				{
					sum2++;
					ans += q[i].a;
				}
			}
			else
			{
				if (sum3 < 3)
				{
					sum3++;
					ans += q[i].a;
				}
			}
			if (sum1 + sum2 + sum3 == 8)
			{
				break;
			}
		}
//		cout << sum1 << ' ' << sum2 << ' ' << sum3 << endl;
		if (sum2 <= 1 && sum3 >= 1 && sum3 <= 3 && sum1 + sum2 + sum3 == 8)
		{
			if (ans / 8 >= sum / 8 - 2)
			{
				cout << "Yes\n";
			}
			else
			{
				cout << "No\n";
			}
		}
		else
		{
			cout << "No\n";
		}
//		cout << ans << ' ' << sum << endl;
//		cout << endl;
	}
	return 0;
}

/*
7+8+9+3+4+5+6+6=52
52/8=6
13+13+13+13+3+3+3+3=64
64/8=8
*/
2024/5/2 08:09
加载中...