poj 3250 Bad Hair Day

以前總是靠人肉暴力模擬,這個題目複雜度太高搞不過去了,

棧模擬,又學到了新的東西

import java.io.*;
import java.math.BigInteger;
import java.util.*;
class item1{
	int value,idx;
	public item1(int x,int y){
		value=x;idx=y;
	}
}

class problem{
    int n,t=0;
    long sum;
    item1 stack[];
    void solver() throws IOException{
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));        
        n = Integer.valueOf(reader.readLine());
        stack = new item1[n+1];
        stack[t]=new item1(Integer.MAX_VALUE,0);
        for(int i=1;i<=n+1;i++){
        	int tmp;
        	if(i<n+1) tmp = Integer.valueOf(reader.readLine());
        	else tmp = Integer.MAX_VALUE;
        	while(tmp>=stack[t].value&&t>=1) {        		
        		sum+=i-1-stack[t--].idx;
        	}
        	stack[++t]=new item1(tmp,i);
        }
        System.out.println(sum);
    }
}
public class Main{
    public static void main (String [] args) throws Exception {
        problem p = new problem();
        p.solver();
    }
}


 

發佈了245 篇原創文章 · 獲贊 0 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章