1. AtCoder Beginner Contest 293(C,D ,E,F) 2023-03-17 2. Educational Codeforces Round 115 (Rated for Div. 2)(D,E) 2023-03-18 3. AtCoder Beginner Contest 294(E,F,G) 2023-04-03 4. AtCoder Beginner Contest 246 2023-03-29 5. 中国石油大学(北京)第三届“骏码杯”程序设计竞赛(同步赛)(D,E,F) 2023-03-25 6. Codeforces Global Round 16(D,E,F) 2023-03-25 7. AtCoder Beginner Contest 209(D,E) 2023-05-08 8. Monoxer Programming Contest 2022(AtCoder Beginner Contest 238)(E,F) 2023-05-07 9. AtCoder Beginner Contest 285(B,D,E,F) 2023-05-06 10. AtCoder Beginner Contest 242(D,E) 2023-05-03 11. AtCoder Beginner Contest 223(D,E,F) 2023-04-15 12. AtCoder Beginner Contest 207(D,E) 2023-04-11 13. AtCoder Beginner Contest 247(E,F) 2023-04-10 14. AtCoder Beginner Contest 226(E,F,G) 2023-04-05 15. AtCoder Beginner Contest 229(F,G) 2023-06-23 16. AtCoder Beginner Contest 273(E) 2023-06-13 17. AtCoder Beginner Contest 286(G) 2023-06-02 18. AtCoder Beginner Contest 287(C,D,E,F) 2023-06-01 19. AtCoder Beginner Contest 288(D,E,F) 2023-05-31 20. AtCoder Beginner Contest 289(E,F) 2023-05-30 21. AtCoder Beginner Contest 290(D,E) 2023-05-29 22. AtCoder Beginner Contest 292(E,F,G) 2023-05-28 23. AtCoder Beginner Contest 298(D,F) 2023-05-27 24. AtCoder Beginner Contest 299(E,F) 2023-05-27 25. AtCoder Beginner Contest 300(E,F) 2023-05-25 26. AtCoder Beginner Contest 302(E,F,G) 2023-05-24 27. AtCoder Beginner Contest 253(E,F) 2023-05-17 28. AtCoder Beginner Contest 245(D,E,F) 2023-05-15 29. AtCoder Beginner Contest 248(D,E,F) 2023-05-14 30. AtCoder Beginner Contest 206(Sponsored by Panasonic)(E,F) 2023-05-09 31. Codeforces Round 875 (Div. 2)(D) 2023-07-08 32. AtCoder Beginner Contest 178(E,F) 2023-07-08 33. AtCoder Beginner Contest 307(E,F,G) 2023-07-01 34. CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!)C 2023-06-30 35. Educational Codeforces Round 151 (Rated for Div. 2)(C,D) 2023-06-30 36. AtCoder Beginner Contest 212(E,F) 2023-06-24
37. 牛客小白月赛51 2022-12-09 38. 2022年浙大城市学院新生程序设计竞赛(同步赛)(补题) 2022-12-11 39. Codeforces Round #770 (Div. 2)B,C 2022-12-24 40. Codeforces Global Round 24(B,C) 2022-12-23 41. Codeforces Round #836 (Div. 2)C 2022-12-21 42. Codeforces Round #840 (Div. 2) C 2022-12-20 43. Good Bye 2022: 2023 is NEAR C 2022-12-31 44. Codeforces Round #765 (Div. 2)A,B,C 2022-12-31 45. Codeforces Round #766 (Div. 2)C,D 2022-12-29 46. Codeforces Round #841 (Div. 2) and Divide by Zero 2022 2022-12-28 47. Codeforces Round #767 (Div. 2)C ,D 2022-12-27 48. Codeforces Round #768 (Div. 2)C ,D 2022-12-26 49. Codeforces Round #769 (Div. 2) B,C 2022-12-25 50. Educational Codeforces Round 122 (Rated for Div. 2),C,D 2022-12-25 51. Educational Codeforces Round 119 (Rated for Div. 2) 2023-01-14 52. AtCoder Beginner Contest 258 2023-01-13 53. Codeforces Round #763 (Div. 2)C 2023-01-12 54. Codeforces Round #843 (Div. 2)(B,C,D,E) 2023-01-12 55. Educational Codeforces Round 141 (Rated for Div. 2)(B,C,D) 2023-01-10 56. AtCoder Beginner Contest 275(B,C,D,E,F) 2023-01-09 57. Codeforces Round #842 (Div. 2)(B,D,E) 2023-01-09 58. AtCoder Beginner Contest 284(D,E,F) 2023-01-08 59. The 14th Jilin Provincial Collegiate Programming Contest(补题) 2023-01-07 60. 牛客小白月赛65(C,D,E,F) 2023-01-07 61. AtCoder Beginner Contest 281(D,E,F) 2023-01-05 62. Good Bye 2021: 2022 is NEAR D 2023-01-05 63. Hello 2023 2023-01-04 64. The 15th Jilin Provincial Collegiate Programming Contest(补题) 2023-01-03 65. Codeforces Round #781 (Div. 2)C 2023-01-02 66. Hello 2022(B,D) 2023-01-01 67. AtCoder Beginner Contest 272(D,E) 2023-03-10 68. Codeforces Round 751 (Div. 2)(D) 2023-03-08 69. Codeforces Round 856 (Div. 2)(C,D) 2023-03-08 70. Codeforces Round 752 (Div. 2)(C,D,E) 2023-03-08 71. Codeforces Round 855 (Div. 3)(E,F) 2023-03-05 72. AtCoder Regular Contest 131(A,B,C) 2023-03-05 73. Educational Codeforces Round 144 (Rated for Div. 2)(A,B,C,D) 2023-03-05 74. Codeforces Round 853 (Div. 2)(C,D) 2023-03-03 75. 牛客练习赛109(C,D) 2023-03-03 76. AtCoder Beginner Contest 291(Sponsored by TOYOTA SYSTEMS)(D,E,F) 2023-03-01 77. Educational Codeforces Round 143 (Rated for Div. 2)(A,C,D) 2023-02-28 78. Codeforces Round #852 (Div. 2)(C,D) 2023-02-13 79. Educational Codeforces Round 118 (Rated for Div. 2)(D,E) 2023-02-09 80. AtCoder Beginner Contest 236(D,E,F) 2023-02-09 81. Codeforces Round #850 (Div. 2, based on VK Cup 2022 - Final Round)(B,D) 2023-02-08 82. Codeforces Round #848 (Div. 2)(B,C,D) 2023-02-07 83. TypeDB Forces 2023 (Div. 1 + Div. 2, Rated, Prizes!) (B,C,D) 2023-02-07 84. Codeforces Round #846 (Div. 2)(B,E) 2023-02-07 85. Educational Codeforces Round 142 (Rated for Div. 2)(C,D) 2023-02-04 86. 2023牛客寒假算法基础集训营6 2023-02-04 87. Codeforces Round #845 (Div. 2) and ByteRace 2023(A,B,C) 2023-02-02 88. 2023牛客寒假算法基础集训营5 2023-02-02 89. 2023牛客寒假算法基础集训营3 2023-01-21 90. 2023牛客寒假算法基础集训营2 2023-01-19 91. 2023牛客寒假算法基础集训营1 2023-01-18 92. Educational Codeforces Round 120 (Rated for Div. 2) C,D 2023-01-15 93. AtCoder Beginner Contest 254(C,D,E,F) 2023-01-15
AtCoder Beginner Contest 212(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>
#include <bitset>
#include <numeric>
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 eps 1e-6
#define mem(a,b) memset((a),(b),sizeof(a))
const int maxn=5000 +10 ;
const int mod=998244353 ;
int n,k,m;
int u[maxn],v[maxn];
int dp[maxn][maxn];
signed main ()
{
cin >>n>>m>>k;
for (int i=1 ;i<=m;i++)
{
cin >>u[i]>>v[i];
}
dp[0 ][1 ]=1 ;
for (int i=1 ;i<=k;i++)
{
int s=0 ;
for (int j=1 ;j<=n;j++)
{
s=(s+dp[i-1 ][j])%mod;
}
for (int j=1 ;j<=n;j++)
{
dp[i][j]=((s-dp[i-1 ][j])%mod+mod)%mod;
}
for (int j=1 ;j<=m;j++)
{
dp[i][u[j]]=((dp[i][u[j]]-dp[i-1 ][v[j]])%mod+mod)%mod;
dp[i][v[j]]=((dp[i][v[j]]-dp[i-1 ][u[j]])%mod+mod)%mod;
}
}
int ans=dp[k][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>
#include <bitset>
#include <numeric>
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 eps 1e-6
#define mem(a,b) memset((a),(b),sizeof(a))
const int maxn=1e5 +10 ;
const int mod=998244353 ;
int n,m,q;
int f[maxn][32 ];
int a[maxn],b[maxn],s[maxn],t[maxn];
vector <pair <int ,int >>g[maxn];
void init ()
{
for (auto &x:g)
{
sort(x.begin(),x.end());
}
for (int i=1 ;i<=m;i++)
{
pair <int ,int > now={t[i],0 };
auto it=lower_bound(g[b[i]].begin(),g[b[i]].end(),now);
if (it==g[b[i]].end())
{
f[i][0 ]=i;
}
else
{
f[i][0 ]=it->second;
}
}
for (int j=1 ;j<=20 ;j++)
{
for (int i=1 ;i<=m;i++)
{
f[i][j]=f[f[i][j-1 ]][j-1 ];
}
}
return ;
}
signed main ()
{
cin >>n>>m>>q;
for (int i=1 ;i<=m;i++)
{
cin >>a[i]>>b[i]>>s[i]>>t[i];
g[a[i]].push_back({s[i],i});
}
init();
while (q--)
{
int x,y,z;
cin >>x>>y>>z;
pair <int ,int > now={x,0 };
auto it=lower_bound(g[y].begin(),g[y].end(),now);
if (it==g[y].end())
{
cout <<y<<"\n" ;
continue ;
}
int v=it->second;
if (z<=s[v])
{
cout <<y<<"\n" ;
}
else if (z<=t[v])
{
cout <<a[v]<<" " <<b[v]<<"\n" ;
}
else
{
for (int i=20 ;i>=0 ;i--)
{
if (t[f[v][i]]<z)
{
v=f[v][i];
}
}
now={t[v],0 };
it=lower_bound(g[b[v]].begin(),g[b[v]].end(),now);
if (it==g[b[v]].end())
{
cout <<b[v]<<"\n" ;
}
else
{
int nxt=it->second;
if (z<=s[nxt])
{
cout <<b[v]<<"\n" ;
}
else
{
cout <<a[nxt]<<" " <<b[nxt]<<"\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)