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 288(D,E,F)
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 int maxn=2e5 +10 ;
const int mod=998244353 ;
int n,k;
int q;
int sum[maxn][14 ];
int a[maxn];
bool solve ()
{
int l,r;
cin >>l>>r;
int p=sum[r][0 ]-sum[l-1 ][0 ];
for (int i=1 ;i<k;i++)
{
if (sum[r][i]-sum[l-1 ][i]!=p) return false ;
}
return true ;
}
signed main ()
{
cin >>n>>k;
for (int i=1 ;i<=n;i++)
{
cin >>a[i];
for (int j=0 ;j<k;j++)
{
sum[i][j]=sum[i-1 ][j];
}
sum[i][i%k]+=a[i];
}
cin >>q;
while (q--)
{
if (solve())
{
cout <<"Yes\n" ;
}
else
{
cout <<"No\n" ;
}
}
system ("pause" );
return 0 ;
}
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=2e5 +10 ;
const int mod=998244353 ;
int n,m;
int val[maxn],add[maxn];
bool must[maxn];
signed main ()
{
cin >>n>>m;
for (int i=1 ;i<=n;i++)
{
cin >>val[i];
must[i]=false ;
}
for (int i=1 ;i<=n;i++)
{
cin >>add[i];
}
for (int i=1 ;i<=m;i++)
{
int x;
cin >>x;
must[x]=true ;
}
vector <int >dp(n+5 ,inf);
dp[0 ]=0 ;
for (int i=1 ;i<=n;i++)
{
vector <int >tmp(n+5 ,inf);
int w=inf;
for (int j=0 ;j<i;j++)
{
w=min(w,add[i-j]);
tmp[j+1 ]=min(tmp[j+1 ],dp[j]+val[i]+w);
if (!must[i])
{
tmp[j]=min(tmp[j],dp[j]);
}
}
dp=tmp;
}
int ans=*min_element(dp.begin(),dp.end());
cout <<ans<<"\n" ;
system ("pause" );
return 0 ;
}
F(dp)
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=2e5 +10 ;
const int mod=998244353 ;
int n;
string s;
int dp[maxn];
int sum[maxn];
signed main ()
{
cin >>n;
cin >>s;
s=" " +s;
dp[0 ]=0 ;
sum[0 ]=1 ;
for (int i=1 ;i<=n;i++)
{
int now=s[i]-'0' ;
dp[i]=(dp[i-1 ]*10 +sum[i-1 ]*now)%mod;
sum[i]=(sum[i-1 ]+dp[i])%mod;
}
int ans=dp[n];
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)