大意:
有n个学生在做测量温度的实验,但是有些同学还没做完就上交了实验报告。温度的测量值精确到整数。对于第i个同学,如果他做完了实验,那么他的报告中温度值就是他实际的测量值,否则他会这么做:
(1) 在做完实验的同学中找一些人参考(至少能找到一个人参考)。
(2) 求这些人的温度平均值并下取整的到温度t。
(3) 随机修改这个值为 t + random(-xi, xi),random(-xi, xi) 是[-xi~xi]中随机取的一个整数,包含两端的值。
现在知道每个同学提交的温度值ti和随机系数xi,老师想知道至少有多少人做完了实验。
数据范围:n <= 20, 1 <= ti<= 10^6, 0 <= xi <= 10^6。
Solution
n=20,考虑状压
假如有一个集合,集合中的元素表示这个人是做完实验的。
那么 从这个集合中去掉一个元素的集合 能拓展到的人 在原集合中都能拓展到。
那么只需要考虑恰好同时参考了这个集合的所有人的情况转移即可。
#include<stdio.h>
#include<cstring>
#include<algorithm>
int n,cas,f[1050000