题目链接

题目大意:给你一个方程:a*x1^2+b*x2^2+c*x3^2+d*x4^2=0,输入方程的4个系数,求出它的解的个数,其中系数 ai∈[-50,50]  xi∈[-100,0)∪(0,100]。

分析:将方程移项可以得到:a*x1^2 + b*x2^2 = -c*x3^2 - d*x4^2 的形式,两层循环1-100枚举左边两个根的所有值,将方程左边的值存入映射数组Hash中,注意这里应该是Hash数组值++,而不是Hash数组值=1,例如,如果a=b的时候,那么x1和x2的值是可以互换的,如果是让Hash数组的值=1的话就会漏掉一部分解。

然后再枚举方程右边的解,只需要两层枚举1-100即可,用答案值加上每种解的情况的Hash数组的值,再让答案乘16,(因为每个解都可以为正或者为负,4个解就是2^4)。这样总复杂度就可以由枚举四个解时的O(n^4)降低到O(2*n^2)。

#include<bits/stdc++.h>
#define Clear(x) memset(x,0,sizeof(x))
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
const int maxn=2e6+7;
const int prime=1e6+1;
int Hash[maxn];int main()
{int a,b,c,d;while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF){if(a*b>0&&b*c>0&&c*d>0){printf("0\n");continue;}Clear(Hash);for(int i=1;i<=100;i++){for(int j=1;j<=100;j++){Hash[a*i*i+b*j*j+prime]++;}}int ans=0;for(int i=1;i<=100;i++){for(int j=1;j<=100;j++){ans+=Hash[-c*i*i-d*j*j+prime];}}printf("%d\n",16*ans);}return 0;
}

Hdu 1496 Equations(巧妙哈希)相关推荐

  1. hdu 1496 Equations(技巧hash)

    题意,给你a,b,c,d这4个数的值,然后问a*x1^2 + b*x2^2 +  c*x3^2 + d*x4^2 = 0 的(x1,x2,x3,x4)解一共有多少种?   初看这题,想直接4次循环找, ...

  2. Hdu 1496 Equations

    Problem地址:http://acm.hdu.edu.cn/showproblem.php?pid=1496 此题可以用哈希数组求解,至于什么是哈希,可以先看以下这篇推荐文章,写得挺不错的. 推荐 ...

  3. Equations HDU - 1496(哈希或三层for循环)求满足公式有多少种情况

    题意:求x在(-100<=x<=100)区间上,已知a,b,c,d,满足a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 的情况有多少种 思路:很明显四层for循环肯定超时,可用 ...

  4. Equations (哈希)

    原题目: Consider equations having the following form: a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 a, b, c, d are inte ...

  5. HDU - 4821 String(字符串哈希+优化)

    题目链接:点击查看 题目大意:给出一个m和l,还有一个字符串,问在s中所有长度为m*l的连续子字符串中,有多少个满足条件的子字符串 这里的满足条件指的是,长度为m*l的子字符串,可以分成m个长度为l的 ...

  6. HDU - 2859 Phalanx(动态规划/哈希表)

    题目链接:点击查看 题目大意:给定一个整数n,然后给出一个n*n的方阵,求方阵中最大的对称子方阵(对称指的是以右上角至左下角为对角线) 分析:这个题网上有个一般做法,相当于一个动态规划的小模拟,时间复 ...

  7. hdu 1496 QQpet exploratory park 水概率dp

    题目 犯了个语言的错误: C语言中"%%"会输出一个"%" ,我在本地用1个"%"还是输出了"%". 代码: #incl ...

  8. word文档封面免费下载_为Word 2007文档添加封面

    word文档封面免费下载 I've been using Microsoft Word since 1985, starting with Word for Mac and eventually mo ...

  9. 杭电OJ分类题目(1)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...

最新文章

  1. matlab最小分类错误全局二值化算法
  2. 基于Matlab的标记分水岭分割算法(imreconstruct)
  3. mysql 让一个存储过程定时作业的代码(转)
  4. PresentViewController详解
  5. 微信小程序开发错误:LoginError {type: ERR_WX_GET_USER_INFO}解决方法
  6. python在哪些控制结构中使用else保留字_python的程序控制结构-循环结构与random库使用和圆周率案例--pyt...
  7. 简述一下动态sql的执行原理_简述一下Pogo Pin电连接器的设计原理和考虑因素
  8. mysql goldengate_oracle GoldenGate实现Oracle到MySQL数据平滑迁移
  9. think-in-java(9)接口
  10. BST B-树 B+树 B*树简介
  11. 第六讲_图像分割Image Segmentation
  12. Hibernate Serach 5.9全文检索快速入门
  13. 电脑键盘为什么无法输入
  14. Flutter 与 RN对比
  15. hive大数据量实现分页查询,java结合mybatis及多数据源(hive、MySQL)
  16. HTTP Error503 错误解决办法
  17. Windows Mobile 6.1模拟器发布,欢迎下载!
  18. 决定SCI论文价值的因素是什么?
  19. 右上角的引用文献格式_论文要引用的小符号右上角怎么打?
  20. 哈哈日语 日语五十音图之ら、わ行

热门文章

  1. c语言程序设计工作任务,C语言程序设计任务驱动教程
  2. 动一行,修半年,我的代码八代单传
  3. 基因数据处理1之mapping_to_cram
  4. wps服务器无响应是什么原因,windows10系统运行wps无响应的解决方案
  5. linux安装iso软件命令,linux命令制作iso镜像
  6. Spire.Doc 获取批注的源头+书签+内容
  7. 阿里飞冰(Iceworks)入门和飞冰是干什么的
  8. 知网文献免费下载方法
  9. 测绘人真实故事 | 放弃上万月薪从私企跳回国企
  10. ASR项目实战-从源码开始构建Kaldi