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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249363.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249363.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249363.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue-cli,webpack安裝

第一步應該下載node.js這是安裝vue-cli的基礎工具。官網下載快捷安全可&#xff1a;https://nodejs.org/en/ 第二步打開命令面板找到你要安裝的位置 第三步就是安裝全局vue-cli 命令操作 npm intatll -g vue-cli 安裝完畢之后 可以檢查安裝版本即 vue -V 如下圖 這還不算完&…

CSS3筆記之定位篇(二)z-index

知識點1&#xff1a;z-index基礎 z-index&#xff1a;auto; 默認值 z-index: <integer> 整數 z-index: inherit 繼承 不考慮css3 還有定位元素的z-index才有作用 知識點2&#xff1a;z-index與定位元素 無嵌套&#xff1a;后來居上&#xff0c;哪個大哪個上 //在沒有…

JSP頁面傳值出現中文亂碼的問題

在接收值的jsp頁面代碼的body里添加&#xff1a; <%request.setCharacterEncoding("utf-8"); %> //這里是設置utf-8為jsp頁面的中文編碼方式 jsp頁面之間傳值&#xff1a; 發送信息的jsp腳本&#xff1a; session.setAttribute("user",rs.getString…

【我所認知的BIOS】— uEFI AHCI Driver(8) — Pci.Read()

【我所認知的BIOS】—> uEFI AHCI Driver(8) — Pci.Read()LightSeed6/19/2014社會一直在變。不曉得是不是社會變的太苦開&#xff0c;而我沒變所以我反而顯得單純了。辦一個居住證。幾年前辦的以為最終能夠一勞永逸的&#xff0c;后來續辦的是發現確實不難了。尼瑪&#xf…

springboot項目集成vue

vue的項目目錄如下&#xff1a; vue項目打包 首先進入項目目錄&#xff1a;cd 項目名 然后執行打包命令&#xff1a;npm run build隨后我們的項目中會多出一個dist文件夾&#xff1a;如下圖 然后將dist文件夾中的所有內容放到eclipse中的src/main/resources/static文件夾里面…

Vue項目啟動webpack報錯Module build failed: Error: No PostCSS Config found in......

自己寫的公司項目&#xff0c;今天需要提交到公司版本庫&#xff0c;可是在本地啟動正常的項目&#xff0c;拷貝到git文件目錄下突然報錯Module build failed: Error: No PostCSS Config found in......&#xff0c;源文件都沒有改動過&#xff01; 然后自己各種百度&#xff…

2.1對 特征歸一化 的一些理解

特征歸一化有很多不同的叫法&#xff0c;比如&#xff1a;特征縮放&#xff0c;Feature Normalization&#xff0c;Feature Scaling 數據標準化&#xff08;歸一化&#xff09;處理是數據挖掘的一項基礎工作&#xff0c;不同評價指標往往具有不同的量綱和量綱單位&#xff0c;這…

逆向工程生成的Mapper.xml以及*Example.java詳解

逆向工程生成的接口中的方法詳解 在我上一篇的博客中講解了如何使用Mybayis逆向工程針對單表自動生成mapper.java、mapper.xml、實體類&#xff0c;今天我們先針對mapper.java接口中的部分方法進行測試&#xff0c;以了解其作用。 先看表結構。。。 從下圖可以看到MBG根據數據表…

SpringBoot之靜態資源訪問

SpringBoot之靜態資源訪問 1.springboot訪問靜態資源的幾種方式 (1)在src/main/resources/目錄下創建 static文件夾 (2)在src/main/resources/目錄下創建 resources文件夾 (3)在src/main/resources/目錄下創建 public文件夾 (4)在src/main/resources/目錄下創建 META-INF/resou…

幾何

題目大意定義一個$S-$四面體表示六條邊由$S$根不同的木棍組成&#xff0c;定義一種染色方法合法當且僅當至少有$S$根木棍被染色且與每個頂點相鄰的三根木棍中至多有一根被染色&#xff0c;求有$N$個$S1,2...N$四面體&#xff0c;求至少染$K$個的方案數。 題解 單獨考慮$S1$四面…

VUE的element-ui的使用

我們在自己的網站當中有的時候會用到element-ui的組建 1.如何安裝element-ui的組件 在命令行工具當中輸入cnpm i element-ui -S, 等待安裝 2.如何在vue當中使用element-ui的組件 1.在main.js中引入element相關的js和cssimport Vue from vueimport ElementUI from element-u…

NodeJS+Express+Mysql+MongoDB之環境配置

node作為一款可以兼容前后端的js語言,在做持久層操作上和Java比較類似,下面就簡單介紹一下項目中的數據庫配置操作. 首選使用express框架自動創建一個測試項目,并在目錄下建立一個專門存放數據庫配置的配置文件,比如:db.js 代碼如下 /* * 數據庫配置文件 * Author: zth * D…

Python 私有變量的訪問和賦值

首先我們這里先描述下&#xff1a;  Python中&#xff0c;變量名類似__x__的&#xff0c;以雙下劃線開頭&#xff0c;并且以雙下劃線結尾的&#xff0c;是特殊變量&#xff0c;特殊變量是可以直接訪問的&#xff08;比如 __doc__, __init__等&#xff09;&#xff0c;不是pri…

SpringBoot入門教程(一)詳解intellij idea搭建SpringBoot

最近公司有一個內部比賽(黑客馬拉松)&#xff0c;報名參加了這么一個賽事&#xff0c;在準備參賽作品的同時&#xff0c;由于參賽服務器需要自己搭建且比賽產生的代碼不能外泄的&#xff0c;所以借著這個機會&#xff0c;本地先寫了個測試的demo&#xff0c;來把tomcat部署相關…

文藝平衡樹 Splay 學習筆記(1)

&#xff08;這里是Splay基礎操作&#xff0c;reserve什么的會在下一篇里面講&#xff09; 好久之前就說要學Splay了&#xff0c;結果茍到現在才學習。 可能是最近良心發現自己實在太弱了&#xff0c;聽數學又聽不懂只好多學點不要腦子的數據結構。 感覺Splay比Treap良心多了—…

JS使用XMLHttpRequest對象POST收發JSON格式數據

JavaScirpt中的XMLHttpRequest對象提供了對 HTTP 協議的完全訪問&#xff0c;使用該對象可以在不刷新頁面的情況與服務器交互數據。XMLHttpRequest是實現AJAX技術的關鍵對象&#xff0c;本站曾整理過一篇介紹該對象的文章&#xff1a; JS使用XMLHttpRequest對象與服務器進行數據…

ShopXO本地化部署安裝之centeros 安裝Apache2.4.6 + PHP7.0.33 + Mysql5.7.25環境

對于centerOS安裝PHP環境&#xff0c;目前網上的帖子都已經比較成熟&#xff0c;具體步驟大家可以自行搜索查看&#xff0c;但是在安裝過程中遇到的一些小細節&#xff0c;這些內容往往需要結合多個帖子才能找到答案&#xff0c;在這里簡單記錄一下。 細節一 如果使用的阿里云…

Spring Boot 擴展點應用之工廠加載機制

Spring 工廠加載機制&#xff0c;即 Spring Factories Loader&#xff0c;核心邏輯是使用 SpringFactoriesLoader 加載由用戶實現的類&#xff0c;并配置在約定好的META-INF/spring.factories 路徑下&#xff0c;該機制可以為框架上下文動態的增加擴展。 該機制類似于 Java SPI…

Vue.js使用-http請求

Vue.js使用-ajax使用 1.為什么要使用ajax 前面的例子&#xff0c;使用的是本地模擬數據&#xff0c;通過ajax請求服務器數據。 2.使用jquery的ajax庫示例 new Vue({el: #app,data: {searchQuery: ,columns: [{name: name, iskey: true}, {name: age},{name: sex, dataSource:…

跨域(Cross-Domain) AJAX for IE8 and IE9

1、有過這樣一段代碼&#xff0c;是ajax $.ajax({url: "http://127.0.0.1:9001",type: "POST",data: JSON.stringify({"reqMsg":"12345"}),dataType: json,timeout: 1000 * 30,success: function (response) {if(response.n6){dosomet…