D - Eqs解题报告(黄杰)
来源:互联网 发布:淘宝内部优惠券jp519 编辑:程序博客网 时间:2024/04/30 22:09
题目大意:这个。。就是求满足式子的xi的可能性的数目。
题目链接:http://poj.org/problem?id=1840
方法:hash
思路:我觉得这个题就是hash的入门题,能让你初步理解hash的作用,如果采用最暴力的做法,五重循环。。答案理论上是可以出来的,但是绝对超时,所以我么们可以通过大数组来存储,将等式分为两部分,前三个一部分,后两个一部分,通过记录前部分的值所对应下标的数组赋值1,种数sum在加上后部分的值所对应下标的数组的值,因为两部分的值要相同,所以后部分如果相同,则加上的为1,否则加上的为0(大数组需要先前清0),这里我想说的就是数组开的大小,太大内存超限,太小数组不够存,当然可以取大素数模来减小数组,也可以直接开大数组,不过记得分析。
算法实现:
#include<memory.h>#include<stdio.h>#define MAX 25000001short hash[MAX];int pow[101];int main(){int a,b,c,d,e;int i,j,k,sum;for(i=0;i<101;i++)pow[i]=(i-50)*(i-50)*(i-50);while(scanf("%d%d%d%d%d",&a,&b,&c,&d,&e)!=EOF) {sum=0;memset(hash,0,sizeof(hash));for(i=0;i<101;i++)for(j=0;j<101;j++)for(k=0;k<101;k++)if(i!=50&&j!=50&&k!=50)if(a*pow[i]+b*pow[j]+c*pow[k]<=MAX/2&&a*pow[i]+b*pow[j]+c*pow[k]>=-MAX/2)//这是判断是否超限,如果不满足,是不可能满足两部分相等的。hash[12500000+a*pow[i]+b*pow[j]+c*pow[k]]++;for(i=0;i<101;i++)for(j=0;j<101;j++)if(i!=50&&j!=50)sum+=hash[12500000-d*pow[i]-e*pow[j]];printf("%d\n",sum);}return 0;}
- D - Eqs解题报告(黄杰)
- D - Eqs解题报告
- A - SnowflakeSnowSnowflakes解题报告(黄杰)
- J - Pie解题报告(黄杰)
- F - Babelfish解题报告(黄杰)
- G - Monthly Expense解题报告(黄杰)
- I - Expanding Rods解题报告(黄杰)
- POJ-1840 Eqs 解题报告
- POJ-1804 Eqs 解题报告
- POJ - 1840 Eqs解题报告
- POJ1840 Eqs ACM解题报告(打表+构造)
- D - Area解题报告(熊禾强)
- D - Area解题报告
- 解题报告:D
- 7/21 D 解题报告
- D - Magic Bracelet解题报告(来自网络)
- CF 475D CGCDSSQ 解题报告(DP)
- NOIP2014提高组D.发射器选址(解题报告)
- 更系统的SurfaceFlinger思路以及代码追踪
- 浏览选择图片/音频/视频&启动程序让其他程序进行选择
- 抽象类以及接口区别
- Java程序员从笨鸟到菜鸟之(十六)CSS基础积累总结(上)
- ruby文件读写的好文章 ruby way之IO之一
- D - Eqs解题报告(黄杰)
- 解决PhoneGap在Android手机上的全屏问题
- 可伸缩架构常用技术 -- 数据切分
- 验机
- F - Babelfish解题报告(黄杰)
- f2py::演示Fortran字符串在python中的用法
- Java程序员从笨鸟到菜鸟之(十七)CSS基础积累总结(下)
- [转]Blender2.5快捷键
- delphi程序调试