1. 程式人生 > >2016 World Final K String Theory

2016 World Final K String Theory

題意:

遞迴定義了k-quotation是k個分號+若干個(k-1)-quotataion+k個分號,然後給你很多個分號,叫你求一下最大是多少quotation。

思路:

對於一個k-quotation,分號的字首形式肯定是(k)(k-1)(k-2)..(1)(1),然後後面可以考慮繼續接(1)(1)或者接一個(2)。因此,可以先列舉quotation為k,從後往前dp。dp[i][j][t] 表示考慮a[i]第j個以及後面的分號,它的前面是有一個(t - 1)的分號,能不能構成滿足條件的分法。有兩種轉移,一種是再接一個(t-1)-quotation,也就是(t-1)(t-2)...(1)(1),或者是結束這個(t-1)-quotation,加上一個(t)。

#include <bits/stdc++.h>

using namespace std;

#define LL long long
#define pii pair<int, int>
#define MP make_pair
#define inf 0x3f3f3f3f
#define mod 1000000007
#define eps 1e-12
#define Pi acos(-1.0)
#define N 110
#define M 200020
#define PB push_back
#define MP make_pair
#define fi first
#define se second

bool dp[N][N][N];
pii f[N][N][N];

int n, a[N];

pii calc(int x, int y, int t) {
	pii ret(-1, -1);
	for(int i = t; i >= 1; --i) {
		if(y + i - 1 > a[x]) return ret;
		y += i;
		if(y > a[x]) x++, y = 1;
		if(x > n) return ret;
	}
	y++;
	if(y > a[x]) x++, y = 1;
	return MP(x, y);
}

pii jump(int x, int y, int t) {
	if(y + t - 1 > a[x]) return MP(-1, -1);
	y += t;
	if(y > a[x]) x++, y = 1;
	return MP(x, y);
}
int main() {
	scanf("%d", &n);
	for(int i = 1; i <= n; ++i) {
		scanf("%d", &a[i]);
	}
	for(int i = 1; i <= n; ++i) {
		for(int j = 1; j <= a[i]; ++j) {
			for(int t = 1; t <= 100; ++t) {
				f[i][j][t] = calc(i, j, t);
			}
		}
	}
	int ans = 0;
	for(int k = 1; k <= 100; ++k) {
		if(f[1][1][k].fi == -1) continue;
		memset(dp[n + 1][1], 0, sizeof dp[n + 1][1]);
		dp[n + 1][1][k] = 1;
		int dx = f[1][1][k].fi;
		int dy = f[1][1][k].se;
		for(int i = n; i >= dx; --i) {
			for(int j = a[i]; j >= 1; --j) {
				for(int t = k - 1; t >= 1; --t) {
					pii p = jump(i, j, t + 1);
					dp[i][j][t] = 0;
					if(p.fi != -1) {
						dp[i][j][t] |= dp[p.fi][p.se][t + 1];
					}
					if(f[i][j][t].fi != -1) {
						int xx = f[i][j][t].fi;
						int yy = f[i][j][t].se;
						dp[i][j][t] |= dp[xx][yy][1];
					}
				}
			}
		}
		if(dp[dx][dy][1]) ans = max(ans, k);
	}
	if(ans == 0) puts("no quotation");
	else printf("%d\n", ans);
	return 0;
}


相關推薦

2016 World Final K String Theory

題意: 遞迴定義了k-quotation是k個分號+若干個(k-1)-quotataion+k個分號,然後給你很多個分號,叫你求一下最大是多少quotation。 思路: 對於一個k-quotation,分號的字首形式肯定是(k)(k-1)(k-2)..(1)(1),然後後

2016 World Final F Longest Rivers

題意: 有n個河流@#¥……()……)—— 思路: 考慮河流i,讓他儘量排在最前的話,肯定是他直接走到根,對於其他的葉子節點,如果他比河流i短的話,他可以向上覆蓋一定的邊。所以,還有一些邊是沒有被覆蓋的, 對這些邊做一顆生成樹,那麼比這個河流長的河流個數就是1 + sum

2016 World Final D Clock Breaking

題意: 給一個LCD燈在一個連續時間內的燈的情況,要你確定哪些燈一定亮,一定暗和不確定。 思路: 先預處理出每個燈泡在24*60分鐘內的狀態,然後用給的時間內不是全亮也不是全暗的燈取匹配,如果沒有一個時間點能夠匹配,就是invalid。然後在考慮全亮或者全暗的燈,如果有一

Gym 101194L / UVALive 7908 - World Cup - [三進制狀壓暴力枚舉][2016 EC-Final Problem L]

printf attach pre uvalive set 結果 題意 fin max 題目鏈接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.p

[World Final 2016] Branch Assignment

連結 PDF bzoj 先求出正置邊和反置邊時b+1到前b個點的最短路dis[0/1][x](x∈[1,b]), 令D[x]=dis[0][x]+dis[1][x] 然後分組後每個x對代價的貢獻為D[x]*(所在組中元素個數-1) 考慮DP決策分組過程,發現沒有一個很好的序, 不過為了使得代價小

“Hello World!”Final發布文案加美工

分享 分享圖片 .com 面向 簡要介紹 功能 font 原型 普通 文案: 大家好,我們是“Hello World!”團隊,本次我將向大家簡要介紹一下空天獵的final發布,在空天獵final發布中,我主要從以下兩個方面向大家進行介紹,第一個方面是增加了敵方的boss功能

【Henu ACM Round#24 A】k-String

push -s stdin spa 字母 open DC color 直接 【鏈接】 我是鏈接,點我呀:) 【題意】 在這裏輸入題意 【題解】 如果是一個k-string的話。 考慮最後的串假設形式為sss..ss(k個s) 則s中出現的字母,整個串中最後出

在Java中String類為什麽要設計成finalString真的不可變嗎?其他基本類型的包裝類也是不可變的嗎?

數據 pri 創建 long tde 繼承 set 字符串常量 通過 最近突然被問到String為什麽被設計為不可變,當時有點懵,這個問題一直像bug一樣存在,竟然沒有發現,沒有思考到,在此總結一下。 1.String的不可變String類被final修飾,是不可繼承和修改

Gym 101194C / UVALive 7899 - Mr. Panda and Strips - [set][2016 EC-Final Problem C]

題目連結: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem

Gym 101194D / UVALive 7900 - Ice Cream Tower - [二分+貪心][2016 EC-Final Problem D]

題目連結: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem

ACM-ICPC 2018 world final A題 Catch the Plane

題目連線:https://icpc.kattis.com/problems/catch Catch the Plane Your plane to the ICPC Finals departs in a short time, and the only way to get

Uva 1040 狀壓+搜尋 2005 ACM world final problem c

題目的隱含條件將這道題指向了最小生成樹; 利用類似prim的方法,列舉所有子圖並判斷是否包含詢問點,如果包含那麼可以更新答案; 邊統計邊更新,且由於更新一定是向更多的點狀態下更新,所以一定可以統計到答案,不至於到全部是inf的情況 再更新答案時記錄ps,pe兩個變數分別表示此狀態最後一次更新前的狀態,邊

World Final 2015 F. Keyboarding

Keyboarding 這是一道BFS(但用到了不少的SPFA的思想)的題,不過出題者十分毒瘤,有眾多坑點: 1、按下方向鍵時跳到下一個不同的字元,也就意味著游標可以“傳送”。 2、最後要列印一個回車,也就是“*”號。 3、選擇也是一次操作。 4、可能有多組資料。 5、因為同樣的字母會重複出現,所

The North American Invitational Programming Contest 2016:E. K-Inversions(FFT)

You are given a string s consisting only of upper case letters A and B. For an integer k, a pair of indices i and j (1≤i&lt;j≤

String theory: Is dark energy even allowed?

Timm Wrase of the Vienna University of Technology quickly realized something odd about this conjecture: it seemed to be incompatible with the existence of

在Java中String類為什麼要設計成finalString真的不可變嗎?其他基本型別的包裝類也是不可變的嗎?

最近突然被問到String為什麼被設計為不可變,當時有點懵,這個問題一直像bug一樣存在,竟然沒有發現,沒有思考到,在此總結一下。 1.String的不可變 String類被final修飾,是不可繼承和修改的。當一個String變數被第二次賦值時,不是在原有記憶體地址上修改資料,而是在記憶體中重

解題:BZOJ 2673 World Final 2011 Chips Challenge

題面 資料範圍看起來很像網路流誒(滾那 因為限制多而且強,資料範圍也不大,我們考慮不直接求答案,而是轉化為判定問題 可以發現第二個限制相對好滿足,我們直接列舉這個限制就可以。具體來說是列舉所有行中的最大值$x$,然後下面那個式子移項就可以得到$a*tot>=b*x$,其中tot表示晶片的總數 然

Problem H. Great Cells(2016 China-Final)【數學計數+智力題】

source:題目連結 題意:這是2016 ACM-ICPC China-Final的H題,在N×M的網格里填[1,K]的整數,定義一個格子是great的,如果滿足這個格子中的數是本行和本列中嚴格的最

2014ICPC World final A題(未解之謎)

未解之謎,先mark一下。 #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <iostream

World Final 1999 poj 1873 The Fortified Forest 狀壓列舉 凸包

2^15 的複雜度  直接列舉集合   但是...   poj tle uvaliva上ac的程式碼: //#include<iostream> #include<cmath> #include<cstdio> #include<