poj1840(Eps)

题目地址: Eps

题目大意;

a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0   求有多少个解,范围是[-50,50].注意(x!=0)。

解题思路:

O(n^5)超时。 可以转换方程式  a1x13+ a2x23=-(a3x33+ a4x43+ a5x53) 时间复杂度降低到O(n^3)。

同时也要注意MTL。由于计算左右两边的数相等,所以只需开2*(50*50*50*50)即可,又因为是从-50开始的,所以存在负数。须再数组乘以2 .利用简单的哈希先将左边的总和hash数组存储起来,然后再计算右边的式子,看自否与左边的相等。当右边的式子小于零和大于2*MM的话不存在解,应该continue。如果相等就用cnt+=hash[sum].  不能cnt++。因为我们不能保证函数的映射为 1对1 映射,更多的是存在 多对1映射

例如当 a1=a2时,x1=m  ,  x2= n我们得到了sum,但x1=n  ,  x2= m时我们也会得到sum,但是我们说这两个是不同的解,这就是 多对1 的情况了,如果单纯记录sum是否出现过,则会使得 解的个数 减少。

代码;

 1 #include <algorithm>
 2 #include <iostream>
 3 #include <sstream>
 4 #include <cstdlib>
 5 #include <cstring>
 6 #include <cstdio>
 7 #include <string>
 8 #include <bitset>
 9 #include <vector>
10 #include <queue>
11 #include <stack>
12 #include <cmath>
13 #include <list>
14 #include <map>
15 #include <set>
16 using namespace std;
17 /***************************************/
18 #define ll long long
19 #define int64 __int64
20 /***************************************/
21 const int INF = 0x7f7f7f7f;
22 const double eps = 1e-8;
23 const double PIE=acos(-1.0);
24 const int dx[]= {0,-1,0,1};
25 const int dy[]= {1,0,-1,0};
26 const int fx[]= {-1,-1,-1,0,0,1,1,1};
27 const int fy[]= {-1,0,1,-1,1,-1,0,1};
28 /***************************************/
29 void openfile()
30 {
31     freopen("data.in","rb",stdin);
32     freopen("data.out","wb",stdout);
33 }
34 /**********************华丽丽的分割线,以上为模板部分*****************/
35 const int M=6250000;
36 const int MM=12500000;
37 short hash[4*M+1];
38 int sum;
39 int main()
40 {
41     int a,b,c,d,e;
42     memset(hash,0,sizeof(hash));
43     scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
44     int i,j,k;
45     for(i=-50; i<=50; i++)
46     {
47         if (i==0)
48            continue;
49         for(j=-50; j<=50; j++)
50             {
51                if (j==0)
52                     continue;
53                 sum=MM+a*i*i*i+b*j*j*j;
54                 hash[sum]++;
55             }
56     }
57     int cnt=0;
58     for(k=-50; k<=50; k++)
59     {
60         if (k==0)
61             continue;
62         for(i=-50; i<=50; i++)
63         {
64             if (i==0)
65                 continue;
66             for(j=-50; j<=50; j++)
67             {
68                 if (j==0)
69                     continue;
70                 sum=MM-c*k*k*k+d*i*i*i+e*j*j*j;
71                 //    sum=-sum;
72                 if (sum<0||sum>2*MM)
73                     continue;
74                 if (hash[sum])
75                 {
76                     cnt+=hash[sum];
77                 }
78         }
79             }
80     }
81     printf("%d\n",cnt);
82     return 0;
83 }

poj1840(Eps)

时间: 2024-09-30 06:26:06

poj1840(Eps)的相关文章

聚类:层次聚类、基于划分的聚类(k-means)、基于密度的聚类、基于模型的聚类

一.层次聚类 1.层次聚类的原理及分类 1)层次法(Hierarchicalmethods)先计算样本之间的距离.每次将距离最近的点合并到同一个类.然后,再计算类与类之间的距离,将距离最近的类合并为一个大类.不停的合并,直到合成了一个类.其中类与类的距离的计算方法有:最短距离法,最长距离法,中间距离法,类平均法等.比如最短距离法,将类与类的距离定义为类与类之间样本的最短距离. 层次聚类算法根据层次分解的顺序分为:自下底向上和自上向下,即凝聚的层次聚类算法和分裂的层次聚类算法(agglomerat

新型I/O架构引领存储之变(四)

新型I/O架构引领存储之变(四) 作者:廖恒 应对挑战--商务及技术考量 本文前面的部分分析了砖块模式与生俱来的总拥有成本(TCO)过高的问题.为了战胜这一挑战,超大规模数据中心的运营者需要从两个不同的角度来切入: ·        商务角度:植根于人类社会行为中的宏观层面的季节性及时间性数据中心负载变化问题,只能通过找到若干种经济有效.可以互补的应用来提高平均的资源利用率,并避免高峰期性能需求的暴增.这个方法无法解决TCO问题,但在维持TCO相对稳定的条件下,竭力增加了数据中心运营商的营收及利

【Latex】Latex小白入门(1)——如何将论文插图转换为Latex需要的*.eps格式

写在前面: 在研究生阶段搞学术的童鞋们很有可能会接触到Latex这种论文格式编辑工具,一般在论文投稿的时候,大多数期刊和会议会给一个Latex模板,要求将你的论文用Latex编辑成.pdf版本.这里的Latex小白可不是指各位读者,而是我自己.才开始用Latex的时候,team里面唯一会Latex的师姐已经毕业say goodbye了,而我连怎么编译运行都不会.无奈论文要投,只好"赶鸭子上架",秉承"哪里不会查哪里"的精神,完成了几次论文从word到Latex的移植

HDU 3237 Help Bubu(DP)

题目链接:点击打开链接 思路: 比赛时查一点出, 需要加一个优化才能防止超时(恶心), 状态很容易想到: d[i][j][s][k]表示前i本书拿了j本没拿的书的集合是s没拿的书的最后一本是k的最优解. 为什么状态压缩的是目前桌子上的书的集合呢?  因为我们要防止一种情况:那就是如果对于高度为H的一种书, 我们都拿走了, 那么还要放回桌子上, 最优解要+1, 这样表示之后, 我们只要判断一下有几种书桌子上没有就行了. 细节参见代码: #include <cstdio> #include <

hdu 5640 King&#39;s Cake(模拟)

Problem Description It is the king's birthday before the military parade . The ministers prepared a rectangle cake of size n×m(1≤n,m≤10000) . The king plans to cut the cake himself. But he has a strange habit of cutting cakes. Each time, he will cut

HDU 5961 传递 【图论+拓扑】 (2016年中国大学生程序设计竞赛(合肥))

传递 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)   Problem Description 我们称一个有向图G是传递的,当且仅当对任意三个不同的顶点a,,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c.我们称图G是一个竞赛图,当且仅当它是一个有向图且它的基图是完全图.换句 话说,将完全图每条边定向将得到一个竞赛图.下图展示的是一个有4个顶点的竞

[读书笔记]机器学习:实用案例解析(7)

第7章  优化:密码破译 优化简介:最优点(optimum),优化(optimization) 本章研究的问题:构建一个简单的密码破译系统,把解密一串密文当做一个优化问题. 优化方法:网格搜索(grid search),主要问题是1.步长的选择:2.维度灾难(Curse of Dimensionality):问题规模过大 optim函数:比网格搜索更快,可以通过已经计算出的信息推断出下一步的方向,同时对所有变量一起优化.(根据书中后文,可能的原理是根据导数得出下一步的进行方向,因为该函数对于不可

蓝桥杯 地宫取宝(12&#39;)

X 国王有一个地宫宝库.是n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大, 小明就可以拿起它(当然,也可以不拿). 当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明. 请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这k件宝贝. [数据格式] 输入一行 3个整数,用空格分开:n m

hdu 5623 KK&#39;s Number(dp)

问题描述 我们可爱的KK有一个有趣的数学游戏:这个游戏需要两个人,有N\left(1\leq N\leq 5*{10}^{4} \right)N(1≤N≤5∗10?4??)个数,每次KK都会先拿数.每次可以拿任意多个数,直到NN个数被拿完.每次获得的得分为取的数中的最小值,KK和对手的策略都是尽可能使得自己的得分减去对手的得分更大.在这样的情况下,最终KK的得分减去对手的得分会是多少? 输入描述 第一行一个数T\left( 1\leq T\leq 10\right)T(1≤T≤10),表示数据组