NOIP提高组—— 问题求解 与 完善程序
问题求解1:
甲乙丙丁四人在考虑周末要不要外出郊游。
已知①如果周末下雨,并且乙不去,则甲一定不去;②如果乙去,则丁一定去;③如果丙去,则丁一定不去;④如果丁不去,而且甲不去,则丙一定不去。如果周末丙去了,则甲___去了___(去了/没去)(1 分),乙___没去___(去
了/没去)(1 分),丁____没去__(去了/没去)(1 分),周末___没下雨___(下雨/没下雨)(2 分)。
分析:大水题,送分。只要别写错字就好了。
证明:
丙去了,联系③,丁不会去,一分 get
丁没去,联系②,乙不会去,一分 get
丁没去,丙去了,联系④,甲会去,一分 get
乙不去,甲去了,联系①,不会下雨,两分 get
问题求解2:
方程 a*b = (a or b) * (a and b),在 a,b 都取 [0, 31] 中的整数时,共有 454 组解。(* 表示乘法;or 表示按位或运算;and 表示按位与运算)
分析:考场上蒙了蒙,感觉等式成立的条件应该是 a 是 b 二进制下的子集或者 b 是 a 的子集。
然鹅并没有证明出来,于是就组合数搞了一下水掉了
(我同桌其实也 A 掉了,而且他还证出来了只不过他算错了2333)。
于是证明一下:
不妨设 t = a- (a & b) 。(一开始我是设 t = a&b 的,所以死活证不出来), 于是 (x | y) = (y+t)
然后我们将 t 带入式子,得到: $a * b = ( a - t ) * ( b + t )$ 。
然后展开
=> $a * b = a*b + a*t - b*t - t*t$
=> $a*t - b*t - t*t = 0$
=> $t * (a - b - t) = 0$
=> 1. t=0 ; 2. a=b+t
考虑 t=0 的情况,t 等于零 意味着 a = a&b ,那么也就说明二进制下的 a 被包含于 b 中。
再考虑 a=b+t 的情况,这意味着 b=a&b,那么也就说明二进制下的 b 被包含于 a 中。
于是我们得出结论: 若原式成立,则在二进制下,a 是 b 的子集,或者 b 是 a 的子集。
然后我们考虑到如果 a=b ,那么原式必然成立,所以我们先将答案加上 32 (0~31每个数都与自己匹配),然后我们去讨论 b 是 a 的 真 子集情况,然后把讨论出来的答案 * 2 累加上去就好了。
那么我们先考虑 a 的数值。如果说这时候我们枚举 32 次,答案也是能出来的,但是这样做不仅低效率而且容易出错,那么我们考虑在用二进制的方法枚举 a 。
其实既然说了 b 是 a 的二进制真子集了,那么其实 我们只需要枚举在 log32 位空格(也就是 5 个空格)里面,放 k(k=0~5) 个 1 的方案就好了,因为这些数对答案的贡献是相同的,都是 k 个 1 里面计算真子集数。
那么方案数也就是组合数 C(5,k) 了。然后我们考虑在这 k 个位置里面安排 b 。 那么 b 的数值方案数也还是组合数,就是 $sigma_{s=1}^{k} C(k,s)$ 了。
然后我们将 $sigma_{s=1}^{k} C(k,s)$ 乘上 C(5,k),再乘以二,累加进答案就好了。
最近我听说这道题是吉老师出的啊?而且原数据范围是 [ 0~1023 ] 啊?不过后来谁验题后改成 [ 0~32 ] 了? 反正不是杜雨皓【逃】
于是我们得出结论:吉老师是铁了心要给 zjoi 选手盖上棺材板了 (但愿复赛...咳咳)
emmm...其实1024的范围用上面的方法是可以计算的(唔,别打脸),只不过麻烦了点,就是不知道要不要用到更高深的组合数学理论(反正我不会,组合数没好好学哈~)
完善程序1:
对于一个1到
NOIP提高组—— 问题求解 与 完善程序的更多相关文章
- NOIP提高组初赛难题总结
NOIP提高组初赛难题总结 注:笔者开始写本文章时noip初赛新题型还未公布,故会含有一些比较老的内容,敬请谅解. 约定: 若无特殊说明,本文中未知数均为整数 [表达式] 表示:在表达式成立时它的值为 ...
- [NOIP提高组2018]货币系统
[TOC] 题目名称:货币系统 来源:2018年NOIP提高组 链接 博客链接 CSDN 洛谷博客 洛谷题解 题目链接 LibreOJ(2951) 洛谷(P5020) 大视野在线评测(1425) 题目 ...
- 津津的储蓄计划 NOIp提高组2004
这个题目当年困扰了我许久,现在来反思一下 本文为博客园ShyButHandsome的原创作品,转载请注明出处 右边有目录,方便快速浏览 题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津\ ...
- 2018.12.30【NOIP提高组】模拟赛C组总结
2018.12.30[NOIP提高组]模拟赛C组总结 今天成功回归开始做比赛 感觉十分良(zhōng)好(chà). 统计数字(count.pas/c/cpp) 字符串的展开(expand.pas/c ...
- NOIP提高组2004 合并果子题解
NOIP提高组2004 合并果子题解 描述:在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消 ...
- 计蒜客 NOIP 提高组模拟竞赛第一试 补记
计蒜客 NOIP 提高组模拟竞赛第一试 补记 A. 广场车神 题目大意: 一个\(n\times m(n,m\le2000)\)的网格,初始时位于左下角的\((1,1)\)处,终点在右上角的\((n, ...
- 1043 方格取数 2000 noip 提高组
1043 方格取数 2000 noip 提高组 题目描述 Description 设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示(见样 ...
- 2018.12.08【NOIP提高组】模拟B组总结(未完成)
2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...
- NOIP提高组题目归类+题解摘要(2008-2017)
因为前几天作死立了一个flag说要把NOIP近十年的题目做一做,并写一个题目归类+题解摘要出来,所以这几天就好好的(然而还是颓废了好久)写了一些这些往年的NOIP题目. 这篇博客有什么: 近十年NOI ...
随机推荐
- Hadoop记录-Linux Service
[Unit] Description=Datanode After=syslog.target network.target auditd.service sshd.service datanode_ ...
- [leetcode-129] 求根到叶子节点数字之和
(1AC) 给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字. 例如,从根到叶子节点路径 1->2->3 代表数字 123. 计算从根到叶子节 ...
- 015、调试Dockerfile(2019-01-04 周五)
参考https://www.cnblogs.com/CloudMan6/p/6853329.html Dockerfile构建镜像的过程 1.从base镜像运行一个容器 2.执行一条指令,对容 ...
- 【移动端】300ms延迟以及点透事件原因以及解决方案
产生原因 移动端会有双击缩放的这个操作,因此浏览器在click之后要等待300ms,看用户有没有下一次点击,也就是这次操作是不是双击 说完移动端点击300ms延迟的问题,还不得不提一下移动端点击穿透的 ...
- vue2.0 子组件 父组件之间的传值
常用的子组件给父组件传值/调父组件方法 //子组件let val = "";//可以是任意类型this.$emit('fatherFun', val); //父组件<fath ...
- select实现简单TCP通信(ubuntu 18.04)
一.服务器程序(server.c) #include <stdio.h> #include <unistd.h> #include <stdlib.h> #incl ...
- Docker摘要
Docker https://www.docker.com/ 消除应用的依赖矩阵. 消除硬件依赖 和 软件依赖. Escape the app dependency matrix Eliminate ...
- python 中: lambda
lambda 定义了一个匿名函数,是代码更简洁 lambda x:x+1和def g(x): return x+1是相同的哦. python 中的map,filter, reduce 函数为序列内置函 ...
- extern 关键字使用
extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 如在头文件中: extern in ...
- Coursera, Machine Learning, Anomoly Detection & Recommender system
Algorithm: When to select Anonaly detection or Supervised learning? 总的来说guideline是如果positive e ...