Codeforces Round #267 (Div. 2) B. Fedor and New Game

After you had helped George and Alex to move in the dorm, they went to help their friend Fedor play a new computer game ?Call of Soldiers 3?.

The game has (m?+?1) players and
n types of soldiers in total. Players ?Call of Soldiers 3? are numbered form
1 to (m?+?1). Types of soldiers are numbered from
0 to n?-?1. Each player has an army. Army of the
i-th player can be described by non-negative integer
xi. Consider binary representation of
xi: if the
j-th bit of number
xi equal to one, then the army of the
i-th player has soldiers of the
j-th type.

Fedor is the (m?+?1)-th player of the game. He assume that two players can become friends if their armies differ in at most
k types of soldiers (in other words, binary representations of the corresponding numbers differ in at most
k bits). Help Fedor and count how many players can become his friends.

Input

The first line contains three integers n,
m, k
(1?≤?k?≤?n?≤?20; 1?≤?m?≤?1000).

The i-th of the next
(m?+?1) lines contains a single integer xi
(1?≤?xi?≤?2n?-?1), that describes the
i-th player‘s army. We remind you that Fedor is the
(m?+?1)-th player.

Output

Print a single integer — the number of Fedor‘s potential friends.

Sample test(s)

Input

7 3 1
8
5
111
17

Output

0

Input

3 3 3
1
2
3
4

Output

3
题意:给你m+1个数让你推断所给的数的二进制形式与第m+1个数不想同的位数是否小于等于k。累计答案
思路:题意题
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 1010;

int num[maxn], cnt;

int main() {
	int n, m, k;
	scanf("%d%d%d", &n, &m, &k);
	for (int i = 0; i < m; i++)
		scanf("%d", &num[i]);
	scanf("%d", &cnt);
	int ans = 0;
	for (int i = 0; i < m; i++) {
		int cur = 0;
		for (int j = 0; j < n; j++)
			if (((1<<j)&num[i]) != ((1<<j)&cnt))
				cur++;
		if (cur <= k)
			ans++;
	}
	printf("%d\n", ans);
	return 0;
}

时间: 2024-12-17 23:05:25

Codeforces Round #267 (Div. 2) B. Fedor and New Game的相关文章

Codeforces Round #267 Div.2 D Fedor and Essay -- 强连通 DFS

题意:给一篇文章,再给一些单词替换关系a b,表示单词a可被b替换,可多次替换,问最后把这篇文章替换后(或不替换)能达到的最小的'r'的个数是多少,如果'r'的个数相等,那么尽量是文章最短. 解法:易知单词间有二元关系,我们将每个二元关系建有向边,然后得出一张图,图中可能有强连通分量(环等),所以找出所有的强连通分量缩点,那个点的minR,Len赋为强连通分量中最小的minR,Len,然后重新建图,跑一个dfs即可得出每个强连通分量的minR,Len,最后O(n)扫一遍替换单词,统计即可. 代码

Codeforces Round #267 (Div. 2) C. George and Job(DP)补题

Codeforces Round #267 (Div. 2) C. George and Job题目链接请点击~ The new ITone 6 has been released recently and George got really keen to buy it. Unfortunately, he didn't have enough money, so George was going to work as a programmer. Now he faced the follow

01背包 Codeforces Round #267 (Div. 2) C. George and Job

题目传送门 1 /* 2 题意:选择k个m长的区间,使得总和最大 3 01背包:dp[i][j] 表示在i的位置选或不选[i-m+1, i]这个区间,当它是第j个区间. 4 01背包思想,状态转移方程:dp[i][j] = max (dp[i-1][j], dp[i-m][j-1] + sum[i] - sum[i-m]); 5 在两个for循环,每一次dp[i][j]的值都要更新 6 */ 7 #include <cstdio> 8 #include <cstring> 9 #i

Codeforces Round #267 (Div. 2)

A.George and Accommodation 题意:给定数组a,b,问b-a>=2有多少个 思路:直接模拟.. B.Fedor and New Game 题意:给定m+1个n位以内的二进制数,求前m个有多少个跟第m+1的二进制下不同位数不超过k的个数 思路:直接模拟 C.George and Job 题意:给定n个数,求k个的段,每段有m个连续得数,使得和最大 思路:直接dp,注意long long不会超内存 1 /* 2 * Author: Yzcstc 3 * Created Tim

Codeforces Round #267 (Div. 2) B

题目: B. Fedor and New Game time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output After you had helped George and Alex to move in the dorm, they went to help their friend Fedor play a new computer

Codeforces Round #267 (Div. 2) solution

A.George and Accommodation 题目大意:给你n个宿舍的可以容纳的人数和现在已住的人数,问有几个宿舍可以安排两个人进去住. 解法:模拟,无trick. 代码: 1 #include <cstdio> 2 3 int main() { 4 int n; 5 while(scanf("%d", &n) != EOF){ 6 int a, b, ans = 0; 7 for(int i = 0; i < n; i++) { 8 scanf(&q

Codeforces Round #267 (Div. 2) C. George and Job

The new ITone 6 has been released recently and George got really keen to buy it. Unfortunately, he didn't have enough money, so George was going to work as a programmer. Now he faced the following problem at the work. Given a sequence of n integers p

Codeforces Round #267 (Div. 2) 水了一发 真.记录

闲着没事就水了一发DIV2,本来想新注册一个小小号来着.结果验证码一直显示不出来.于是就用小号做. 结果rank44,但是没有rating. 以下均不解释题意了. A:O(n)脑残模拟. Code: #include <cstdio> int main() { int n, a, b; scanf("%d", &n); int res = 0; while(n--) { scanf("%d%d", &a, &b); if (a +

Codeforces Round #267 (Div. 2) A. George and Accommodation

George has recently entered the BSUCP (Berland State University for Cool Programmers). George has a friend Alex who has also entered the university. Now they are moving into a dormitory. George and Alex want to live in the same room. The dormitory ha