2018.9.15陈老师模拟赛1

Posted scx2015noip-as-php

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018.9.15陈老师模拟赛1相关的知识,希望对你有一定的参考价值。

质量检查(quality)

【问题描述】

食品安全部门要检查一些食品中是否含有违禁成分。现在总共有 n 种食品待查,对于每种食品,他们需要给出是否含有这种成分。对一份样品,检测设备可以输出是否含有违禁成分。由于检测设备相当敏感,如果将多份样品混合,只要其中任何一份含有这种添加剂,设备就会输出“含有”;否则如果设备输出“不含有”,则表示混合样品中的每一种都不含有违禁成分。又由于每次检测都非常昂贵,为了减少检测次数,部门希望有策略地将一些样品混合以后进行检测。

对于每种食品,部门都留存了两份样品,可以认为这两份样品的检测结果一定是一样的,只要确定了其中一份的结果就确定了这种食品的结果。

根据经验,每种食品中是否含有违禁成分是独立同分布的(即相互之间没有任何关联),它们含有该成分的概率都是 k。现在你需要帮食品安全部门设计一个检测的策略,使得检测次数的期望值尽可能少。你只需要输出这个期望值。

【输入格式】

从文件 quality.in 中读入数据。

第一行包含一个正整数 T(1 ≤ T ≤ 105) ,表示这个测试点内的数据组数。接下来 T 行,每行两个数,分别表示 n(1 ≤ n ≤ 106) 、k(0 < k < 1) ,其中 k 最多

包含 6 位小数。

【输出格式】

输出到文件 quality.out 中。

输出 T 行。

每行一个浮点数,表示一组数据的答案,四舍五入精确到整数。

【样例1输入】

2

6 0.1

6 0.3

【样例1输出】

4

6

 

【子任务】

对于 20%的数据,n ≤ 5 ;

对于 40%的数据,n ≤ 10 ;

对于 60%的数据,n ≤ 2×103 ;

对于 100%的数据,n ≤ 106 ;

在所有子任务中,均匀分布着 50%的数据,满足 T ≤ 100 。

对于 100%的数据,保证准确答案的小数部分不大于 0.4 或不小于 0.6 。

 

倍数问题(multi)

【题目描述】

众所周知,小葱同学擅长计算,尤其擅长计算一个数是否是另外一个数的倍数。但小葱只擅长两个数的情况,当有很多个数之后就会比较苦恼。现在小葱给了你 n 个数,希望你从这 n 个数中找到三个数,使得这三个数的和是 K 的倍数,且这个和最大。数据保证一定有解。

【输入格式】

从文件 multi.in 中读入数据。第一行包括 2 个正整数 n, K。

第二行 n 个正整数,代表给定的 n 个数。

【输出格式】

输出到文件 multi.out 中。

输出一行一个整数代表所求的和。

【样例1输入】

4 3

1 2 3 4

【样例1输出】

9

【样例1解释】

选择 2、3、4。

【子任务】

对于 30%的数据,n ≤ 100。

对于 60%的数据,n ≤ 1000。

对于另外 20%的数据,K ≤ 10。

对于 100%的数据,1 ≤ n ≤ 105,1 ≤ K ≤ 103,给定的 n 个数均不超过 108

 

30tps:设$mod[i][j]$表示在第1~n-1位中,两个数的和模k的值为j时的最大值,这样就预处理出了前两个数的情况。枚举第三个数x,答案就是$max left{ x+mod[i-1][k-x mod k] ight}$ | $3 leq i leq n$

60tps:设$mod[i][j]$表示在第1~n-1位中,一个数模k的值为j时的最大值,这样就预处理出了一个数的情况。枚举剩下两个数即可,方法类上。

以上是关于2018.9.15陈老师模拟赛1的主要内容,如果未能解决你的问题,请参考以下文章

python模拟老师授课下课情景

0x02 枚举模拟递推

5.29 省选模拟赛 波波老师 SAM 线段树 单调队列 并查集

5.29 省选模拟赛 波波老师 SAM 线段树 单调队列 并查集

英飞凌的模拟硅麦

某次模拟赛 请客