題目描述
給出乙個僅包含小寫字母的字串s,你最多可以操作k次,使得任意乙個小寫字母變為與其相鄰的小寫字母(ascii碼差值的絕對值為1),請你求出可能的最長相等子串行(即求這個字串修改至多k次後的的乙個最長子序列,且需要保證這個子串行中每個字母相等)。
子串行:從原字串中取任意多個字母按照先後順序構成的新的字串。
示例1
輸入
2,"abcde"
返回值
3
示例2
輸入
10,"acesxd"
返回值
4
備註:
資料滿足:\(1\leq |s|\leq 2^, 1\leq k \leq3000\),其中\(|s|\)表示字串的長度。
找到所有字串中所有字元到每個字母的距離,排序。
找每個字母所能得到的最大長度。
class solution
}for(int i = 0; i < 26; i++) sort(dist[i].begin(), dist[i].end());
int ans = 1;
for(int i = 0; i < 26; i++)
//cout << sums << " " << p << endl;
//if(p == n) return n;
}return ans;
}};
題目描述
音遊狂熱愛好者牛牛接到了乙個新的任務,那就是給一張樂譜設計重音符。每當玩家敲擊重音符的時候就會發出"bang"的美妙聲音!!
每一張樂譜都有\(n\)個音符從左到右一字排開,現在牛牛的任務就是選出其中\(m\)個音符將其標記為重音符,同時任意兩個重音符之間都必須隔著至少\(k\)k個音符。
乙個有意思的問題誕生了,請求出這樣合法的設計方案種數,並輸出答案對\(1000000007\)取模的結果。
示例1
輸入
3,2,1
返回值
1
備註:
資料範圍 \(3≤n≤1000,m(0≤m≤n),k(0≤k≤n)\)
動態規劃
乙個位置只有兩種可能:放重音符和不放重音符。
那麼用\(dp[i][j]\)代表前\(j\)個字元中放了\(i\)個重音符可能的情況總數。
const int mod = 1e9+7;
#define ll long long
class solution
}long long res = 0;
for(int i = 1; i <= n; i++)
return res;
}};
題目描述
牛牛想知道\(\sum_^n \left \lceil \frac \right \rceil\)的值是多少(式子中\(\left \lceil \frac \right \rceil\)表示向上取整),現在牛牛給你\(\mathit n\),請你告訴牛牛和是多少。
示例1輸入
10
返回值
33
備註:
\(1\leq n\leq 10^9\)
比賽中一直在oeis中找公式,害,大意了啊
分塊模擬一遍樣例:
1 2 3 4 5 6 7 8 9 10
10 5 4 3 2 2 2 2 2 1
可以得到\(\left \lceil \frac \right \rceil\)的值在一段區間裡是不變的,那麼只要找到區間的左右端點就行了。
左端點是很容易得到的。
右端點計算方法如下:
統計即為答案。
#define ll long long
class solution
else r = mid - 1;
}return ans;}/*
** 1 2 3 4 5 6 7 8 9 10
** 10 5 4 3 2 2 2 2 2 1
*/long long sum(int n)
return sums;
}};
牛客程式設計巔峰賽S2第2場 題解
牛牛是個非常熱心的人,所以他有很多的朋友。這一天牛牛跟他的n個朋友一起出去玩,在出門前牛牛的媽媽給了牛牛k塊糖果,牛牛決定把這些糖果的一部分分享給他的朋友們。由於牛牛非常熱心,所以他希望他的每乙個朋友分到的糖果數量都比牛牛要多 嚴格意義的多,不能相等 牛牛想知道他最多能吃到多少糖果?如果平均分配,計...
牛客程式設計巔峰賽S2第2場
鑽石 王者 先從kk k塊糖果中拿出n nn塊糖果平均分給n nn個朋友,剩下的糖果再和牛牛一起平分,答案 k n n 1 frac n 1k n 三個木棒的構不成三角形的邊界情況就是a b c a b c a b c,那麼對於總的木棒長度固定,只要滿足斐波那契數列即可。這個題就是考察層次遍歷的時候...
牛客程式設計巔峰賽S2第4場
又沒中獎 題目描述 牛牛最近很喜歡擲硬幣,由於他今天很無聊,所以他在家擲了n次硬幣,如果這n次硬幣全部朝上或者全部朝下牛牛就很開心,請問牛牛開心的概率是多少。每次擲硬幣朝上的概率與朝下的概率相同 示例1輸入複製1 返回值複製 1.00 說明概率為1,四捨五入保留兩位小數的字串為 1.00 示例2輸入...