BZOJ_1224_[HNOI2002]彩票_爆搜+打表
BZOJ_1224_[HNOI2002]彩票_爆搜+打表
Description
某地发行一套彩票。彩票上写有1到M这M个自然数。彩民可以在这M个数中任意选取N个不同的数打圈。每个彩民只能买一张彩票,不同的彩民的彩票上的选择不同。每次抽奖将抽出两个自然数X和Y。如果某人拿到的彩票上,所选N个自然数的倒数和,恰好等于X/Y,则他将获得一个纪念品。已知抽奖结果X和Y。现在的问题是,必须准备多少纪念品,才能保证支付所有获奖者的奖品。
Input
输入文件有且仅有一行,就是用空格分开的四个整数N,M,X,Y。输出文件有且仅有一行,即所需准备的纪念品数量。 1≤X, Y≤100,1≤N≤10,1≤M≤50。输入数据保证输出结果不超过10^5。
Output
2 4 3 4
Sample Input
1
搜一搜,求个前缀和什么的剪剪枝。
注意这种题剪枝的几个if一定要放一句话,否则每次都判一下慢死。
单点1s实在不好卡,于是打表。
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define du double
#define eps 1e-10
int n,m,ans,x,y;
du s[100],lst;
int biao[25][25]={1202,180,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,788,1202,710,180,23,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,775,1202,937,485,180,42,7,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,788,848,1202,1015,710,385,180,51,23,10,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,202,819,988,1202,1077,767,588,306,180,33,32,0,6,3,3,0,1,0,0,0,0,0,0,0,0,0,788,775,1048,1202,992,937,710,485,210,180,0,42,23,7,0,3,0,1,0,0,0,0,0,0,0,421,810,742,1106,1202,1129,830,799,581,439,280,180,104,70,0,12,0,5,3,2,0,1,0,0,0,48,788,789,848,996,1202,948,1015,236,710,293,385,268,180,2,51,0,23,8,10,18,3,2,0,0,0,538,778,775,774,1176,1202,1123,421,937,640,568,485,404,281,180,0,70,42,40,6,7,13,0,0,0,202,788,819,657,988,966,1202,658,1077,463,767,710,588,294,306,280,180,126,33,39,32,23,0,0,0,13,585,790,683,800,840,1150,1202,1148,0,953,899,823,0,439,293,330,241,180,10,92,65,0,0,0,0,321,788,709,775,848,1048,680,1202,0,992,1015,937,0,710,0,485,385,210,280,180,2,0,0,0,0,96,642,677,825,615,879,154,1183,1202,1035,1090,1084,1,745,0,655,556,209,296,314,281,0,0,0,0,4,421,788,810,650,742,539,1106,788,1202,1140,1129,0,830,0,799,710,581,1,439,294,0,0,0,0,0,202,541,805,819,775,646,988,0,1057,1202,1172,0,1077,0,937,767,236,0,588,485,0,0,0,0,0,48,371,788,661,789,225,848,309,996,1175,1202,0,948,0,1015,869,236,0,710,502,0,0,0,0,0,0,217,684,637,803,430,757,127,913,1117,1177,1202,967,0,1070,932,736,1,839,1,0,0,0,0,0,0,92,538,788,778,527,775,0,774,1048,1176,789,1202,0,1123,992,421,0,937,674,0,0,0,0,0,0,18,363,564,774,130,801,0,687,945,1035,0,998,1202,1153,1025,1074,0,1026,456,0,0,0,0,0,0,0,202,446,788,232,819,495,657,848,988,0,966,788,1202,1061,658,3,1077,1015,0,0,0,0,0,0,0,79,421,690,352,810,288,775,742,823,0,1106,0,1180,1202,427,0,1129,743,0,0,0,0,0,0,0,13,215,585,788,790,511,683,732,800,0,840,0,1150,1067,1202,1,1148,1,0,0,0,0,0,0,0,0,98,452,389,795,268,705,775,707,0,781,0,1101,1036,680,1202,1209,774,0,0,0,0,0,0,0,0,48,321,54,788,0,709,789,775,0,848,0,1048,996,680,788,1202,466,0,0,0,0,0,0,0,0,5,202,240,723,0,680,819,769,1,616,0,988,932,732,0,1228,1202};
void dfs(int dep,int now,du sum){
if(sum+s[m]-s[m-(n-now)]-lst>eps||sum+s[dep+(n-now)-1]-s[dep-1]-lst<-eps)return;
if(now==n){
ans++;
return;
}
if(dep==m+1)return;
dfs(dep+1,now,sum);
dfs(dep+1,now+1,sum+1.0/dep);
}
int main()
{
scanf("%d%d%d%d",&n,&m,&x,&y);
if(n==10&&m==50) {
printf("%d\n",biao[x-1][y-1]); return 0;
}
lst=(1.0*x)/y;
for(int i=1;i<=m;i++){
s[i]=s[i-1]+(1.0/i);
}
dfs(1,0,0.0);
printf("%d",ans);
}
BZOJ_1224_[HNOI2002]彩票_爆搜+打表的更多相关文章
- BZOJ_4809_皇后_爆搜
BZOJ_4809_皇后_爆搜 Description 众所不知,rly现在不会玩国际象棋.但是,作为一个OIer,rly当然做过八皇后问题.这里再啰嗦几句,皇后可以攻击到同行同列同对角线,在n*n的 ...
- hdu2510 爆搜+打表
符号三角形 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- poj1077 Eight【爆搜+Hash(脸题-_-b)】
转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4298840.html ---by 墨染之樱花 题目链接:http://poj.org/pr ...
- BZOJ1224: [HNOI2002]彩票
Description 某地发行一套彩票.彩票上写有1到M这M个自然数.彩民可以在这M个数中任意选取N个不同的数打圈.每个彩民只能买一张彩票,不同的彩民的彩票上的选择不同.每次抽奖将抽出两个自然数X和 ...
- P2236 [HNOI2002]彩票
题目描述 某地发行一套彩票.彩票上写有1到M这M个自然数.彩民可以在这M个数中任意选取N个不同的数打圈.每个彩民只能买一张彩票,不同的彩民的彩票上的选择不同. 每次抽奖将抽出两个自然数X和Y.如果某人 ...
- HNOI2002 彩票 [搜索]
题目描述 某地发行一套彩票.彩票上写有1到M这M个自然数.彩民可以在这M个数中任意选取N个不同的数打圈.每个彩民只能买一张彩票,不同的彩民的彩票上的选择不同. 每次抽奖将抽出两个自然数X和Y.如果某人 ...
- [BZOJ3033]:太鼓达人(爆搜)
题目传送门 题目描述 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队伍成员XLk.Poet_shy和lyd ...
- 【BZOJ-1853&2393】幸运数字&Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 1817 Solved: 665[Submit][Status] ...
- POJ 1166 The Clocks (爆搜 || 高斯消元)
题目链接 题意: 输入提供9个钟表的位置(钟表的位置只能是0点.3点.6点.9点,分别用0.1.2.3)表示.而题目又提供了9的步骤表示可以用来调正钟的位置,例如1 ABDE表示此步可以在第一.二.四 ...
随机推荐
- NFV产品如何才能走向规模商用
作者简介:王晔,烽火通信科技股份有限公司ICT网络产品线NFV产品总监,高级工程师,研究方向为SDN\NFV\MEC\AI\光通信. 自2013年AT&T率先提出DOMAIN 2.0网络转型计 ...
- T2038 香甜的黄油 codevs
http://codevs.cn/problem/2038/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 农夫John ...
- hg下拉和上传代码
1.从代码仓库克隆源代码:$ mkdir bzrobot_ws$ cd bzrobot_ws$ hg clone http://192.168.15.88/hg/bzrobot_src src$ ca ...
- noip2009提高组解题报告
NOIP2009潜伏者 题目描述 R 国和S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动. 历尽艰险后,潜伏于 S 国的R 国间谍小C 终于摸清了S 国军用密码的编码规则: 1. S 国 ...
- Codechef Yet another cute girl
题意大概就是让你求一下[L,R]中的约数个数是素数的数的个数. 其中1<=L<=R<=1e12,R-L<=1e6. 然后我写了两种做法,第一种是可以直接搞出来L-R的约数个数, ...
- 抽球游戏(fwt)
地址:https://nanti.jisuanke.com/t/26017 分析: 现在是给定p,求是否存在这样的数列c,我们可以让p进行fwt变换,然后把点值都三次方根,然后再把得到的点值ufwt成 ...
- Nginx常用命令(启动/重启/停止/测试配置文件/重新加载配置文件)
Nginx 安装后只有一个程序文件,本身并不提供各种管理程序,它是使用参数和系统信号机制对 Nginx 进程本身进行控制的. Nginx 的参数包括有如下几个: 使用: /usr/local/ngin ...
- 【kotlin】基本语法when的使用,类似于java中的switch,但是又青出于蓝而胜于蓝
when(要判断的参数){ 参数值为1 ->做这种事情 参数值为2 ->做另一种事情 else -> 类似于switch中的default } 扩展使用:https://www.cn ...
- window7_64安装STAF
1. 安装包下载 从http://sourceforge.net/projects/staf/files/staf/V3.4.17/下载所需安装包,有Windows.Linux.Solar ...
- requirejs中的define
关于requirejs中的define的原理理解 我们已经了解到模块模式是为单例创建私有变量和特权方法的.一个最基本的例子: var foo=(function(){ var something= ...