Acwing第 27 场周赛完结
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Acwing第 27 场周赛完结相关的知识,希望对你有一定的参考价值。
4079. 数字串【签到】
https://www.acwing.com/problem/content/4082/
#include<bits/stdc++.h>
using namespace std;
int main(void)
string s;
for(int i=1;i<=500;i++) s+=to_string(i);
int t; cin>>t;
while(t--)
int n; cin>>n;
cout<<s[n-1]<<endl;
return 0;
4080. 第k个数【思维 / 二分】
https://www.acwing.com/problem/content/description/4083/
#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
LL n,m,k;
bool check(LL mid)
LL sum=0;
for(int i=1;i<=n;i++) //枚举每一个行
sum+=min(m,mid/i);//计算每一行有几个数是小于等于mid的
return sum>=k;//下于等于mid的个数大于等于k
int main(void)
cin>>n>>m>>k;
LL l=1,r=n*m;
while(l<r)
LL mid=l+r>>1;
if(check(mid)) r=mid;
else l=mid+1;
cout<<l<<endl;
return 0;
4081. 选数【费用背包】
https://www.acwing.com/problem/content/description/4084/
#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
const int N=210,M=5010;
int n,m;
int v[N],w[N];
int f[N][M];//选n个数,5的数量为M 的情况下2的个数
int main(void)
cin>>n>>m;
for(int i=1;i<=n;i++)
LL x; cin>>x;
while(x%5==0) x/=5,v[i]++;
while(x%2==0) x/=2,w[i]++;
memset(f,-0x3f,sizeof f);
f[0][0]=0;
for(int i=1;i<=n;i++)
for(int j=m;j;j--)
for(int k=i*25;k>=v[i];k--)
f[j][k]=max(f[j][k],f[j-1][k-v[i]]+w[i]);
int res=0;
for(int i=1;i<M;i++) res=max(res,min(i,f[m][i]));
cout<<res;
return 0;
以上是关于Acwing第 27 场周赛完结的主要内容,如果未能解决你的问题,请参考以下文章