hdu1496 Equations(hash表)
来源:互联网 发布:ubuntu中vim命令大全 编辑:程序博客网 时间:2024/06/03 17:50
题目链接:点击打开链接
题意描述:给定公式,求有多少种解?
解题思路:hash+优化
1、如果a、b、c、d全正或全负则直接输出0
2、由于解的区间是对称的,所以我们只需要枚举1~100之间的就可以了,结果ans*16即可
3、判断某个数是否存在此处用到了hash表处理
代码:
#include <cstdio>#include <cstring>#define MOD 100003using namespace std;int a,b,c,d;long long ans;int f[100010],g[100010];int p[101];int Hash(int x){ int t=x%MOD; if(t<0) t+=MOD; while(f[t]!=0&&g[t]!=x) t=(t+1)%MOD; return t;}int main(){ for(int i=1;i<=100;i++)///1 p[i]=i*i; while(~scanf("%d%d%d%d",&a,&b,&c,&d)){ if((a>0&&b>0&&c>0&&d>0)||(a<0&&b<0&&c<0&&d<0)){///2 printf("0\n");continue; } memset(f,0,sizeof(f)); memset(g,0,sizeof(g)); c=-c; d=-d; int s,t; for(int i=1;i<=100;++i) for(int j=1;j<=100;++j)///3 { s=p[i]*a+p[j]*b; t=Hash(s); f[t]++;g[t]=s; } ans=0; for(int i=1;i<=100;++i) for(int j=1;j<=100;++j){ s=p[i]*c+p[j]*d; t=Hash(s); ans+=f[t]; } printf("%I64d\n",ans*16);///4 } return 0;}
0 0
- hdu1496 Equations(hash表)
- Equations hdu1496(hash)
- hdu1496 Equations Hash
- hdu1496 Equations (hash)
- hdu1496 Equations(哈希表)
- HDU1496:Equations(二分)
- hdu1496—Equations(枚举)
- HDU1496--Equations
- HDU1496 Equations
- HDU1496(hash)
- hdu1496 hash
- hdu1496(hash)
- Equations(Hash)
- hdu1496(用hash思想统计数目)
- hdu1496 equation(较好的hash)
- hdu 1496 Equations (hash)
- HDU 1496 Equations(hash)
- (hash)hdu 1496 Equations
- pg的pg_stat_activity视图排查问题
- android 友盟自动更新
- jQuery 1.5发布 Ajax模块重写
- <c:foreach>解决遍历一个list创建多行多列列表的问题
- iOS-UIKit框架
- hdu1496 Equations(hash表)
- 批处理遍历子目录
- pip UnicodeDecodeError: 'ascii' codec can't decode byte
- kvm中虚拟机的硬盘扩容
- IOS编程中设置系统默认语言的方法
- Linux 下挂载硬盘的方法
- easyui-treegrid篇
- robot(2):ROS系统安装
- C++进阶学习指引