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 229(F,G)
F(二部图,dp)
F
这个题大致是给你 个点,为 到 ,然后 条边是点 到 这些点的 条边,后面还有 条边,连接点 和 (其中 为 到 ,其中 是和 连接的)
前 条边的价值是 ,后面 条边的价值是 ,我们需要删除一些边,使得这个图变成一个二部图,其中删除每一条边的价值如上,问得到一个二部图的最小价值为多少
对于二部图,我的理解就是可以把一个图的点分成两个集合,两个集合的不同点可以互相相连,但是同一集合里面的点一定是不连通的
那么,对于这些点,我们也可以分成两个集合
设两个集合,编号为 和 ,我们先让点 在集合 ,然后对于其他的点,我们需要判断是否在一个集合,如果在同一个集合,那么需要删除相连的边,取较小的
我们可以从 到 一个一个的选择,但是,假如此时选择的是 的分配,我们只需要按照上一个进行判断即可了,但是还有一个边,就是点 和 ,那么第 的点的选择要删除的边不仅仅和 个点的关系,还需要和 的点的关系,所以,我们不仅需要知道最新点的选择,还需要知道第一个点的选择
其中 是我们1到 的点都已经分配好了,其中点 在集合 ,而点 在集合
#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=2e5 +10 ;
const int mod=1e9 +7 ;
int dp[maxn][2 ][2 ];
int n;
int a[maxn],b[maxn];
signed main ()
{
cin >>n;
for (int i=1 ;i<=n;i++)
{
cin >>a[i];
}
for (int i=1 ;i<=n;i++)
{
cin >>b[i];
}
for (int i=0 ;i<=n;i++)
{
for (int x=0 ;x<=1 ;x++)
{
for (int y=0 ;y<=1 ;y++)
{
dp[i][x][y]=inf;
}
}
}
dp[1 ][1 ][1 ]=0 ;
dp[1 ][0 ][0 ]=a[1 ];
for (int i=2 ;i<=n;i++)
{
dp[i][1 ][0 ]=min(dp[i-1 ][1 ][0 ]+b[i-1 ],dp[i-1 ][0 ][0 ]);
dp[i][1 ][1 ]=min(dp[i-1 ][1 ][1 ]+b[i-1 ],dp[i-1 ][0 ][1 ]);
dp[i][0 ][0 ]=min(dp[i-1 ][0 ][0 ]+b[i-1 ]+a[i],dp[i-1 ][1 ][0 ]+a[i]);
dp[i][0 ][1 ]=min(dp[i-1 ][0 ][1 ]+b[i-1 ]+a[i],dp[i-1 ][1 ][1 ]+a[i]);
}
int ans=inf;
for (int i=0 ;i<=1 ;i++)
{
for (int j=0 ;j<=1 ;j++)
{
if (i==j)
{
ans=min(ans,dp[n][i][j]+b[n]);
}
else
{
ans=min(ans,dp[n][i][j]);
}
}
}
cout <<ans<<"\n" ;
system ("pause" );
return 0 ;
}
G(字符串,二分)
G
这个题大意是给出一个字符串,里面的字符只有 和 两种,我们最多可以交换位置 和 的字符 次,问我们可以得到的最长连续 的长度
类似于学校校赛的一道题
我们可以把每一个我们需要的 按顺序排起来需要交换的次数,记录在 数组里面
我们按照第一个 在位置 ,第二个在位置 ,以此类推
我们每次选择让 到 这一区间的 都放在一起,但是由于这些都可能没有在一起,贪心的想,可以让中间的那一个 不需要动,它左边的往右边移动,它右边的往左边移动。
但是我们需要移动多少次呢
其实,我前面记录的每一个 到相应位置的交换次数都是相对的,如果已经固定了一个应该要到的位置,不管到了哪个位置,最后相邻的都是 ,那么要让 和 个 距离合适(要么为 ,要么为 ...),为
然后对以区间 到 之间的 都连在一起了,我们贪心的想,让中间位置的 不动,按照前面的想法,在慢慢来写
具体可以这样计算
所以,我们还需要记录一下 的前缀和,然后再按照不同的长度进行二分,只要该长度每一个可以在 个操作内可以得到,那么就是可以
#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=2e5 +10 ;
const int mod=1e9 +7 ;
int g[maxn],sum[maxn];
int n,k;
string s;
int cnt;
int fun (int l,int r)
{
int mid=(l+r)>>1 ;
int cntl=mid-l;
int cntr=r-mid;
int ll=cntl*(g[mid])-(sum[mid]-sum[l]);
int rr=sum[r+1 ]-sum[mid+1 ]-cntr*g[mid];
int res=ll+rr;
return res;
}
bool check (int len)
{
for (int i=0 ,j;i+len-1 <cnt;i++)
{
int l=i;
int r=l+len-1 ;
if (r>=cnt) break ;
int now=fun(l,r);
if (now<=k) return true ;
}
return false ;
}
signed main ()
{
cin >>s>>k;
n=s.size();
s=" " +s;
for (int i=1 ;i<=n;i++)
{
if (s[i]=='Y' )
{
g[cnt]=i-cnt;
cnt++;
}
}
for (int i=1 ;i<=cnt;i++)
{
sum[i]=sum[i-1 ]+g[i-1 ];
}
int l=1 ,r=cnt;
int ans=0 ;
while (l<=r)
{
int mid=(l+r)>>1 ;
if (check(mid))
{
ans=mid;
l=mid+1 ;
}
else
{
r=mid-1 ;
}
}
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)