【2018百度之星资格赛】 A 问卷调查 - 位运算&动规
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6344
参考博客:在此感谢http://www.cnblogs.com/LQLlulu/p/9419232.html博主,多谢指教,受益良多
Summarize:
1. 使用动态规划的方法,状态转移方程:f[i][p]=f[i-1][p]+i-和第i个答案集合相同的数目;
2. 转移方程中i表示第i份答卷,p表示被选中问题集合,因为每个问题只有A,B两种答案,故可使用二进制表示,1表示选‘A’,2表示选‘B’;
3. p则表示问题集合,从01至(1<<m)-1循环;
4. “+i”表示假设前i份问卷都与i不同(包括i本身);
5. PS: 注意数组范围,虽然题目只给了n在1000以内,但通过刚才的分析我们发现,vis数组因为开到了(1<<m)-1,所以至少要开到1<<m,即1024!!
附代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; #define LL long long
const int N = ;
int T, n, m, k, f[N][<<], vis[N];
char text[N][]; int main()
{
scanf("%d", &T);
for(int t=; t<=T; t++)
{
scanf("%d%d%d", &n, &m, &k); for(int i=; i<=n; i++)
scanf("%s", text[i]); int all = (<<m)-;
for(int p=; p<=all; p++) {
memset(vis, , sizeof(vis));
for(int i=; i<=n; i++) {
int w=;
for(int j=; j<m; j++) {
if( p&(<<j) && text[i][j]=='A')
w|=(<<j);
}
vis[w]++;
f[i][p] = f[i-][p]+i-vis[w]; }
} int ans=;
for(int i=; i<(<<m); i++)
if(f[n][i]>=k)
ans++;
printf("Case #%d: %d\n", t, ans);
} return ;
}
【2018百度之星资格赛】 A 问卷调查 - 位运算&动规的更多相关文章
- HDU - 6344 2018百度之星资格赛 1001调查问卷(状压dp)
调查问卷 Accepts: 1289 Submissions: 5642 Time Limit: 6500/6000 MS (Java/Others) Memory Limit: 262144 ...
- 【2018百度之星资格赛】F 三原色图 - 最小生成树
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6349 Knowledge Point: 最小生成树算法Prim&Kruskal Summari ...
- 2018百度之星资格赛T2 子串查询
[题解] 很容易想到暴力做法:对于每个询问暴力查找区间内的最小字母,统计其出现次数.效率O(N^2),无法通过全部数据. 我们可以换一个思路,设f[i][j]为第i个字母(字母‘A'到’Z'分别对应0 ...
- 2018百度之星资格赛A B F
A.调查问卷 度度熊为了完成毕业论文,需要收集一些数据来支撑他的论据,于是设计了一份包含 mm 个问题的调查问卷,每个问题只有 'A' 和 'B' 两种选项. 将问卷散发出去之后,度度熊收到了 nn ...
- HDU 5688:2016"百度之星" - 资格赛 Problem D
原文链接:https://www.dreamwings.cn/hdu5688/2650.html Problem D Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 5685:2016"百度之星" - 资格赛 Problem A
原文链接:https://www.dreamwings.cn/hdu5685/2637.html Problem A Time Limit: 2000/1000 MS (Java/Others) ...
- 2016百度之星 资格赛ABCDE
看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=690 交题:http://acm.hdu.edu.cn/search.php ...
- HDU 5686:2016"百度之星" - 资格赛 Problem B
原文链接:https://www.dreamwings.cn/hdu5686/2645.html Problem B Time Limit: 2000/1000 MS (Java/Others) ...
- HDU6383 2018 “百度之星”程序设计大赛 - 初赛(B) 1004-p1m2 (二分)
原题地址 p1m2 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...
随机推荐
- VMware14秘钥
VMware虚拟机已升级至14版本,之前的12版本的秘钥已经无法使用,在此分享一下VMware Workstation 14永久激活密钥: CG54H-D8D0H-H8DHY-C6X7X-N2KG6 ...
- forceStopPackage与killBackgroundProcesses方法
最近了解一键清理功能,需要实现强制关闭进程的功能.下面介绍下killBackgroundProcesses()方法和forceStopPackage()方法. killBackgroundProces ...
- C#数字、16进制字符串和字节之间互转
转自http://luohonghong.blog.163.com/blog/static/78312058201242632055642/ 如下: .数字和字节之间互转 ; byte[] bytes ...
- android 使用AlarmManager定时启动service
private static AlarmManager am; private static PendingIntent pendingIntent; /** * 使用 AlarmManager 来 ...
- 配置Cocos Code IDE 可以正常运行的组合:jdk,sdk ,ndk, ant, cocos2d-x
Cocos Code IDE:Cocos Code IDE 1.0.0-RC2 jdk:Cocos Code IDE 自动的jdk sdk:8以上 ndk:r9d(r10有bug),希望以后版本可以修 ...
- ORACLE游标概念讲解
1,什么是游标? ①从表中检索出结果集,从中每次指向一条记录进行交互的机制. ②关系数据库中的操作是在完整的行集合上执行的. 由 SELECT 语句返回的行集合包括满足该语句的 WHERE 子句所 ...
- 33. Extjs中的tree节点的操作
转自:https://blog.csdn.net/masterShaw/article/details/51354351?utm_source=blogkpcl9 ext 树节点操作 tree ...
- 14. extjs中treepanel属性和方法
转自:http://www.cnblogs.com/connortang/p/4414907.html 1.Ext.tree.TreePanel 主要配置项: root:树的根节点. rootVisi ...
- 【152】C# 操作 Excel 杂记
前面写了一篇博文是关于 C# 操作 Excel 的文章,但是里面有些中规中矩,搞的我不知道怎么写了,所以另开一帖.. 注意:基本应用如下所示! //首先是引用 using Excel = Micros ...
- bzoj 1639: [Usaco2007 Mar]Monthly Expense 月度开支【二分】
忘开long long了居然没WA 二分答案,枚举判断看最后需要的月份数是否小于等于要求的即可 #include<iostream> #include<cstdio> usin ...