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 场周赛完结的主要内容,如果未能解决你的问题,请参考以下文章

Acwing第 31 场周赛完结

Acwing第 36 场周赛完结

Acwing第 56 场周赛完结

Acwing第 32 场周赛完结

Acwing第 59 场周赛完结

Acwing第 35 场周赛完结