博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[HDOJ 5183] Negative and Positive (NP) 【Hash】
阅读量:4562 次
发布时间:2019-06-08

本文共 1939 字,大约阅读时间需要 6 分钟。

题目链接:

 

题目分析

分两种情况,奇数位正偶数位负或者相反。

从1到n枚举,在Hash表中查询 Sum[i] - k ,然后将 Sum[i] 加入 Hash 表中。

BestCoder比赛的时候我写了 STL map, 然后TLE...

注意: Hash负数的时候 % 了一个质数,得到的是负数还要 + Mod !!

 

代码

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define Debug(x) cout << #x << " = " << x << endltypedef long long LL;typedef double DB;inline int gmax(int a, int b) {return a > b ? a : b;}inline int gmin(int a, int b) {return a < b ? a : b;}inline void Read(int &Num) { char c = getchar(); bool Neg = false; while (c < '0' || c > '9') { if (c == '-') Neg = true; c = getchar(); } Num = c - '0'; c = getchar(); while (c >= '0' && c <= '9') { Num = Num * 10 + c - '0'; c = getchar(); } if (Neg) Num = -Num;}const int MaxN = 1000000 + 5, Mod = 1000007;int T, n, k;int A[MaxN];struct HashNode{ int x; HashNode *Next;} HA[MaxN], *P = HA, *Hash[2][Mod + 5];bool Find(int f, LL Num) { int HN = ((Num % Mod) + Mod) % Mod; for (HashNode *j = Hash[f][HN]; j; j = j -> Next) if (j -> x == Num) return true; return false;}void Insert(int f, LL Num) { int HN = ((Num % Mod) + Mod) % Mod; ++P; P -> x = Num; P -> Next = Hash[f][HN]; Hash[f][HN] = P;}int main() { scanf("%d", &T); for (int Case = 1; Case <= T; ++Case) { memset(Hash, 0, sizeof(Hash)); P = HA; scanf("%d%d", &n, &k); for (int i = 1; i <= n; ++i) Read(A[i]); int Temp; LL Sum0, Sum1; Sum0 = Sum1 = 0; Insert(1, 0); bool Flag = false; for (int i = 1; i <= n; ++i) { if (i & 1) Temp = -A[i]; else Temp = A[i]; Sum0 = Sum0 + (LL)Temp; Sum1 = Sum1 - (LL)Temp; if (Find(0, Sum0 - (LL)k) || Find(1, Sum1 - (LL)k)) { Flag = true; break; } if (i & 1) Insert(0, Sum0); if ((i & 1) == 0) Insert(1, Sum1); } if (Flag) printf("Case #%d: Yes.\n", Case); else printf("Case #%d: No.\n", Case); } return 0;}

  

转载于:https://www.cnblogs.com/JoeFan/p/4321345.html

你可能感兴趣的文章
ASP.NET MVC的帮助类HtmlHelper和UrlHelper
查看>>
《Python数据科学手册》第五章机器学习的笔记
查看>>
ubuntu16.04 配置爬虫环境
查看>>
Centos7,PHP7安装swoole
查看>>
02_ListActive中响应事件 并LogCat输出
查看>>
doubleclick adx note
查看>>
Celery框架
查看>>
[c#]asp.net开发微信公众平台(4)关注事件、用户记录、回复文本消息
查看>>
[转载,感觉写的非常详细]DUBBO配置方式详解
查看>>
linux Valgrind使用说明-内存泄漏
查看>>
Android在Eclipse上的环境配置
查看>>
面向对象(五)
查看>>
android平台下使用点九PNG技术
查看>>
Python学习3,列表
查看>>
最长回文子串
查看>>
JAVA基础-JDBC(一)
查看>>
js中for和while运行速度比较
查看>>
简单理解什么是递归(阶乘演示)
查看>>
http协议
查看>>
js倒计时,页面刷新时,不会从头计时
查看>>