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)反