PKU 1186 hash
来源:互联网 发布:淘宝网店申请视频教程 编辑:程序博客网 时间:2024/05/16 04:28
和2785是一样的,稍微不同n是可变的1<=n<=6
这里用递归来处理n代码会比较好,当时觉得6只是6枚举一下情况就好了
所以没用递归,而是枚举情况写出的代码比较繁琐
本可以1Y,没注意内存显示,开了两个int [20000000],MLE,改成15000000就AC了
代码如下
#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
#define esp 1e-5
#define BIGNUM 15000000 // 20000000就MLE了
#define INF 2147483647
int K[7],P[7];
int ans;
int hash[BIGNUM],s[BIGNUM];
int HASH(int h)
{
h%=BIGNUM;
if (h<0) h+=BIGNUM;
return h;
}
void Add(int num,bool flag)
{
if (flag) num = -num;
int h = HASH(num);
while(hash[h]!=INF && hash[h]!=num)
h=(h+1)%BIGNUM;
if (flag)
ans += s[h];
else
hash[h] = num , s[h]++;
}
int main()
{
int n,m; scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++)
scanf("%d%d",&K[i],&P[i]);
if (n==1)
{
printf("0/n");
return 0;
}
fill_n(hash,BIGNUM,INF);
for (int i=1;i<=m;i++)
{
if (n>=4)
for (int j=1;j<=m;j++) // 可以递归处理,达到深度n/2停止,这里没用递归,写得比较多
if (n>=6)
for (int k=1;k<=m;k++)
Add(K[1]*int(esp+pow(double(i),P[1]))+K[2]*int(esp+pow(double(j),P[2]))+K[3]*int(esp+pow(double(k),P[3])), 0);
else
Add(K[1]*int(esp+pow(double(i),P[1]))+K[2]*int(esp+pow(double(j),P[2])), 0);
else
Add(K[1]*int(esp+pow(double(i),P[1])), 0);
}
for (int i=1;i<=m;i++)
{
if (n>=3)
for (int j=1;j<=m;j++)
if (n>=5)
for (int k=1;k<=m;k++)
Add(K[n-2]*int(esp+pow(double(i),P[n-2]))+K[n-1]*int(esp+pow(double(j),P[n-1]))+K[n]*int(esp+pow(double(k),P[n])), 1);
else
Add(K[n-1]*int(esp+pow(double(i),P[n-1]))+K[n]*int(esp+pow(double(j),P[n])), 1);
else
Add(K[n]*int(esp+pow(double(i),P[n])), 1);
}
printf("%d/n",ans);
}
- pku 1186(DFS+hash)
- PKU 1186 hash
- PKU 2785 hash
- pku 1971 Parallelogram Counting(hash)
- PKU ACM 3274 数组hash
- pku 3274 Gold Balanced Lineup(预处理,hash)
- pku 3349 Snowflake Snow Snowflakes(hash,最小表示法)
- PKU-1077 Eight (八数码单向BFS+HASH)
- pku 1077 Eight【八数码、广搜、hash判重】
- PKU 1200 Crazy Search (疯狂搜索)Hash表还差7题
- PKU 1186 方程的解数
- pku 2002 squares 几何的推导与hash表的优化
- hash
- Hash
- hash
- hash
- Hash
- hash
- 80端口清除
- 多做实事
- 如何实现在TextBox控件中输入的密码显示为字符*?
- 入门
- 如何实现类QQ登录窗体的功能:登录窗体验证通过后关闭,打
- PKU 1186 hash
- 贪婪算法
- 曼彻斯特编码的数据信号表示
- XHTML 是什么?
- TestCenter测试管理工具V1.2.12
- 微软测试人员的职业发展
- 404错误的调试
- JS验证邮箱地址!
- 我们一路同行,彼此鼓励,为了心中的嵌入式梦想