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)
Codeforces Round 853 (Div. 2)(C,D)
C
C
题目大意就是给你个数,我们可以按顺序得到接下来的个序列,每一个操作是对前面一个序列的第个数变成,保证每次变化后的序列里面的每一个数两两不同,然后我们找到两个序列和,并且保证,我们可以得到这两个序列里面的数的种类的数量,然后对于每一对序列,求出这个值的和
这个想着还真是麻烦
然后再知乎上看到了大佬的题解
既然直接求出比较麻烦,正难则反
我们可以知道假如每一对都是完全不同时的值,即总值 ,用表达
然后我们只要减去那些重复的数
怎么计算那些重复的数,那些数重复出现了多少次呢
对于每一个出现的数,我们都把它存进里面,然后对于这一个数在多少个序列出现过呢
我们可以记录每一个位置最后一次变化时的序列编号,也是变化后的数第一次出现在的序列的编号,用数组存储,那么如果在下一次如果这一个位置又一次出现变化,那么变化前的数出现了,是此时的序列编号,是这个位置的上一次变化的序列编号,那么变化之前的那个数就出现了次
然后我们可以得出每一个数出现的在那些不同的序列的次数
对于这些数,只有当两个序列都在这些序列里面,选择的两个序列都出现了同一个数字,那么的贡献就需要减一,则有多少种这样的搭配,就要减少多少个
#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
const int maxn=2e5+10;
#define int long long
int t,m,n;
struct node
{
int p,v;
}b[maxn];
int a[maxn];
unordered_map<int,int>cnt;
int lst[maxn];
void solve()
{
cin>>n>>m;
cnt.clear();
for (int i=1;i<=n;i++)
{
cin>>a[i];
lst[i]=0;
}
for (int i=1;i<=m;i++)
{
cin>>b[i].p>>b[i].v;
}
for (int i=1;i<=m;i++)
{
cnt[a[b[i].p]]+=i-lst[b[i].p];
lst[b[i].p]=i;
a[b[i].p]=b[i].v;
}
int ans=n*m*(m+1);
for (int i=1;i<=n;i++)
{
cnt[a[i]]+=m+1-lst[i];
}
for (auto [x,y]:cnt)
{
ans=ans-y*(y-1)/2;
}
cout<<ans<<'\n';
return ;
}
signed main ()
{
cin>>t;
while (t--)
{
solve();
}
system ("pause");
return 0;
}
D
D
这个题大意是给你两个二进制字符串,我们需要通过下面两种操作把第一个字符串变成第二个字符,最后输出操作步骤
有以下两种操作

所谓左移,右边补,那么对于左移再对原来的数进行异或,那么最后面个都只是和进行异或,没有影响
右移,左边补,那么最前面的个都是和异或,那么这些字符也没有影响
我们需要把变成,我先是找到的第一个的位置,以为界限分别对这两边的不同的位置进行一一变成相同的字符
那么我们可以先把左边的字符变成和一样的字符
我们从往前遍历,把出现不同字符变成应该变成的位置,那么如果我们这个已经匹配好了,后面的操作一定不能影响这个已经匹配好的,然后这也和左移不会影响后面的字符,那么哪一个位置可以实现这样的操作呢?
那就是最后一个出现的位置,我们需要把这个位置上的位移到这个不匹配的位置上去,而且这个位置后面的都是,所以我们正好改变了这个位置的符号,而且还不会影响这个位置后面的字符
然后对于的右边我们也需要进行配对,如果这个没有匹配成功的,我们需要把这个位置的字符变化,并且还不影响左边已经匹配好的字符,我们可以用到右移,我们也是寻找从左边第一个的位置匹配(左边是这样的形式,那么左边第一个一定是,不用寻找了)到这个位置上去
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
const int maxn=2e5+10;
int a[maxn],b[maxn];
int t,n;
vector<int>ans;
void change(int len)
{
ans.push_back(len);
if (len>0)
{
for (int i=1;i+len<=n;i++)
{
a[i]=a[i]^a[i+len];
}
}
else
{
len=-1*len;
for (int i=n;i>=len+1;i--)
{
a[i]=a[i]^a[i-len];
}
}
return ;
}
void solve()
{
cin>>n;
string aa,bb;
cin>>aa>>bb;
if (aa==bb)
{
cout<<0<<'\n';
return ;
}
aa=" "+aa,bb=" "+bb;
ans.clear();
int cnta=0,cntb=0;
for (int i=1;i<=n;i++)
{
int x=aa[i]-'0';
a[i]=x;
if (x)
{
cnta++;
}
int y=bb[i]-'0';
b[i]=y;
if (y)
{
cntb++;
}
}
if ((cnta&&!cntb)||(cntb&&!cnta))
{
cout<<-1<<'\n';
return ;
}
int p=0;
for (int i=1;i<=n;i++)
{
if (b[i])
{
p=i;
break;
}
}
for (int i=p;i>=1;i--)
{
if (a[i]==b[i]) continue;
for (int j=n;j>=1;j--)
{
if (a[j])
{
change(j-i);
break;
}
}
}
for (int i=p+1;i<=n;i++)
{
if (a[i]!=b[i])
{
change(p-i);
}
}
int cnt=ans.size();
if (!cnt)
{
cout<<0<<'\n';
return ;
}
cout<<cnt<<'\n';
for (auto x:ans)
{
cout<<x<<" ";
}
cout<<'\n';
return ;
}
signed main ()
{
cin>>t;
while (t--)
{
solve();
}
system ("pause");
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!