BZOJ 4491: 我也不知道題目名字是什么

4491: 我也不知道題目名字是什么

Time Limit:?10 Sec??Memory Limit:?512 MB
Submit:?278??Solved:?154
[Submit][Status][Discuss]

Description

給定一個序列A[i],每次詢問l,r,求[l,r]內最長子串,使得該子串為不上升子串或不下降子串

Input

第一行n,表示A數組有多少元素
接下來一行為n個整數A[i]
接下來一個整數Q,表示詢問數量
接下來Q行,每行2個整數l,r

Output

對于每個詢問,求[l,r]內最長子串,使得該子串為不上升子串或不下降子串

Sample Input

9
1 2 3 4 5 6 5 4 3
5
1 6
1 7
2 7
1 9
5 9

Sample Output

6
6
5
6
4
//樣例解釋
五個詢問分別對應
[1,6][1,6][2,6][1,6][6,9]

HINT

N,Q<=50000

Source

By 一個讀錯題的沙茶

分析:

其實就是一個很經典的思想...

既然是最長的不下降子串,也就是連續的,那么我們就差分一下,這樣就轉化成最長的大于等于0的連續子串...線段樹維護前后綴和區間最長就好了...

其實寫這道題主要目的是記錄一下某只智障(我...)的事跡...

交上去怎么都TLE,然后要了數據,發現可以跑出來答案還是對的...但是跑得極其慢.....大概就是100s估計也跑不出來...

然后請來RYC小盆友來查錯...我說我再怎么也不能把線段樹寫成$O(N^2)$的吧...剛說完一秒鐘YSQ小盆友指了query的這一行...

inline M query(int l,int r,int tr){if(tree[tr].l==r&&tree[tr].r==r)return tree[tr];

  

我寫成了$tree[tr].l==r$感覺自己要上天....QwQ~~~

代碼:

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;const int maxn=50000+5;int n,m,a[maxn],A[maxn];struct SegmentTree{struct M{int l,r,len,lmax,rmax,mmax;}tree[maxn<<2];inline M merge(M a,M b){M res;res.l=a.l,res.r=b.r,res.len=a.len+b.len;res.lmax=a.len==a.lmax?a.len+b.lmax:a.lmax;res.rmax=b.len==b.rmax?b.len+a.rmax:b.rmax;res.mmax=max(a.rmax+b.lmax,max(a.mmax,b.mmax));return res;}inline void build(int l,int r,int tr){tree[tr].l=l;tree[tr].r=r;tree[tr].len=r-l+1;if(l==r){if(a[l]>=0)tree[tr].lmax=tree[tr].rmax=tree[tr].mmax=1;elsetree[tr].lmax=tree[tr].rmax=tree[tr].mmax=0;return;}int mid=(l+r)>>1;build(l,mid,tr<<1),build(mid+1,r,tr<<1|1);tree[tr]=merge(tree[tr<<1],tree[tr<<1|1]);}inline M query(int l,int r,int tr){if(tree[tr].l==r&&tree[tr].r==r)return tree[tr];int mid=(tree[tr].l+tree[tr].r)>>1;if(r<=mid)return query(l,r,tr<<1);else if(l>mid)return query(l,r,tr<<1|1);elsereturn merge(query(l,mid,tr<<1),query(mid+1,r,tr<<1|1));}}tr1,tr2;signed main(void){scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&A[i]);for(int i=1;i<n;i++) a[i]=A[i+1]-A[i];tr1.build(1,n-1,1);for(int i=1,j=n;i<j;i++,j--) swap(A[i],A[j]);for(int i=1;i<n;i++) a[i]=A[i+1]-A[i];tr2.build(1,n-1,1);scanf("%d",&m);for(int i=1,l,r;i<=m;i++){scanf("%d%d",&l,&r);if(l==r) puts("1");else printf("%d\n",max(tr1.query(l,r-1,1).mmax+1,tr2.query(n-r+1,n-l,1).mmax+1));}return 0;
}

  


By NeighThorn

轉載于:https://www.cnblogs.com/neighthorn/p/6567735.html

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

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

相關文章

Spring-boot中讀取config配置文件的兩種方式

了解過spring-Boot這個技術的&#xff0c;應該知道Spring-Boot的核心配置文件application.properties&#xff0c;當然也可以通過注解自定義配置文件的信息。 Spring-Boot讀取配置文件的方式&#xff1a; 一.讀取核心配置文件信息application.properties的內容 核心配置文件是指…

JavaFX 2 GameTutorial第5部分

介紹 這是與JavaFX 2 Game Tutorial相關的六部分系列的第五部分。 我知道自從我寫關于游戲的博客以來已經很長時間了&#xff0c;但希望您仍然與我在一起。 如果您想回顧一下&#xff0c;請閱讀第1部分 &#xff0c; 第2 部分 &#xff0c; 第3 部分和第4 部分 &#xff0c;以了…

h5是可以一鍵打包小程序的_H5手機網站封裝打包微信小程序并實現分享及微信支付...

手機網站打包小程序教程&#xff0c;生成小程序&#xff0c;網頁版小程序 打包微信小程序&#xff0c;H5封裝成微信小程序。微信小程序開發一般分為2種方式&#xff0c;一種就是原生開發小程序&#xff0c;一種是將手機網站打包成小程序。原生開發小程序成本較高&#xff0c;技…

Hive中的數據庫、表、數據與HDFS的對應關系

1、hive數據庫 我們在hive終端&#xff0c;查看數據庫信息&#xff0c;可以看出hive有一個默認的數據庫default&#xff0c;而且我們還知道hive數據庫對應的是hdfs上面的一個目錄&#xff0c;那么默認的數據庫default到底對應哪一個目錄呢&#xff1f;我們可以通過hive配置文件…

軟件工程概論作業3

轉載于:https://www.cnblogs.com/clueless/p/6568351.html

使用JSF的面向服務的UI

在大型軟件開發項目中&#xff0c;面向服務的體系結構非常常見&#xff0c;因為它提供了可供不同團隊或部門使用的功能接口。 創建用戶界面時&#xff0c;應應用相同的原理。 對于具有開票部門和客戶管理部門等的大型公司&#xff0c;組織結構圖可能如下所示&#xff1a; 如果計…

pocib模板流程圖_各單據流程POCIB

POCIB各階段流程報關流程從廣義上講&#xff0c;報關是指進出境運輸工具負責人、進出境口貨物收發貨人、進出境物品的所有人或者他們的代理人向海關辦理運輸工具、貨物、物品進出境手續及相關手續的全過程。其中&#xff0c;進出境運輸工具負責人、進出口貨物收發貨人、進出境物…

WinDbg 查看靜態變量

有如下Class。若想查看靜態變量內容。因為靜態變量和類綁定&#xff0c;僅需要查看類即可。 namespace ConsoleApplication13 {class Program{public static string public_string "pubstr_static";public static string private_string "pristr_static"…

vue 固定div 滾動_vue.js-div滾動條隱藏但有滾動效果的實現方法

組件被包在一個高度固定的divmounted () {var boDiv document.getElementById(this.id);if(boDiv undefined){return;}var isFirefoxnavigator.userAgent.indexOf("Firefox")if(isFirefox>0){boDiv.addEventListener(DOMMouseScroll, function(event) { //火狐v…

JBoss核心Java Web服務

這篇博客文章涉及Web服務。 好吧&#xff0c;更確切地說&#xff0c;它處理JBoss上的“普通” java Web服務。 這意味著我們將創建一個沒有任何其他框架&#xff08;如CXF&#xff0c;Axis等&#xff09;的Web服務。 JBoss它自己提供對Web服務的支持。 因此&#xff0c;如果您真…

JavaSE--for each

參考&#xff1a;http://blog.csdn.net/yasi_xi/article/details/25482173 學習多線程的時候實例化線程數組而挖掘出來的一直以來的理解誤區 之前一直以為for each 本質上和for循環以及迭代器沒什么區別 1 package foreach;2 3 public class ForeachDemo1 {4 5 public …

[BZOJ1726][Usaco2006 Nov]Roadblocks第二短路

1726: [Usaco2006 Nov]Roadblocks第二短路 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1277 Solved: 607 [Submit][Status][Discuss]Description 貝茜把家搬到了一個小農場&#xff0c;但她常常回到FJ的農場去拜訪她的朋友。貝茜很喜歡路邊的風景&#xff0c;不想那么快…

mysql 5.1.62_MySQL 5.5.62 安裝方法(標準配置版)

1.此安裝方法適用于絕大多數MySQL版本&#xff0c;首先在MySQL官網上下載好所需版本。2.(官網可能不太好找)在我的博客列表中有一篇是MySQL官網下載鏈接&#xff0c;直達下載界面&#xff0c;方便。3.下載。(安裝版 MSI Installer)4.下載安裝包然后雙擊開始安裝選擇同意協議并…

簡化Java內存分析

作為一名典型的Java開發人員&#xff0c;除了遵循關閉連接&#xff0c;流等典型的最佳實踐外&#xff0c;我從未監視過應用程序的內存使用情況。最近&#xff0c;我們在JBoss服務器中遇到了一些問題&#xff0c;不得不深入研究內存管理Java中最好的事情之一是&#xff0c;創建對…

nyoj 1129 Salvation 模擬

思路&#xff1a;每個坐標有四種狀態&#xff0c;每個點對應的每種狀態只能走一個方向&#xff0c;如果走到一個重復的狀態說明根本不能走到終點&#xff0c;否則繼續走即可。 坑點&#xff1a;有可能初始坐標四周都是墻壁&#xff0c;如果不判斷下可能會陷入是死循環。 貼上測…

詳解mysql數據庫的啟動與終止_詳解MySQL數據庫的啟動與終止(一)

由于MySQL服務器具有多種安裝分發&#xff0c;而且能夠運行在多種操作平臺之上&#xff0c;因此它的啟動與停止的方法也多種多樣。你可以根據實際情況使用其中的一種。在你安裝、升級或者維護系統時&#xff0c;你可能需要多次啟動和終止服務器&#xff0c;你需要了解啟動和終止…

easyui 插入中間行

function inserrow() {var index_dx 0;var index_lt 0;var rows $(#dg).datagrid(getRows)//獲取當前的數據行前期數據準備for (var i 0; i < rows.length; i) {if (rows[i][運營商] 電信) {index_dx i;dxptjss_dx parseInt(rows[i][短信平臺接收數]);} else {index_…

使用JNA的透明JFrame

在“ 使JFrame透明”中&#xff0c;我展示了一種使用AWTUtilities類使框架透明的方法。 但是使用該類會導致訪問限制編譯時錯誤&#xff0c;該文章中還顯示了Eclipse中的解析。 現在&#xff0c;這里是使用Java本機的版本。 我使用Java本機訪問&#xff08;JNA&#xff09;庫來…

Problem: Query on the tree(二分+劃分樹)

題目鏈接&#xff1a; Problem: Query on the tree Time limit: 1s Mem limit: 64 MB Problem DescriptionThere is a tree with n node, labeled from 1 to n, and the root of the tree is 1. For every node i, if its father is j, its value vivj*i%20161119, the…

day04_09 while循環03

練習題: 3.如何輸入一個如下的直角三角形,用戶指定輸出行數:(如果上下反轉,右如何實現?) ********** 以下是自己的思路,沒有按照上課老師的思路,反正經過不斷的測試改進得出的算法 num int(input("請輸入行數")) line 1 while line < num1:lie 1 while lie &l…