问题求解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提高组—— 问题求解 与 完善程序的更多相关文章

  1. NOIP提高组初赛难题总结

    NOIP提高组初赛难题总结 注:笔者开始写本文章时noip初赛新题型还未公布,故会含有一些比较老的内容,敬请谅解. 约定: 若无特殊说明,本文中未知数均为整数 [表达式] 表示:在表达式成立时它的值为 ...

  2. [NOIP提高组2018]货币系统

    [TOC] 题目名称:货币系统 来源:2018年NOIP提高组 链接 博客链接 CSDN 洛谷博客 洛谷题解 题目链接 LibreOJ(2951) 洛谷(P5020) 大视野在线评测(1425) 题目 ...

  3. 津津的储蓄计划 NOIp提高组2004

    这个题目当年困扰了我许久,现在来反思一下 本文为博客园ShyButHandsome的原创作品,转载请注明出处 右边有目录,方便快速浏览 题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津\ ...

  4. 2018.12.30【NOIP提高组】模拟赛C组总结

    2018.12.30[NOIP提高组]模拟赛C组总结 今天成功回归开始做比赛 感觉十分良(zhōng)好(chà). 统计数字(count.pas/c/cpp) 字符串的展开(expand.pas/c ...

  5. NOIP提高组2004 合并果子题解

    NOIP提高组2004 合并果子题解 描述:在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消 ...

  6. 计蒜客 NOIP 提高组模拟竞赛第一试 补记

    计蒜客 NOIP 提高组模拟竞赛第一试 补记 A. 广场车神 题目大意: 一个\(n\times m(n,m\le2000)\)的网格,初始时位于左下角的\((1,1)\)处,终点在右上角的\((n, ...

  7. 1043 方格取数 2000 noip 提高组

    1043 方格取数  2000 noip 提高组 题目描述 Description 设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示(见样 ...

  8. 2018.12.08【NOIP提高组】模拟B组总结(未完成)

    2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...

  9. NOIP提高组题目归类+题解摘要(2008-2017)

    因为前几天作死立了一个flag说要把NOIP近十年的题目做一做,并写一个题目归类+题解摘要出来,所以这几天就好好的(然而还是颓废了好久)写了一些这些往年的NOIP题目. 这篇博客有什么: 近十年NOI ...

随机推荐

  1. HTTP深入理解

    HTTP被设计于二十世纪九十年代初期,是一种可扩展的协议, 它是应用层的协议, 通过TCP,或TLS加密的TCP连接来发送, 理论上任何可靠的传输协议都可以使用. 因其良好的扩展性,时至今日,它不仅被 ...

  2. 5.Hystrix-服务降级

    所谓降级,就是当某个服务出现异常之后,服务器将不再被调用,此时服务端可以自己准备一个本地的fallback回调,返回一个缺省值. 这样做,虽然服务水平下降,但好歹可用,比直接挂掉要强,当然这也要看适合 ...

  3. java NIO入门【原】

    server package com.server; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import jav ...

  4. 前端面试题整理—ES6篇

    1.es5和es6的区别,说一下你所知道的es6 ECMAScript5,即ES5,是ECMAScript的第五次修订,于2009年完成标准化 ECMAScript6,即ES6,是ECMAScript ...

  5. Javaweb学习笔记——(十四)—————— 服务器端验证注册登入表单项目

    项目:https://download.csdn.net/download/qq_40223688/10463436 项目 功能: *注册 *登录--------------------------- ...

  6. 【JS】获取一个月份有多少天

    new Date(year, month, 0).getDate() 通过 Date 构造函数传入年份.月份.零,然后通过调用获取日期函数即可获取当前月份有多少天 new Date(2019, 2, ...

  7. python的sys.args使用

    一.sys 模块 sys是Python的一个「标准库」,也就是官方出的「模块」,是「System」的简写,封装了一些系统的信息和接口. 官方的文档参考:https://docs.python.org/ ...

  8. Oracle 11g R2 for Win10(64位)的安装步骤

    下载 官网下载地址: win64_11gR2_database_1of2.zip win64_11gR2_database_2of2.zip 将两个压缩包解压到同一个目录下,即"databa ...

  9. 将sublime添加到鼠标右键

    1.win+R 输入regedit ,打开注册表. 2.找到HKEY_CLASSES_ROOT/*/shell目录,在此目录下 ①新建项,命名为“sublime Text”(也可以是其他名字),双击右 ...

  10. python中的Process

    from multiprocessing import Process import time import os # # def acb(n): # print(n) # # # if __name ...