1. 程式人生 > >【IOI1998】Polygon(區間dp)

【IOI1998】Polygon(區間dp)

設f(l,r,0)表示區間[l,r]操作後的最大值,f(l,r,1)表示區間[l,r]操作後的最小值,簡單的區間合併即可。

可以把第一條邊斷掉,然後把這後面的N個點複製一遍,直接做N*2長度的區間dp。

答案是max:f(i,i+N-1,0)。

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int INF=0x3f3f3f3f;

int N;
int f[105][105][2];
int val[105];
char op[105];

int main(){
//	freopen("in.txt","r",stdin);
	cin>>N;
	cin>>op[N]>>val[1];
	for(int i=2;i<N;i++)
		cin>>op[i-1]>>val[i];
	cin>>op[N-1]>>val[N];
	for(int i=N+1;i<=N*2;i++)
		op[i]=op[i-N],val[i]=val[i-N];
	for(int i=1;i<=N*2;i++)
		f[i][i][0]=f[i][i][1]=val[i];
	for(int len=2;len<=N;len++)
	for(int i=1;i+len-1<=N*2;i++){
		int j=i+len-1,MAX=-INF,MIN=INF;
		for(int k=i;k+1<=j;k++){
			if(op[k]=='t'){
				MAX=max(MAX,f[i][k][0]+f[k+1][j][0]);
				MIN=min(MIN,f[i][k][1]+f[k+1][j][1]);
			}
			else{
				MAX=max(MAX,f[i][k][0]*f[k+1][j][0]);
				MIN=min(MIN,f[i][k][0]*f[k+1][j][1]);
				MIN=min(MIN,f[i][k][1]*f[k+1][j][0]);
				MAX=max(MAX,f[i][k][1]*f[k+1][j][1]);
				MIN=min(MIN,f[i][k][1]*f[k+1][j][1]);
			}
		}
		f[i][j][0]=MAX;f[i][j][1]=MIN;
	}
	int ans=0,tot=0,out[55];
	for(int i=1;i<=N;i++){
		if(f[i][i+N-1][0]>ans){
			out[tot=1]=i;
			ans=f[i][i+N-1][0];
		}
		else if(f[i][i+N-1][0]==ans)
			out[++tot]=i;
	}
	printf("%d\n",ans);
	for(int i=1;i<=tot;i++)
		printf("%d ",out[i]);
	return 0;
}

相關推薦

IOI1998Polygon區間dp

設f(l,r,0)表示區間[l,r]操作後的最大值,f(l,r,1)表示區間[l,r]操作後的最小值,簡單的區間合併即可。 可以把第一條邊斷掉,然後把這後面的N個點複製一遍,直接做N*2長度的區間dp。 答案是max:f(i,i+N-1,0)。 #include<

Uva10559Blocks區間DP

log turn logs efi read etc body pre 數量 Description 題意:有一排數量為N的方塊,每次可以把連續的相同顏色的區間消除,得到分數為區間長度的平方,然後左右兩邊連在一起,問最大分數為多少。 \(1\leq N\leq200\) S

Hdu3555 Bomb數位DP

-- return cstring long long 表示 getchar() bom math while Description 題意就是找0到N有多少個數中含有49。 \(1\leq N \leq2^{63}-1\) Solution 數位DP,與hdu3652類似

模板Splay區間操作

這裡的操作是區間翻轉 struct node* null;//注意這個要在主函式中初始化 struct node { node *son[2], *fa; int v; int s; bool tag; node() { son[0] = son[1]

2018.11.09UVA11021Tribles概率DP不用全概率公式

傳送門 強烈譴責: 對於懂全概率公式的人來說這是一道水題。 然而就是這群懂全概率公式的人寫著一篇篇題解與程式碼不符的部落格。連遞推陣列 f

BZOJ4712洪水動態dp

【BZOJ4712】洪水(動態dp) 題面 BZOJ 然而是許可權題QwQ,所以粘過來算了。 Description 小A走到一個山腳下,準備給自己造一個小屋。這時候,小A的朋友(op,又叫管理員)打開了創造模式,然後飛到 山頂放了格水。於是小A面前出現了一個瀑布。作為平民的小A只好老實巴交地爬山堵水

2018.09.28BZOJ4318OSU!期望DP

傳送門 解析: 不錯的期望DP入門題。 思路: 首先,要是沒有明白期望的線性性。這道題是無法理解的。 一個常識,要維護高次,我們可以將高次展開,利用低次來維護。 所以我們同時維護長度的期望,長度平方的期望,長度立方的期望。 注意這裡可能就有人不懂了,長度平方的

POJ 1179 Polygon區間DP

Description Polygon is a game for one player that starts on a polygon with N vertices, like the one in Figure 1, where N=4. Ea

BZOJ1260 [CQOI2007]塗色paint區間dp

c++ ide hid event pri display pro == spl 題目 傳送門:QWQ 分析 區間dp, 詳見代碼 代碼 /*****************************************

lightoj-1025The Specials Menu區間DP

.com lightoj 不同 cin mes std 需要 就是 ++ 題目鏈接:http://www.lightoj.com/volume_showproblem.php?problem=1025 【題目大意】 求一個字符串刪去任意字符可以構成多少個不同的回文

Hihocoder1636Pangu and Stones區間DP

mes clu != con set n) pan long 長度 題意:N堆石子,每次可以合並連續的長度從L到R的若幹堆石子為1堆,費用為選擇的石子總個數,求將N堆合並成1堆的最小總花費,無解輸出0 思路:dp[i][j][k]表示將i到j這段區間合並為k堆的最小代價 \

jzoj5935. NOIP2018模擬10.29小凱學數學區間dp

5935. 【NOIP2018模擬10.29】小凱學數學 Description 由於小凱上次在找零問題上的疑惑,給大家在考場上帶來了很大的麻煩,他決心好好學習數學 本次他挑選了位運算專題進行研究 他發明了一種叫做“小凱運算”的運算子: a$b =( (a&b) + (a|b

2017 ICPC亞洲區域賽北京站 JPangu and Stones區間dp

In Chinese mythology, Pangu is the first living being and the creator of the sky and the earth. He woke up from an egg and split the egg into two parts:

POJ3280Cheapest Palindrome區間dp

題目連結 Cheapest Palindrome Time Limit: 2000MS   Memory Limit: 65536K Total Submissions:13315

HDU - 5900QSC and Master區間dp

題幹: Every school has some legends, Northeastern University is the same.  Enter from the north gate of Northeastern University,You are facing

CodeForces - 940ECashbackset+DP

except best ++ -c subarray nload () 最小 cpp Description Since you are the best Wraith King, Nizhniy Magazin ?Mir? at the centre of Vinnyts

[jzoj3252] GDOI三校聯考炸彈經典DP

Problem 給出一個網格圖,由 01 01

NOIP2018複習A樹形DP

A 時間限制:1000MS記憶體限制:256000KB 題目描述 lyh童鞋的手辦非常多,以至於他專門種了一棵樹來放置手辦╮(╯▽╰)╭ 為了展現自己的收藏lyh決定從收藏樹上選取一些手辦展示 已

LightOJ - 1422 Halloween Costumes 區間DP

wan things strong cas book article printf ase con Description Gappu has a very busy weekend ahead of him. Because, next weekend is Ha

POJ 1141 Brackets Sequence 區間DP

ive bsp rip mes character har typedef som memset Description Let us define a regular brackets sequence in the following way: 1.