1. 程式人生 > >hdu 4699 模擬棧

hdu 4699 模擬棧

5種操作

I x  游標前插入x這個數

D 刪除游標前的數

L 游標左移一位 若已到最左邊移不動,就不移

R 游標右移一位 若移不動,就不移了

Q k 輸出游標前的序列 從1到k中最大連續序列和

游標前序列和游標後序列看為兩個棧,這樣易於操作。

sum[x]陣列儲存前x個數的和

dp[x]陣列儲存前x個數中連續最大和  dp[x]=max(dp[x-1],sum[x]);

#include<stdio.h>
#include<string.h>
#define INF -10000000
int s1[1000001],s2[1000001],dp[1000001],pos1,pos2;
int sum[1000001];
int Max(int a,int b){
	return a>b?a:b;
}
int main(){
	int cas;
	while(scanf("%d",&cas)!=EOF){
		pos1=0;pos2=0;
		dp[0]=INF;  //注意初始為 負很大
		sum[0]=0;
		while(cas--){
			char it[5];
			scanf("%s",it);
			if(it[0]=='I'){
				scanf("%d",&s1[++pos1]);
				sum[pos1]=sum[pos1-1]+s1[pos1];
				dp[pos1]=Max(dp[pos1-1],sum[pos1]);
			}
			if(it[0]=='D'){
				pos1--;
			}
			if(it[0]=='L'){
				if(pos1!=0)
					s2[++pos2]=s1[pos1--];
			}
			if(it[0]=='R'){
				if(pos2!=0){
					s1[++pos1]=s2[pos2--];
					sum[pos1]=sum[pos1-1]+s1[pos1];
					dp[pos1]=Max(dp[pos1-1],sum[pos1]);
				}
			}
			if(it[0]=='Q'){
				int x;
				scanf("%d",&x);
				printf("%d\n",dp[x]);
			}
		}
	}
    return 0;
}


相關推薦

hdu 4699 模擬

5種操作 I x  游標前插入x這個數 D 刪除游標前的數 L 游標左移一位 若已到最左邊移不動,就不移 R 游標右移一位 若移不動,就不移了 Q k 輸出游標前的序列 從1到k中最大連續序列和 游標前序列和游標後序列看為兩個棧,這樣易於操作。 sum[x]陣列儲存前x個

HDU 4699 - Editor - [對頂]

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=4699 Problem Description Sample Input8I 2I -1I 1Q 3LDRQ 2 Sample Output23 Hint   題意: 維護一個整數序

hdu 4699 Editor 多校第十場 (模擬

棧 L,R 維護游標之前(之後)的序列 那麼    I x        L.push(x);             D       L.pop();             L       R.push(L.pop());            R       L.pu

采用LinkedList來模擬數據結構的集合--先進後出

oid 數據結構 collect urn link list() 集合 add clas 三、用LinkedList來模擬棧數據結構的集合 /* * 自定義一個數據結構為LinkedList的集合類*/public class MyCollection_LinkedList

hdu 3410 單調

repl nal printf another telling all clu test mod http://acm.hdu.edu.cn/showproblem.php?pid=3410 Passing the Message Time Limit: 2000/1000

hdu 1506 單調

amp efi eat gre air pair pri bits push_back #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)

hdu 1505 單調升級版

spa names gre amp div hdu mem main include #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a))

HDU 1006 模擬

hdu while .cn tsm ret name cas begin script Tick and Tick Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth

hdu1022 Train Problem I---模擬

ron std 不能 pty 結束 type blog tac long 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1022 題目大意: 車的進出站問題,先給出N個火車,再按序列一的方式進站,判斷能否以序列二的方式出站,若

HDU 4699】 Editor

return con %d edit sum inline span private ace 【題目鏈接】 http://acm.hdu.edu.cn/showproblem.php?pid=4699 【算法】 維護兩個棧,一個棧

HDU 3007 模擬退火算法

ise reat contain cnblogs sil area ide 3.0 tdi Buried memory Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/

使用golang的slice來模擬

slice(切片):底層資料結構是陣列 stack(棧):一種先進後出的資料結構 普通版的模擬寫入和讀取的棧 package main import "fmt" //棧的特點是先進後出 //使用一個切片的全域性變數來模擬棧 var stack []int //向棧中新增資料 fu

資料結構實踐 停車場模擬 和佇列綜合

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

51微控制器的模擬(模擬/可重入)

51微控制器的模擬棧(模擬棧/可重入棧) 51微控制器的模擬棧(又叫模擬棧、或者可重入棧)。 首先來看,51的系統棧(又叫系統棧,或者硬體棧),就是SP所指向的棧,他是一個滿增棧(註釋1),位於片內RAM的128 bytes之中,上電之後系統堆疊指標SP的初值等於多少呢?這個要從51

keilc51可重入函式及模擬淺析 (1)

1、關於可重入函式(可再入函式)和模擬堆疊(模擬堆疊)   “可重入函式可以被一個以上的任務呼叫,而不必擔心資料被破壞。可重入函式任何時候都可以被中斷,一段時間以後又可以執行,而相應的資料不會丟失。”(摘自嵌入式實時作業系統uC/OS-II)   在理解上述概念之前,必須先說一下keilc5

HDU 3007 模擬退火演算法

Buried memory Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4067  

模擬 - 應用)1289 大魚吃小魚

1289 大魚吃小魚 1 秒   131,072 KB   5 分   1 級題 有N條魚每條魚的位置及大小均不同,他們沿著X軸遊動,有的向左,有的向右。遊動的速度是一樣的,兩條魚相遇大魚會吃掉小魚。從左到右給出每條

bfs 陣列模擬的使用

package com.daxiong.arithmetic; import java.io.*; import java.util.*; public class BFS { static int[][] data; static int vertex,depen

使用佇列來模擬

使用佇列實現棧的下列操作: push(x) -- 元素 x 入棧 pop() -- 移除棧頂元素 top() -- 獲取棧頂元素 empty() -- 返回棧是否為空 注意: 你只能使用佇列的基本操作-- 也就是 push to back, peek/pop from fro

陣列模擬

ZZULIOJ 2399: 小G的日常之遊戲 原題傳送 題目描述 小G最近在玩一個字元消除遊戲。給定一個只包含大寫字母的字串s,消除過程是如下進行的: (1)從前往後如果在s中找到連續兩個相同的字母,那麼這兩個連續相同的字母會被同時消除,餘下的字串拼成新的字串。 (2)反