1.AtCoder Beginner Contest 293(C,D ,E,F)2.Educational Codeforces Round 115 (Rated for Div. 2)(D,E)3.AtCoder Beginner Contest 294(E,F,G)4.AtCoder Beginner Contest 2465.中国石油大学(北京)第三届“骏码杯”程序设计竞赛(同步赛)(D,E,F)6.Codeforces Global Round 16(D,E,F)7.AtCoder Beginner Contest 209(D,E)8.Monoxer Programming Contest 2022(AtCoder Beginner Contest 238)(E,F)9.AtCoder Beginner Contest 285(B,D,E,F)10.AtCoder Beginner Contest 242(D,E)11.AtCoder Beginner Contest 223(D,E,F)12.AtCoder Beginner Contest 207(D,E)13.AtCoder Beginner Contest 247(E,F)14.AtCoder Beginner Contest 226(E,F,G)15.AtCoder Beginner Contest 229(F,G)16.AtCoder Beginner Contest 273(E)17.AtCoder Beginner Contest 286(G)18.AtCoder Beginner Contest 287(C,D,E,F)19.AtCoder Beginner Contest 288(D,E,F)20.AtCoder Beginner Contest 289(E,F)21.AtCoder Beginner Contest 290(D,E)22.AtCoder Beginner Contest 292(E,F,G)23.AtCoder Beginner Contest 298(D,F)24.AtCoder Beginner Contest 299(E,F)25.AtCoder Beginner Contest 300(E,F)
26.AtCoder Beginner Contest 302(E,F,G)27.AtCoder Beginner Contest 253(E,F)28.AtCoder Beginner Contest 245(D,E,F)29.AtCoder Beginner Contest 248(D,E,F) 30.AtCoder Beginner Contest 206(Sponsored by Panasonic)(E,F)31.Codeforces Round 875 (Div. 2)(D)32.AtCoder Beginner Contest 178(E,F)33.AtCoder Beginner Contest 307(E,F,G)34.CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!)C35.Educational Codeforces Round 151 (Rated for Div. 2)(C,D)36.AtCoder Beginner Contest 212(E,F)37.牛客小白月赛5138.2022年浙大城市学院新生程序设计竞赛(同步赛)(补题)39.Codeforces Round #770 (Div. 2)B,C40.Codeforces Global Round 24(B,C)41.Codeforces Round #836 (Div. 2)C42.Codeforces Round #840 (Div. 2) C43.Good Bye 2022: 2023 is NEAR C44.Codeforces Round #765 (Div. 2)A,B,C45.Codeforces Round #766 (Div. 2)C,D46.Codeforces Round #841 (Div. 2) and Divide by Zero 202247.Codeforces Round #767 (Div. 2)C ,D 48.Codeforces Round #768 (Div. 2)C ,D49. Codeforces Round #769 (Div. 2) B,C50.Educational Codeforces Round 122 (Rated for Div. 2),C,D51.Educational Codeforces Round 119 (Rated for Div. 2)52.AtCoder Beginner Contest 25853.Codeforces Round #763 (Div. 2)C54.Codeforces Round #843 (Div. 2)(B,C,D,E)55.Educational Codeforces Round 141 (Rated for Div. 2)(B,C,D)56.AtCoder Beginner Contest 275(B,C,D,E,F)57.Codeforces Round #842 (Div. 2)(B,D,E)58.AtCoder Beginner Contest 284(D,E,F)59.The 14th Jilin Provincial Collegiate Programming Contest(补题)60.牛客小白月赛65(C,D,E,F)61.AtCoder Beginner Contest 281(D,E,F)62.Good Bye 2021: 2022 is NEAR D63.Hello 202364.The 15th Jilin Provincial Collegiate Programming Contest(补题)65.Codeforces Round #781 (Div. 2)C 66.Hello 2022(B,D)67.AtCoder Beginner Contest 272(D,E)68.Codeforces Round 751 (Div. 2)(D)69.Codeforces Round 856 (Div. 2)(C,D)70.Codeforces Round 752 (Div. 2)(C,D,E)71.Codeforces Round 855 (Div. 3)(E,F)72.AtCoder Regular Contest 131(A,B,C)73.Educational Codeforces Round 144 (Rated for Div. 2)(A,B,C,D)74.Codeforces Round 853 (Div. 2)(C,D)75.牛客练习赛109(C,D)76.AtCoder Beginner Contest 291(Sponsored by TOYOTA SYSTEMS)(D,E,F)77.Educational Codeforces Round 143 (Rated for Div. 2)(A,C,D)78.Codeforces Round #852 (Div. 2)(C,D)79.Educational Codeforces Round 118 (Rated for Div. 2)(D,E)80.AtCoder Beginner Contest 236(D,E,F)81.Codeforces Round #850 (Div. 2, based on VK Cup 2022 - Final Round)(B,D)82.Codeforces Round #848 (Div. 2)(B,C,D)83.TypeDB Forces 2023 (Div. 1 + Div. 2, Rated, Prizes!) (B,C,D) 84.Codeforces Round #846 (Div. 2)(B,E) 85.Educational Codeforces Round 142 (Rated for Div. 2)(C,D)86.2023牛客寒假算法基础集训营687.Codeforces Round #845 (Div. 2) and ByteRace 2023(A,B,C)88.2023牛客寒假算法基础集训营5 89.2023牛客寒假算法基础集训营3 90.2023牛客寒假算法基础集训营291.2023牛客寒假算法基础集训营192.Educational Codeforces Round 120 (Rated for Div. 2) C,D93.AtCoder Beginner Contest 254(C,D,E,F)
AtCoder Beginner Contest 300(E,F)
E (概率dp)
E
这个题意大致就是一开始有一个初始数为,然后我们有一个骰子,最后得到的点数概率一样,为,如果这一次得到的点数为,那么会变成,问最后得到数的概率为多少
先感性的分析一波,对于这六个数,除了之外都可以改变,那么我们可以不用考虑得到的效果,毕竟不管得没得到效果都是一样的,那么我们每一次投中的概率就是
下面我给出证明
假设是得到的数为的概率,那么我们可以得到
我把和后面的数分开了
然后可以移项,把放在一边,毕竟这个才是我们需要的
然后把的系数变成,这样好看一点
这样,对于后面的非数,得到的概率可以看成了
然后我看到一个很好的解法,很易懂,大佬博客
他是从逐渐往后面找,每得到一个新的点,都会乘上这个概率,(然后还用上了记忆化)
只有找到了才是正确的
幸好这些数都就算是最小的最多也只有多次,而且,每次找都不会往回找,而是一直找,而且不会进入死循环,但是这个想法真的好好,有点像在不断的往前找,走了一步就加一的感觉,我自己最初的想法是把那个分解成若干个,但是这个也不太好些,因为还有的情况,还不止,还要考虑顺序,感觉有点复杂
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include<cmath>
#include <unordered_map>
#include <array>
#include <cstring>
using namespace std;
#define int long long
#define LL long long
#define ios ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define inf 1e18
#define INF 1e18
#define mem(a,b) memset((a),(b),sizeof(a))
const int maxn=1e6+10;
const int mod=998244353;
int p;
int n;
unordered_map<int,int>f;
int ksm(int x,int p)
{
int res=1;
while (p)
{
if(p&1) res=res*x%mod;
x=x*x%mod;
p>>=1;
}
return res%mod;
}
int inv(int x)
{
return ksm(x,mod-2);
}
int getf(int x)
{
if(x>n) return 0;
if(x==n) return 1;
if(f.count(x))return f[x];
int res=0;
for (int i=2;i<=6;i++)
{
res=(res+getf(i*x))%mod;
}
res=res*p%mod;
f[x]=res;
return f[x];
}
signed main ()
{
cin>>n;
p=inv(5);
int ans=getf(1);
cout<<ans<<"\n";
system ("pause");
return 0;
}
F (二分)
F
这个题的大意是给你一个长度为的只由两个字符组成的字符串,我们可以得到一个字符串,,我们可以从这个里面,选出个变成,问最后我们可以得到最大的连续的长度,而且,这道题还提醒了我们里面的的数量一定是够的(所以不存在没有足够)
这个呢
我们可以先从第一个看,对于这一段,要把这一段都变成的代价就是这一段里面的数量,所以,我们可以预先把的前缀数量记录下来
对于一个最长的串,一定是有最左端点一定在第一个字符串上面,(这是最优的,后面的和它都是一样的,而且越前面越代表答案可能越大)
我们枚举最左端点
然后对于第一个字符串,找到一个有最右端点小于等于,那么此时我们就已经获得了的了,如果我们要继续往后找第二个字符串的话,只有等于时才可以(不然不就是连最后一个都到不了,根本不需要考虑后面的)
对于往后找,我们先看了剩余的操作次数可不可以把字符串全部都变成,这样把可以全部变成的考虑
如果还有剩余,我们就去考虑,剩下的最远可以到哪一个位置
我之前一直在担心会不会操作不够,其实完全不用担心,如果我们对于这一次的最左端需要的操作数还不够,我们可以用到那些和这些没有关系的上(毕竟题目已经告诉你了的数量一定大于等于,我之前就是考虑到这儿,每次都判断一下是不是等于,结果了
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include<cmath>
#include <unordered_map>
#include <array>
#include <cstring>
using namespace std;
#define int long long
#define LL long long
#define ios ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define inf 1e18
#define INF 1e18
#define mem(a,b) memset((a),(b),sizeof(a))
const int maxn=3e5+10;
const int mod=998244353;
int m,k,n;
string s;
int sum[maxn];
int find(int x,int last,int l,int r)
{
int ans=-1;
while (l<=r)
{
int mid=(l+r)>>1;
int now=sum[mid]-last;
if(now<=x)
{
ans=mid;
l=mid+1;
}
else r=mid-1;
}
return ans;
}
signed main ()
{
cin>>n>>m>>k;
cin>>s;
s=" "+s;
for (int i=1;i<=n;i++)
{
int val=0;
if(s[i]=='x') val=1;
sum[i]=sum[i-1]+val;
}
int ans=0;
for (int i=1;i<=n;i++)
{
int l=find(k,sum[i-1],i,n);
if(l==-1) continue;
int val=(l-i+1);
int cnt=sum[l]-sum[i-1];
if(l<n)
{
ans=max(ans,val);
}
else if(l==n)
{
int cha=(k-cnt)/sum[n];
val+=min(cha,m-1ll)*n;
if(cha<m-1ll)
{
int res=(k-cnt)-cha*sum[n];
int pp=find(res,0,1,n);
if(pp!=-1)
{
val+=pp;
}
}
ans=max(ans,val);
}
}
cout<<ans<<"\n";
system ("pause");
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)