Educational Codeforces Round 120 (Rated for Div. 2) C,D
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牛客寒假算法基础集训营1
92.Educational Codeforces Round 120 (Rated for Div. 2) C,D
93.AtCoder Beginner Contest 254(C,D,E,F) Educational Codeforces Round 120 (Rated for Div. 2) C,D
C
这个题目大意是给我们n个数,我们可以把ai变成ai-1,或者是把ai变成aj,而我们需要知道最少的操作数把n个数的和小于等于k
对于这些个操作,我们可以知道,我们先进行减法操作还是改变值的操作呢
当然是我们如果需要减法操作的话,我们就先对最小的那个进行减法,然后再把后面的若干个数变成那个后面的a1(如果有需要的话)
首先我们先遍历把后面多少个数变成a1,然后再讨论是否需要进行减法操作t
如果不考虑减法
now=sum[i]+(n-i)a[1],前i面个不变,i到n变成a1
如果now<=k t=0
否则,就需要判断需要几个减法操作
cha=k-now
对于这变化的n-i+1(还须包括a1),每多进行一个减法操作,cha就会减去(n-i+1)个,差值会减少,所以我们t就是cha除以n-i+1,向上取整
那么此时用过的操作数是
cnt=n-i+t
#include <iostream>
#include <stdlib.h>
#include <algorithm>
#include <vector>
#include <cmath>
#define int long long
using namespace std;
int n,k;
int t;
void solve()
{
cin>>n>>k;
vector<int>a(n+1,0);
for (int i=1;i<=n;i++)
{
cin>>a[i];
}
vector<int>sum(n+1,0);
sort(a.begin()+1,a.end());
int ans=1e10;
for (int i=1;i<=n;i++)
{
sum[i]=sum[i-1]+a[i];
}
for (int i=1;i<=n;i++)
{
int t=0;
if (sum[i]+(n-i)*a[1]<=k) t=0;
else
{
t=ceil((sum[i]+(n-i)*a[1]-k)*1.0/(n-i+1));
}
ans=min(ans,n-i+t);
}
cout<<ans<<'\n';
return ;
}
signed main ()
{
cin>>t;
while (t--)
{
solve();
}
system ("pause");
return 0;
}
D
这一个题大意是我们有一个长度为n的01串,我们可以对一段子串里面有k个1的子串对这些字符进行重排列,我们需要知道最后有多少种不同的排序
这一个是组合问题
我们首先要知道这k个1的跨度,这个跨度我们是这样判断的
以第一个1的位置作为最左边,以最右边是第k+1的前一个位置
如,对于k=2
011000001 那么此时第一段就是01100000
对于这一段里的重排列有多少不同的排列呢
当然是从这里面字符数量里面选出k个位置来放1(但是对于我们为什么没有减去原来的那一个排序呢,请往后看)
但是对于第i段和i+1段,会有重叠的部分(合集)
这个合集还是比较重要的
然后我们就只需要减去这个交集即可。
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
const int maxn=3e5+10,mod=998244353;
#define int long long
int inv[maxn],fac[maxn],ifac[maxn];
int n,k;
int pre[maxn],fix[maxn],pos[maxn];
string s;
void init()
{
inv[1]=fac[0]=fac[1]=ifac[0]=ifac[1]=1;
for (int i=2;i<=n;i++)
{
inv[i]=(mod-mod/i)*inv[mod%i]%mod;
fac[i]=fac[i-1]*i%mod;
ifac[i]=ifac[i-1]*inv[i]%mod;
}
return ;
}
int C(int m,int n)
{
return fac[m]*ifac[n]%mod*ifac[m-n]%mod;
}
void solve()
{
cin>>n>>k;
cin>>s;
init();
s=" "+s;
int last=1;
int cnt=0;
for (int i=1;i<=n;i++)
{
if (s[i]=='1')
{
pre[i]=last;//pre是上一1的后面一个位置,这个用于找最左端
last=i+1;
pos[++cnt]=i;
}
}
last=n;
for (int i=n;i>=1;i--)
{
if (s[i]=='1')//这个是找1后面一个1的前一个,用于找最右端
{
fix[i]=last;
last=i-1;
}
}
if (cnt<k||k==0)
{
cout<<1<<'\n';
return ;
}
int res=0;
for (int i=1;i+k-1<=cnt;i++)
{
int l=pre[pos[i]],r=fix[pos[i+k-1]];
int l1=pre[pos[i+1]],r1=r;
res+=C(r-l+1,k);
if (i!=cnt-k+1)//和下一个k的重叠部分(交集)
{
res-=C(r1-l1+1,k-1);
}
res=(res+mod)%mod;
}
cout<<res<<'\n';
return ;
}
signed main ()
{
int t=1;
while (t--)
{
solve();
}
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)