KSzsh

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

Gardener and the Array

题目链接

题目描述:

The gardener Kazimir Kazimirovich has an array of n integers c1,c2,,cn.

He wants to check if there are two different subsequences a and b of the original array, for which f(a)=f(b), where f(x) is the bitwise OR of all of the numbers in the sequence x.

A sequence q is a subsequence of p if q can be obtained from p by deleting several (possibly none or all) elements.

Two subsequences are considered different if the sets of indexes of their elements in the original sequence are different, that is, the values of the elements are not considered when comparing the subsequences.

输入描述:

Each test contains multiple test cases. The first line contains the number of test cases t(1t105). The description of the test cases follows.

The first line of each test case contains one integer n(1n105) — the size of the array c.

The description of the array c in this problem is given implicitly to speed up input.

The (i+1)-st of the following n lines of the test case begins with an integer ki(1ki105) — the number of set bits in the number ci. Next follow ki distinct integers pi,1,pi,2,,pi,ki(1pi2105) —the numbers of bits that are set to one in number ci. In other words, ci=2pi,1+2pi,2++2pi,ki.

It is guaranteed that the total sum of ki in all tests does not exceed 105.

输出描述:

For each set of input, print "Yes" if there exist two different subsequences for which f(a)=f(b), and "No" otherwise.

You can output the answer in any case (upper or lower). For example, the strings "yEs", "yes", "Yes", and "YES" will be recognized as positive responses.

样例:

input:

5
3
2 1 5
2 2 4
2 2 3
2
2 1 2
1 2
4
3 1 2 4
2 2 4
4 1 2 5 6
2 2 5
5
3 3 1 2
3 2 5 3
5 7 2 3 1 4
5 1 2 6 3 5
3 2 6 3
2
1 1
1 2

output:

No
Yes
Yes
Yes
No

Note:

It can be proven that in the first test case there are no two different subsequences a and b for which f(a)=f(b).

In the second test case, one of the possible answers are following subsequences: the subsequence a formed by the element at position 1, and the subsequence b formed by the elements at positions 1 and 2.

In the third test case, one of the possible answers are following subsequences: the subsequence a formed by elements at positions 1, 2, 3 and 4, and the subsequence b formed by elements at positions 2, 3 and 4.

AC代码:

#include <bits/stdc++.h>
using namespace std;
// 贪心的想,a和b或的数相同的越多他们就越接近
// 那么就让a或上所有的数,只要然后让b去掉一个数
// 只要去掉的那个数的每个位都曾经出现过一次,那么就代表b去掉这个数跟之前没区别
// 这样就可以找到f(a) = f(b);
void solve()
{
int n;
scanf("%d", &n);
vector<vector<int>> a(n);
map<int, int> b;
for (int i = 0; i < n; i++)
{
int k;
scanf("%d", &k);
a[i].resize(k);
for (int j = 0; j < k; j++)
{
scanf("%d", &a[i][j]);
// 这一位的数出现的次数加1
b[a[i][j]]++;
}
}
for (int i = 0; i < n; i++)
{
bool f = 1;
for (int j = 0; j < a[i].size(); j++)
{
// 如果有一位数只出现过一次,就说明去掉这个数不行
if (b[a[i][j]] == 1)
{
f = 0;
break;
}
}
if (f)
{
printf("Yes\n");
return;
}
}
printf("No\n");
}
int main()
{
int T;
scanf("%d", &T);
while (T--)
solve();
return 0;
}

posted on   KSzh  阅读(64)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示