前言
在队友帮助下ak了,看吧

正文
A
直接输出
#include <iostream>
using namespace std;
int main()
{
cout<<5000/3;// 请在此输入您的代码
return 0;
}
B
字符串处理
#include <iostream>
using namespace std;
int main()
{
string s;
cin>>s;
s+='*';
int n=s.size()-1;
int ans=n;
int cnt=0;
for(char c:s)
{
if(c=='L')cnt++;
else {
if(cnt>=1)ans-=cnt-1;cnt=0;
}
}
int ans1=n;
for(char c:s)
{
if(c=='Q')cnt++;
else {
if(cnt>=1) ans1-=cnt-1;cnt=0;
}
}
cout<<min(ans,ans1);
return 0;
}
C
非常坑B的字符串处理,就给一个样例QLQ,应该是1,看看能不能过这个吧
#include <iostream>
using namespace std;
int main()
{
string s;
cin>>s;
int ans=0,f=1;
for(int i=0;i<s.size()-1;i++)
{
if(s[i]=='Q'&&s[i+1]=='Q')
{
if(f)ans++,f=0;
}
else {
if(s[i]=='L'&&s[i+1]=='Q'&&i&&s[i-1]=='Q')ans--;
ans++;
}
}
cout<<ans;
return 0;
}

这里是题干,加一个特判就好
D
用二进制进行处理
直接模拟即可
#include <iostream>
using namespace std;
int main()
{
int T;
cin>>T;
while(T--)
{
int n;
cin>>n;
int ans=1,t=2;
n>>=1;
while(n)
{
ans+=t,n>>=1;t<<=1;
}
cout<<ans<<endl;
}
return 0;
}
E
这个是运用差分数组找到最优的传送门在哪里,然后排序即可
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, k, x;
cin >> n >> k;
vector<int>a(n + 1), b(n + 1);
map<int, int>mp;
for (int i = 1; i <= n; i++) {
cin >> x;
mp[x] = i;
}
for (int i = 1; i < n; i++) {
int l = min(mp[i], mp[i + 1]), r = max(mp[i], mp[i + 1]);
b[l]++;
b[r]--;
}
for (int i = 2; i < n; i++)
b[i] += b[i - 1];
sort(b.begin() + 1, b.begin() + n, greater<int>());
int ans = 0;
for (int i = 1; i < n; i++)
if (k > 0)
ans++, k -= b[i];
if (k > 0)
ans = -1;
cout << ans;
return 0;
}
F
其实只要最大值不是连续m都可以转化成完美的,一个结论题
#include <iostream>
using namespace std;
#define mod 998244353
#define int long long
int qow(int n, int k) {
int res = 1;
while (k) {
if (1 & k)
res = res * n % mod;
n = n * n % mod;
k >>= 1;
}
return res;
}
int a[1005][1005];
signed main() {
int n, m;
int ans = 0;
cin >> n >> m;
for (int i = 0; i <= 1001 ; i++)
for (int j = 0; j <= i; j++) {
if (j == 0)
a[i][j] = 1;
else
a[i][j] = (a[i - 1][j - 1] + a[i - 1][j]) % mod;
}
int t = n / 2, t1;
t1 = n - t;
for (int i = 1; i <= t1; i++) {
ans = (ans + qow(m - 1, n - i) * a[n - i + 1][i] % mod) % mod;
}
cout << ans;
return 0;
}
后记
希望多多努力,早日自己ak
4393

被折叠的 条评论
为什么被折叠?



