日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hdu 5183

發布時間:2023/12/13 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu 5183 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

hdu 5183(Hash處理區間問題)

題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=5183

?

題意:給出一個n個元素的數組,現在要求判斷 a1-a2+a3-a4+.....+/-an 中是否存在某個某個區間使得 ai-ai+1+ai+2...+(-1)j-iaj == k??

這個題要利用Hash就可以實現幾乎在 O(n) 的時間內實現查找判斷.

記錄前綴和,然后枚舉起點進行判斷。分兩種情況進行考慮:

1.起點 i 為奇數,那么 a[i]-a[i+1]+a[i+2]....+(-1)^(j-i)*a[j] = sum[j] - sum[i-1] = k ,每次枚舉 sum[i-1] + k 如果在hash表中存在 ,就證明存在此區間.

2.起點 i 為偶數,那么 -a[i]+a[i+1]-a[i+2]....+(-1)^(j-i)*a[j] = sum[j] - sum[i-1] = -k ,每次枚舉 sum[i-1] - k ,查找hash表。與上一步類似.

#include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <algorithm> #include <math.h> using namespace std; typedef long long LL; const int N = 1000005; const int H = 1000007; int Hash[H],cur; void initHash(){ memset(Hash,-1,sizeof(Hash)); cur = 0; } struct Node{ LL v; int next; }node[N]; void insertHash(LL v){ int num = (int)(v%H+H)%H; node[cur].v = v; node[cur].next = Hash[num]; Hash[num] = cur++; } bool searchHash(LL v){ int num = (int)(v%H+H)%H; for(int k = Hash[num];k!=-1;k=node[k].next){ if(node[k].v==v) return true; } return false; } LL sum[N]; int main() { int tcase,t=1; scanf("%d",&tcase); while(tcase--){ initHash(); int n,k; scanf("%d%d",&n,&k); sum[0] = 0; for(int i=1;i<=n;i++){ LL x; scanf("%lld",&x); if(i%2) sum[i] = sum[i-1]+x; else sum[i] = sum[i-1]-x; } insertHash(sum[n]); bool flag = false; for(int i=n;i>=1;i--){ if(i%2==1&&searchHash(sum[i-1]+k)){ flag = true; break; } if(i%2==0&&searchHash(sum[i-1]-k)){ flag = true; break; } insertHash(sum[i]); } printf("Case #%d: ",t++); if(flag) printf("Yes.\n"); else printf("No.\n"); } return 0; }

轉載于:https://www.cnblogs.com/a-blog-of-taojiayi-2003/p/10589033.html

總結

以上是生活随笔為你收集整理的hdu 5183的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。