AtCoder Beginner Contest 291(Sponsored by TOYOTA SYSTEMS)(D,E,F)
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 291(Sponsored by TOYOTA SYSTEMS)(D,E,F)
D
又一次误解题意
这个题的要求是相邻的两个数不同,而我的翻译上是整个数列的数都是不同的 (ಥ﹏ಥ)
大意是给你
如果没有误解题意,那么这道题就是很明显的
我们可以这样构造
然后我们可得状态转移方程如下
if (a[i][0]!=a[i-1][0])
{
dp[i][0]=(dp[i][0]+dp[i-1][0])%mod;
}
if (a[i][0]!=a[i-1][1])
{
dp[i][0]=(dp[i][0]+dp[i-1][1])%mod;
}
if (a[i][1]!=a[i-1][0])
{
dp[i][1]=(dp[i][1]+dp[i-1][0])%mod;
}
if (a[i][1]!=a[i-1][1])
{
dp[i][1]=(dp[i][1]+dp[i-1][1])%mod;
}
还蛮好理解的
然后就可以写代码了
#include <iostream>
#include <string>
using namespace std;
const int maxn=2e5+10;
const int mod=998244353;
#define int long long
int n;
int a[maxn][2],dp[maxn][2];
signed main ()
{
cin>>n;
for (int i=1;i<=n;i++)
{
cin>>a[i][0]>>a[i][1];
}
dp[1][0]=dp[1][1]=1;
for (int i=2;i<=n;i++)
{
if (a[i][0]!=a[i-1][0])
{
dp[i][0]=(dp[i][0]+dp[i-1][0])%mod;
}
if (a[i][0]!=a[i-1][1])
{
dp[i][0]=(dp[i][0]+dp[i-1][1])%mod;
}
if (a[i][1]!=a[i-1][0])
{
dp[i][1]=(dp[i][1]+dp[i-1][0])%mod;
}
if (a[i][1]!=a[i-1][1])
{
dp[i][1]=(dp[i][1]+dp[i-1][1])%mod;
}
//cout<<dp[i][0]<<" "<<dp[i][1]<<'\n';
}
int ans=(dp[n][1]+dp[n][0])%mod;
cout<<ans<<'\n';
system ("pause");
return 0;
}
E
题目大意就是会给我们
对于每两个数之间的关系,我们可以把这个关系看成是两个点之间的边,然后还需要的值每一个点的值,这个我们可以使用拓扑排序(但是要满足这个序列是唯一的,所以在进行拓扑排序时的队列里面的
然后就没什么了
#include <iostream>
#include <queue>
#include <algorithm>
#include <vector>
using namespace std;
int n,m;
int main ()
{
cin>>n>>m;
vector<vector<int>>g(n+1);
vector<int>in(n+1);
for (int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
g[x].push_back(y);
in[y]++;
}
vector<int>ans(n+1);
queue<int>q;
int cnt=0;
for (int i=1;i<=n;i++)
{
if (!in[i])q.push(i);
}
while (!q.empty())
{
if (q.size()!=1)//可以赋给多个点,不唯一
{
cout<<"No\n";
system ("pause");
return 0;
}
int u=q.front();
q.pop();
ans[u]=++cnt;
for (auto v:g[u])
{
in[v]--;
if (in[v]==0) q.push(v);
}
}
cout<<"Yes\n";
for (int i=1;i<=n;i++)
{
cout<<ans[i]<<" ";
}
cout<<'\n';
system ("pause");
return 0;
}
F
这个题大意是给你
对于
然后我们还有
然后看到这一道题,我就觉得和寒假训练营的某一道题相似
这次训练营因为一些原因没有写题解,这两个题都用到了这一个思路
然后其他的就是一些细节的处理,具体的看代码吧
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
#define int long long
#define inf (int)1e9+10
const int maxn=2e5+10;
int n,m;
signed main ()
{
cin>>n>>m;
vector<string>s(n+1);
for (int i=1;i<=n;i++)
{
cin>>s[i];
s[i]=" "+s[i];
}
vector<int>dp0(n+1,inf),dp1(n+1,inf);//dp0[i]代表顺方向的,从1到i的步数,dp1[i]代表从n到i,逆着走
dp0[1]=0;
for (int i=1;i<=n;i++)//i作为开始的点
{
for (int j=i+1;j<=min(n,i+m);j++)//j作为到达的点
{
if (s[i][j-i]=='1')
{
dp0[j]=min(dp0[j],dp0[i]+1);
}
}
}
dp1[n]=0;
for (int j=n;j>=1;j--)//逆着走时,j是初始点
{
for (int i=max(1ll,j-m);i<j;i++)//到达点
{
if (s[i][j-i]=='1') dp1[i]=min(dp1[i],dp1[j]+1);
}
}
for (int k=2;k<n;k++)
{
int ans=inf;
for (int i=max(k-m+1,1ll);i<k;i++)
{
for (int j=k+1;j<=min(n,i+m);j++)//注意这里的j取min(n,i+m)意思是在不大于n的情况下,我们最远到达的是和i距离为m的点,而不是k-1+m,看到有一些题解时这么写的,一直没找到这个bug
{
if (s[i][j-i]=='1')
{
ans=min(ans,dp0[i]+dp1[j]+1);
}
}
}
if (ans==inf) ans=-1;
cout<<ans<<' ';
}
cout<<'\n';
system ("pause");
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下