poj1840 Eqs
2012-08-11 14:24
253 查看
使用hash实现,原式:a1*x1^3+a2*x2^3+a3*x3^3+a4*x4^3+a5*x5^3=0
可以推出:a1*x1^3+a2*x2^3 = -(a3*x3^3+a4*x4^3+a5*x5^3) 把O(n^5)转化为O(n^3)+O(n^2)了
可以推出:a1*x1^3+a2*x2^3 = -(a3*x3^3+a4*x4^3+a5*x5^3) 把O(n^5)转化为O(n^3)+O(n^2)了
#include<iostream> using namespace std; short h[25000001]; int main() { int a1,a2,a3,a4,a5; while(cin>>a1>>a2>>a3>>a4>>a5) { memset(h,0,sizeof(h)); for(int x1=-50;x1<=50;x1++) { if(!x1) continue; for(int x2=-50;x2<=50;x2++) { if(!x2) continue; int sum=(a1*x1*x1*x1 + a2*x2*x2*x2)*(-1); if(sum<0) sum+=25000000; h[sum]++; } } int ans=0; for(int x3=-50;x3<=50;x3++) { if(!x3) continue; for(int x4=-50;x4<=50;x4++) { if(!x4) continue; for(int x5=-50;x5<=50;x5++) { if(!x5) continue; int sum=a3*x3*x3*x3 + a4*x4*x4*x4 + a5*x5*x5*x5; if(sum<0) sum+=25000000; if(h[sum]) ans+=h[sum]; } } } cout<<ans<<endl; } return 0; }
相关文章推荐
- POJ题目1840 Eqs(hash)
- Eqs(POJ--1840
- poj-1840 Eqs 暴力+哈希
- poj 北大 oj 1840 Eqs
- POJ 1840 ——Eqs 哈希,枚举
- poj 1840 Eqs(Hash)
- POJ 1840 Eqs(枚举+HASH)
- POJ 1840 Eqs
- POJ 1840:Eqs 哈希求解五元方程
- POJ 1840 Eqs (Hash)
- POJ 1840 Eqs(模拟+哈希)
- POJ 1840 Eqs(哈希)
- poj 1840 Eqs (Hash)
- poj1840 Eqs
- POJ 1840 Eqs [HASH]
- POJ 1840 Eqs
- POJ 1840 Eqs
- POJ 1840.Eqs
- poj 1840 Eqs(暴力枚举+hash)
- POJ-1840 Eqs 解题报告