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表示此步可以在第一.二.四 ...
随机推荐
- 通过Nginx 的反向代理来加强kibana的访问安全
https://blog.csdn.net/choelea/article/details/57406086
- python练习之-计算器
学习以堆栈模式编写-计算器 堆栈特点:先进后出, 如下: #!/opt/python3/bin/python3 # Author: yong import re def is_symbol(eleme ...
- Paul Graham:梦寐以求的编程语言
我的朋友曾对一位著名的操作系统专家说他想要设计一种真正优秀的编程语言.那位专家回答,这是浪费时间,优秀的语言不一定会被市场接受,很可能无人使用,因为语言的流行不取决于它本身.至少,那位专家设计的语言就 ...
- 【nodejs原理&源码赏析(3)】欣赏手术级的原型链加工艺术
目录 一. 概述 二. 原型链基础知识 三. Worker类的原型链加工 四. 实例的生成 五. 最后一个问题 六. 一些心得 示例代码托管在:http://www.github.com/dashno ...
- 如何使用NSOperations和NSOperationQueues 第二部分
这篇文章还可以在这里找到 英语 以下是对上面代码的注解: 导入PhotoRecord.h文件,这样你就可以在下载成功后,单独地设置PhotoRecord变量的图片属性(image property). ...
- 【面试 spring】【第七篇】spring的问题
1.spring你熟悉么?两大特色 spring 主要有IOC和AOP两大特色. =========================================================== ...
- .NET CORE TOKEN 权限验证
原文:.NET CORE TOKEN 权限验证 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012601647/article/details/ ...
- SolidEdge 如何由装配图快速生成爆炸视图
建立图纸精灵,组态中选择explode(没有下一步可选了) 点击完成即可绘制爆炸图
- firebug console说明
控制台(Console)是Firebug的第一个面板,也是最重要的面板,主要作用是显示网页加载过程中产生各类信息. 一.显示信息的命令 Firebug内置一个console对象,提供5种方法,用来显示 ...
- com.sun.jdi.InvocationException occurred invoking method 异常
参考链接:https://stackoverflow.com/questions/4123628/com-sun-jdi-invocationexception-occurred-invoking-m ...