HDU 5741 Helter Skelter(構造法)

?

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

?

【題目大意】

  一個01相間的串,以0開頭,給出的序列每個數字表示連續的0的個數或者1的個數,現在有m個詢問,求0的個數為a且1的個數為b的串是否存在。

?

【題解】

  我們發現形如11001這樣子以1為開頭結尾的串是包含1001這樣子的串的,同理以0為開頭結尾的串也是包含了一些開頭結尾數字相同的子串。

  可以發現,當0的個數固定,1的個數是數軸上的一個區間,而且在0的個數相差1時,必定可以取到相同的1的個數,因此可行域在二維平面內是一個實心的聯通圖,且上邊界和下邊界的點坐標單調非減。

  那么我們首先計算出上下邊界的點,可以發現在0的個數固定的情況下,1的個數的上界一定是由1開始,1結尾的子串產生的,下界是由0開始,0結尾的子串產生的,那么保存這些點。

  然而在圖形中兩個橫縱坐標都不相同的點就能夠確定一個矩形可行區域,因此,只要保留上下邊界坐標均單調遞增的點即可,二分查詢(a,b)是否在連通塊區域內,就能夠判斷是否存在這樣子的子串

?

【代碼】

#include <cstdio>
#include <utility>
#include <climits>
#include <algorithm>
using namespace std;
const int N=1010,M=N*N;
typedef pair<int,int> PII;
char ans[M];
int T,n,m,a,b,t[N],cntd,cntu,cnt;
PII D[M],U[M];
int main(){scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);for(int i=0;i<n;i++)scanf("%d",&t[i]);cntd=cntu=cnt=0;for(int i=0;i<n;i++){int x=0,y=0;for(int j=i;j<n;j++){if(j%2)y+=t[j];else x+=t[j];if(i%2==0&&j%2==0)D[cntd++]=PII(x,y);if(i%2&&j%2)U[cntu++]=PII(x,y);}}sort(D,D+cntd);for(int i=0,j;i<cntd;i=j){for(j=i;j<cntd&&D[i].first==D[j].first;j++);while(cnt&&D[cnt-1].second>=D[i].second)cnt--;D[cnt++]=D[i]; }cntd=cnt;sort(U,U+cntu); cnt=0;for(int i=0,j;i<cntu;i=j){for(j=i;j<cntu&&U[i].first==U[j].first;j++);if(!n||U[cnt-1].second<U[j-1].second)U[cnt++]=U[j-1];}cntu=cnt;for(int i=0;i<m;i++){scanf("%d%d",&a,&b);int x=upper_bound(U,U+cntu,PII(a,INT_MAX))-U;int y=upper_bound(D,D+cntd,PII(a,INT_MIN))-D;ans[i]='0'+(y<cntd&&U[x-1].second>=b&&D[y].second<=b);}ans[m]=0; puts(ans);}return 0;
}

?

  

?

轉載于:https://www.cnblogs.com/forever97/p/hdu5741.html

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

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

相關文章

集成學習之參數調整策略

1 Random Forest和Gradient Tree Boosting參數詳解 在sklearn.ensemble庫中&#xff0c;我們可以找到Random Forest分類和回歸的實現&#xff1a;RandomForestClassifier和RandomForestRegression&#xff0c;Gradient Tree Boosting分類和回歸的實現&#xff1a;GradientBoost…

python中tkinter的使用-下

00表格數據 import tkinter from tkinter import ttkwin tkinter.Tk() win.title("Liuwang") win.geometry("400x40020020")#表格 tree ttk.Treeview(win) tree.pack() #列 tree["columns"] ("姓名","年齡","身高&…

計算機科學和建筑設計結合,智能化建筑中計算機科學與技術的應用

4494 科技創新 建筑工程技術與設計2018年5月上【摘要】隨著我國經濟的發展&#xff0c;計算機科學技術已經逐漸應用到各個領域。將計算機科學與建筑相結合&#xff0c;為建筑業的發展提供了契機。本文介紹了計算機科學技術在智能化建筑中的應用&#xff0c;以期其為加快我國智能…

符號

符號&#xff1a;; 多個命令的分隔符/ 根或者路徑的分隔符> 或1>標準輸出重定向&#xff08;數據流朝著箭頭的方向流動&#xff09;&#xff0c;覆蓋原來的文件>>或1>>追加重定向&#xff08;數據流朝著箭頭的方向流動&#xff09;&#xff0c;再原來的文件…

Random Forest算法中的參數詳解

本篇不是介紹RF的&#xff0c;關于RF網上有很多通俗易懂的解釋 西瓜書與統計學習方法等很多教材中的解釋也都足夠 本篇僅針對如何使用sklearn中的RandomForestClassifier作記錄 一、代碼怎么寫 [python] view plaincopy print?class sklearn.ensemble.RandomForestClassifier(…

python中自動化辦公 【筆記】

00讀取csv文件 import csv def readCsv(path):infolist []with open (path,"r") as f:allFileInfo csv.reader(f)print(allFileInfo)for row in allFileInfo:infolist.append(row)return infolistpath r"D:\xiazaipan\第1章 Python語言基礎\15、自動化辦公與…

Python爬蟲:一些常用的爬蟲技巧總結

1、基本抓取網頁 get方法 import urllib2 url "http://www.baidu.com" respons urllib2.urlopen(url) print response.read() post方法 import urllib import urllib2url "http://abcde.com" form {name:abc,password:1234} form_data urllib.urlenco…

微型計算機選用要點,微型計算機原理以及應用考試_new要點分析.doc

微型計算機原理以及應用第一章&#xff1a;1&#xff0e;微機的主要的特點是&#xff1a;(1)體積小、重量輕&#xff1b;(2)價格低廉&#xff1b;(3)可靠性高、結構靈活(4)應用面廣2&#xff0e;微型機的分類&#xff1a;按微處理器規模分類&#xff1a;單片機 、個人計算機、 …

到底什么是API經濟

編者按&#xff1a;這是一篇兩年前的文章&#xff0c;作者為原CA TECH的中國區技術總監。他在文章中闡述的問題&#xff0c;今天讀來依舊讓人振聾發聵。但遺憾的是&#xff0c;國人在API成為一種服務的概念上似乎還停留在遙遠的PC時代&#xff0c;說白了還都只是一些低端的數據…

解決Linux下vi或vim操作Found a swap file by the name

在linux下用vi或vim打開 文件時 E325: ATTENTION Found a swap file by the name ".1.py.swp" owned by: liu dated: Sat Apr 20 17:37:19 2019 file name: ~liu/1.py modified: YES user name: liu host name: localhos…

給未來的自己一封信計算機,給未來的自己的一封信范文(精選5篇)

給未來的自己的一封信范文(精選5篇)在日常生活或是工作學習中&#xff0c;大家總免不了要接觸或使用書信吧&#xff0c;書信一般包括稱呼、問候語、正文、祝語、署名、日期六個部分。你知道書信怎樣寫才規范嗎&#xff1f;下面是小編為大家收集的給未來的自己的一封信范文(精選…

matlab神經網絡函數

1.設計函數 solvein 設計線性網絡&#xff1b; solverb 設計徑向基網絡&#xff1b; solverbe 設計精確的徑向基網絡&#xff1b; solvehop 設計Hopfield網絡。 2.傳遞函數 hardlim 硬限幅傳遞函數&#xff1b; hardl…

GBDT算法簡介

在網上看到一篇GBDT介紹非常好的文章&#xff0c;GBDT大概是非常好用又非常好用的算法之一了吧(哈哈 兩個好的意思不一樣) GBDT(Gradient Boosting Decision Tree) 又叫 MART&#xff08;Multiple Additive Regression Tree)&#xff0c;是一種迭代的決策樹算法&#xff0c;該算…

DevExpress Chart空間Y軸歸一化(線性歸一化函數)

數據的標準化&#xff08;normalization&#xff09;是將數據按比例縮放&#xff0c;使之落入一個小的特定區間。在某些比較和評價的指標處理中經常會用到&#xff0c;去除數據的單位限制&#xff0c;將其轉化為無量綱的純數值&#xff0c;便于不同單位或量級的指標能夠進行比較…

Linux samba的配置和使用

推薦局域網內使用 不推薦遠程服務器 一、安裝Samba服務 yum -y install samba # 查看yum源中Samba版本 yum list | grep samba # 查看samba的安裝情況 rpm -qa | grep samba Samba服務器安裝完之后, 會生成配置文件目錄/etc/samba, /etc/samba/smb.conf是samba的核心配置文件.…

23期PHP基礎班第四天

轉載于:https://www.cnblogs.com/lihang666/p/6078982.html

SVM和SVR簡介

1、支持向量機&#xff08; SVM &#xff09;是一種比較好的實現了結構風險最小化思想的方法。它的機器學習策略是結構風險最小化原則 為了最小化期望風險&#xff0c;應同時最小化經驗風險和置信范圍&#xff09; 支持向量機方法的基本思想&#xff1a; &#xff08; 1 &#…

gojs實現最短路徑尋址實例

2019獨角獸企業重金招聘Python工程師標準>>> JS function init() {if (window.goSamples) goSamples(); // init for these samples -- you dont need to call thisvar $ go.GraphObject.make; // for conciseness in defining templatesmyDiagram $(go.Diagram,…

河南王牌計算機專業,河南計算機專業實力突出的7所大學,鄭大位列次席,榜首實至名歸...

鄭州大學是省內唯一的211建設高校&#xff0c;整體辦學實力在國內同類高校之中名列前茅&#xff0c;雖然沒有能夠在學科評估之中取得A類學科&#xff0c;但學校有化學、考古學、材料科學與工程等多個學科獲評B&#xff0c;學校計算機科學與技術學科取得了C的成績&#xff0c;雖…

Linux中配置ftp服務器

1. 先用rpm -qa| grep vsftpd命令檢查是否已經安裝&#xff0c;如果ftp沒有安裝&#xff0c;使用yum -y install vsftpd 安裝,(ubuntu 下使用apt-get install vsftpd) 2. service vsftpd start / service vsftpd restart 啟動要讓FTP每次開機自動啟動&#xff0c;運行命令:…