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 242(D,E)
D(二叉树搜索)
D
题目大意就是首先给你一个字符串,代表,然后我们可以操作得到等等
我们可以知道是拿经过一系列替换而来的,因为这个字符串只有三种字符串,,这个替换方式就是把替换成,把替换成,把替换成
题目会有次询问,询问的是的第个字符
我们可以发现对于每一次替换,字符串的数量都会乘以二,而且原来在第的字符,可能会变成的一个字符,和的一个字符,我们可以发现这个和二叉树左右子树很像,而且,这个替换也是有规律的,替换后的前一个字符和原来的字符相差为,第二个相差为,所以我们也可以根据位置一直往前找,知道那个序列是最初的序列,或者是已经出现了位置是的情况,那么我们可以直接得出答案
对于如果此时的状态已经是最初的状态,即,我们直接输出
对于如果此时的已经是了,说明每一次它都是最开始的那一个字符,不过每一次字符都在改变,具体会改变多少次,需要根据此时的而定,我们可以发现每转换一次,第一个字符都会相加一次(这个相加很像加一,然后对三取余,代表,代表,代表,这个转换很像这样的一个循环),所以我们最后返回的就是(记得不要忘记取余哦)
对于不是以上两种状态时,我们需要怎么样转移呢
我们这个就用到以上发现这一个转换过程很像二叉树的遍历过程,对于此时是一个的字符,那么它对应的上一个序列的位置是在,然后他的符号和这个位置的关系是什么呢,还是根据上面发现的,前面一个是相差为,后面一个相差为,因为这个字符串是从开始的,所以前面的那一个一定是偶数,故我们可以根据奇偶性来判断这个字符和上一个序列字符的差
所以,我们可以返回
具体的可以看代码
#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 double eps=1e-9;
const int maxn=1e6+10;
const int mod=998244353;
int n,q;
string s;
int find(int t,int k)
{
if(t==0)
{
return (s[k]-'A')%3;
}
else if(k==0)
{
return (s[0]-'A'+t)%3;
}
else
{
return (find(t-1,k/2)+k%2+1)%3;
}
}
void solve()
{
int t,k;
cin>>t>>k;
int p=find(t,k-1);
char ch='A'+p;
cout<<ch<<"\n";
}
signed main()
{
cin>>s>>q;
while (q--)
{
solve();
}
system ("pause");
return 0;
}
E(组合问题)
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 double eps=1e-9;
const int maxn=1e6+10;
const int mod=998244353;
string s;
int n;
int t;
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;
}
void solve()
{
cin>>n>>s;
string t=s;
s=" "+s;
int ans=0;
int r=(n+1)/2;
string left = t.substr(0, (n + 1) / 2), right = left;
reverse(right.begin(), right.end());
if (n & 1) right.erase(right.begin());
for (int i=1;i<=r;i++)
{
int now=s[i]-'A';
int count=(r-i);
ans=(ans+now*ksm(26,count)%mod)%mod;
}
string p=left+right;
p=" "+p;
if(p<=s) ans=(ans+1)%mod;
cout<<ans<<"\n";
}
signed main()
{
cin>>t;
while (t--)
{
solve();
}
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)