题目简述:

共有n个动物,m条要求,每条要求描述了第x位上是1的话,必须购买y饲料,动物园里已有的动物必须的饲料已经购买了,问题是:在不要求增加购买饲料的基础上,还能放进去多少种动物?共有k个二进制,数据保证输入的动物编号各不相同,给出的饲料种类各不相同,n和m的范围都是100万,饲料的范围是1亿,k的范围是64(k表示有多少个二进制)

题解:

1、暴力:

枚举动物,枚举m条要求,如果ai&&1<<xi==1的话,说明动物编号中满足这一条要求,b[i]=true;

暴力枚举i,范围在1<<k-1,枚举m条要求,如果b[j]==false,但是i&&1<<xi==true,则这个不满足

最终满足的是2的k次方减去n减去不满足要求的

2、正解

如果能找到有多少个位置符合要求,那么这些位置无论是0还是1都可以,1表示有这种饲料,0表示没这种饲料也行,最后符合要求的动物数量为1<<cnt个,去掉动物园的n个,就是  最后的答案。这里面有个重要的条件是饲料各不相同,也就是说不可能不同的二进制位对应相同的饲料,如果是这样的话,可能比较难处理,但是这里去掉了这个条件

我们可以把所有的动物编号都或起来,或之后的值为F,之后枚举m个要求,如果F|(1<<xi)!=F,那么说明这一个二进制没有,k--,同时设置这个值被访问过

最后,k表示哪些位置合法

3、改进

当然,如果这道题修改一下,不同的二进制位置可以对应相同的饲料,这样的话,此题的解法就完全不同,举个例子,1 4 5三个动物编号,0和2的二进制位有值,如果1和2都对应相同的饲料,那么其实相当于1也是合法的位置,这里就需要特殊的处理,杨宸骁的代码适合这种情况

这里,附上他的代码:

#include<bits/stdc++.h>
using namespace std;
int n,m,c,k,x[1000005],y[1000005],lsh[1000005],cnt;
unsigned long long xx;
bool f[1000005],flag[1000005],ff[1000005],fff[1000005];
int main(){
// freopen("zoo.in","r",stdin);
// freopen("zoo.out","w",stdout);
cin>>n>>m>>c>>k;
if(n==0&&k==64){
cout<<"18446744073709551616";
return 0;
}
for(int i=1;i<=n;i++){
cin>>xx;
int j=1;
while(xx){
if(xx&1)f[j-1]=true;
xx/=2;
j++;
}
}
for(int i=1;i<=m;i++){
cin>>x[i]>>y[i];
lsh[i]=y[i];
}
sort(lsh+1,lsh+m+1);
int tot=unique(lsh+1,lsh+m+1)-lsh-1;
for(int i=1;i<=m;i++){
y[i]=lower_bound(lsh+1,lsh+tot+1,y[i])-lsh;
fff[x[i]]=true;
if(f[x[i]]==true)flag[y[i]]=true;
}
for(int i=1;i<=m;i++){
if(flag[y[i]]==true)ff[x[i]]=true;
}
for(int j=0;j<=k-1;j++){
if(ff[j]||!fff[j])cnt++;
}
cout<<(1ull<<cnt)-n<<endl;
return 0;
}

csp-s2020 T2 动物园的更多相关文章

  1. 「考试」CSP-S 2020

    乱扯 爆炸的过程是这样的 写了\(2.5h\)的\(T1\)过不去大样例,自闭了 决定调\(T2\)然后过了样例但事实上写的完全是假的 这个时候突然\(T1\)灵光一闪就没再看\(T2\)了 然后就一 ...

  2. 2019.10.29 CSP%您赛第四场t2

    我太菜了我竟然不会分层图最短路 ____________________________________________________________________________________ ...

  3. HeRaNO's NOIP CSP Round Day 2 T2 PESTC

    对于我这种菜鸡来说还是挺有迷惑性的. 在考场发现答案问的是跟最值有关的数量,想到二分,结果果然具有单调性,考虑二份答案+验证 其实什么反转什么的,可以不用去管他,对于长度小于二分答案mid的道路,不去 ...

  4. UOJ #5. 【NOI2014】动物园 扩大KMP

    第一次NOI称号. ... 扩展假设知道KMP如果. .. . 就是水题了. ... #5. [NOI2014]动物园 统计提交情况 描写叙述 提交 近日.园长发现动物园中好吃懒做的动物越来越多了.比 ...

  5. CSP 2019 游记

    Day -32 开坑. 没什么好说的,等个 5 天等初赛(应该叫第一轮认证)挂掉之后就能弃坑了. 今天开始停课,虽然每天只停半天,但是感觉还是特别的舒服~ 然而得等初赛过了才能全天停课-- 没关系,熬 ...

  6. 【CSP游记S】

    简略:初三小蒟蒻本想体验一下提高,结果尝到了省选的滋味.fclose没有打,目前不知道会不会有影响,很伤心. day 1 大早上的6:30起床天好黑啊~,想起这次没有面包吃,到华生园买了包熊博士(毕竟 ...

  7. [bzoj1151][CTSC2007]动物园zoo_状压dp

    动物园zoo 题目大意:https://www.lydsy.com/JudgeOnline/problem.php?id=1151 题解: 我们发现每个点只会往右延伸$5$个,这个数非常小. 再加上每 ...

  8. 第十八次CSP认证游记 | 2019.12.15

    CSP认证的考试是Haogod介绍的,取得一定成绩之后能有机会参加CCSP的分赛区和全国决赛.这次来参加认证要感谢老师的奔走为我们申请学校的报销,虽然最终因为这不是比赛所以报名费和差旅费下不来,但是老 ...

  9. 「CSP」第一届提高组考后总结

    「CSP」第一届提高组考后总结 问题分析+反思 成绩 心态 考前心态 考时心态 考后心态 方法 心灵鸡汤... 在学习了三年之后,我们信竞迎来了初中最后一次大考,也是第一次 CSPCSPCSP 考试. ...

  10. 2020 CSP&NOIP 游记

    CSP初赛 CSP初赛 Day -1 早上打了模拟赛,T2寒假正好做过,然而还是还是被踩Orz,郑外NB!.中午出校吃了大盘鸡和拉面,还带回来了三瓶可乐. 初赛知识点看了两页不(看)想(不)看(懂)了 ...

随机推荐

  1. ACR2022的辩论:DMARDs在pre-RA中的作用

    ACR2022的辩论:DMARDs在pre-RA中的作用 2022年11月13日   亚临床RA在风湿病学实践中越来越常见:然而,目前尚不清楚如何管理这些患者,以及启动DMARD是否可以预防RA的发展 ...

  2. LeetCode算法训练-回溯 491.递增子序列 46.全排列 47.全排列 II

    欢迎关注个人公众号:爱喝可可牛奶 LeetCode算法训练-回溯 491.递增子序列 46.全排列 47.全排列 II LeetCode 491. 递增子序列 分析 找出并返回所有数组中不同的递增子序 ...

  3. 【javascript】slice()、substring()和substr() 三种字符串截取方法区别

    slice(start, end) :slice(start, end) 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分.  1.start(包含) 和 end(不包含) 参数来指定字符串 ...

  4. mybatis中的土鸡杂鱼

    mybatis中的土鸡杂鱼 目录 mybatis中的土鸡杂鱼 1.mapper接口为什么要和mapper.xml在同一个路径下? 2.主键生成为什么配置一个字段就可以? 原理 3.为什么默认使用的是预 ...

  5. FMC子卡设计资料原理图:FMC177-基于AD9361的双收双发射频FMC子卡

    FMC177-基于AD9361的双收双发射频FMC子卡 一.板卡介绍 FMC177射频模块分别包含两个接收通道与发射通道,其频率可覆盖达到70MHz~6GHz,AD9361芯片提供具有成本效益的实验平 ...

  6. Neo4j安装及简单使用【转】

    转载防丢失. 一.Neo4j和图数据库简介 neo4j是基于Java语言编写图形数据库.图是一组节点和连接这些节点的关系.图形数据库也被称为图形数据库管理系统或GDBMS. Neo4j的是一种流行的图 ...

  7. 2022-05-27内部群每日三题-清辉PMP

    1.一个组织正在开始一个大型的.首个这种类型的项目.项目经理与相关方召开会议,以识别存在的项目问题.项目经理应该使用什么工具和技术来改进会议的结果? A.头脑风暴.核对单和访谈 B.头脑风暴.因果图和 ...

  8. 7. mixin的实现原理

    mixin的实现原理 在Vue.mixin()中的内容会被维护到Vue.options静态属性里面 然后通过mergeOptions以特定的合并策略将全局的属性和用户属性合并起来 在获取用户选项的时候 ...

  9. SpecCPU2017 测试cpu性能

    SpecCPU介绍见: https://blog.csdn.net/qq_36287943/article/details/103601539 官网:https://spec.org/ 1.SpecC ...

  10. SSLCipherCheck_v1.4.2

    Usage: sslciphercheck.exe -h <Host> -p <Port> -u <URL> -c <CSV File> -i < ...