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類為什麽要設計成final?String真的不可變嗎?其他基本類型的包裝類也是不可變的嗎?
數據 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<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類為什麼要設計成final?String真的不可變嗎?其他基本型別的包裝類也是不可變的嗎?
最近突然被問到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<