牛客小白月赛80 A-D

时间原因 快速水了A------D

A、

题目描述

现在给你一个递推公式:

n=0 an=1 ; n=1 an=2 ;n>1 an=2*a(n-1)-a(n-2)

求该数列的第 n 项。由于答案可能过大,你只需要输出答案对 998244353 取模后的值。

输入描述:

复制代码
一个正整数 n (1≤n≤998244351) 。

输出描述:

复制代码
一个整数,对应答案。

示例1

输入

复制代码
1

输出

复制代码
2

示例2

输入

复制代码
2

输出

复制代码
3

备注:

复制代码
如果没有解题思路,可以算一下前几项看看。
复制代码
#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define fp(i,a,b) for(int i=a;i<=b;++i)
#define PII pair<int,int>
const int N=2e5+10;
const int mod=1e9+7;
const double eps=1e-5;
typedef double db;
int n;
signed main()
{
    cin>>n;
	cout<<n+1<<"\n";
	
	return 0;
} 

B、

题目描述

校园里目前有 N 名学生,这些学生属于 M 个班级。第 i 个人属于第Ai​ 个班级。突然,放学铃声响起,你还没来得及思索,就已经有 K 名学生已经冲出了学校。你不知道已经跑出学校的学生属于哪些班级,但是,你想知道,目前还没出校的学生中,最多有多少学生是属于同一个班级的。

输入描述:

复制代码
第一行三个正整数 N (1≤N≤10^5), M(1≤M≤N),K(1≤K≤N)含义如上所述。

第二行 N 个正整数 Ai​(1≤Ai≤M),含义如上所述。

输出描述:

复制代码
一个整数,表示目前学校里最多有多少同学是属于同一个班级的。

示例1

输入

复制代码
6 3 3
3 1 2 3 3 2

输出

复制代码
3
复制代码
#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define fp(i,a,b) for(int i=a;i<=b;++i)
#define PII pair<int,int>
const int N=2e5+10;
const int mod=1e9+7;
const double eps=1e-5;
typedef double db;
int n,m,k;
int a[N];
int cnt[N];
signed main()
{
	int mmax=0;
	
    cin>>n>>m>>k;
	
	fp(i,1,n)cin>>a[i],cnt[a[i]]++,mmax=max(mmax,a[i]);
	
    sort(cnt+1,cnt+1+mmax);
	
	int sum=0;
	for(int i=1;i<=mmax-1;i++)
	{
		sum+=cnt[i];
	}	
	if(sum>=k)
	{
		cout<<cnt[mmax];
	}
	else
	{
		cout<<cnt[mmax]-(k-sum);
	}
	
	return 0;
} 

C、

题目描述

本题和 D 题的唯一区别是 N 的范围。

校园里目前有 N 名学生,这些学生属于 M 个班级。第 i(i=1,2,...,N)个人属于第Ai​ 个班级。突然,放学铃声响起,你还没来得及思索,就已经有 K 名学生已经冲出了学校。然而,由于某班级的老师还在拖堂,可以确定这个班级目前还没有任何学生离校。现在请你求出,假设恰好只有班级 j(j=1,2,...,M)的老师还在拖堂,在剩下的未拖堂的班级中,还留在学校的人数最多的班级的最少的可能人数是多少。

输入描述:

复制代码
第一行三个正整数 N(1≤N≤10^2),M(1≤M≤N),K(1≤K≤N)含义如上所述。
第二行 N个正整数 Ai​(1≤Ai≤M),含义如上所述。

输出描述:

复制代码
M个整数,第 i 个整数表示恰好只有班级 i 的老师还在拖堂,在剩下的未拖堂的班级中,还留在学校的人数最多的班级的最少的可能人数是多少。如果班级 i 拖堂就不可能有 K 名学生冲出学校,则输出 -1。

示例1

输入

复制代码
6 3 3
3 1 2 3 3 2

输出

复制代码
1 1 0

示例2

输入

复制代码
6 3 4
3 1 2 3 3 2

输出

复制代码
1 0 -1
复制代码
#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define fp(i,a,b) for(int i=a;i<=b;++i)
#define PII pair<int,int>
const int N=2e5+10;
const int mod=1e9+7;
const double eps=1e-5;
typedef double db;
int n,m,k;
int a[N];
int cnt[N];
int cnts[N];
signed main()
{
	
    cin>>n>>m>>k; 
	
	fp(i,1,n)cin>>a[i],cnt[a[i]]++;
	
	
	for(int i=1;i<=m;i++)
	{
	    if(n-cnt[i]<k)
	    {
	    	cout<<-1<<" ";
	    	continue;
		}
		for(int j=0;j<=n;j++)
		{
		    int sum=0;
			for(int t=1;t<=m;t++)
			{
				if(t==i)continue;
				sum+=max(0ll,cnt[t]-j);
			}
			if(sum<=k)
			{
			    cout<<j<<" ";
				break;	
			} 	
	    }
	}
	
	return 0;
} 

O(n^3)暴力

D、

复制代码
#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define fp(i,a,b) for(int i=a;i<=b;++i)
#define PII pair<int,int>
const int N=2e6+10;
const int mod=1e9+7;
const double eps=1e-5;
typedef double db;
int n,m,k;
int a[N];
int sum1[N],sum2[N];
int calc(int x,int i){
    return (sum2[x]-(a[i]>=x)*a[i])-(sum1[x]-(a[i]>=x))*x;
}
signed main()
{
	
    cin>>n>>m>>k; 
	
	int x;
	for(int i=1;i<=n;i++)cin>>x,a[x]++;
    for(int i=1;i<=m;i++)
        sum1[a[i]]++,sum2[a[i]]+=a[i];
    for(int i=n-1;i>=0;i--)sum1[i]+=sum1[i+1],sum2[i]+=sum2[i+1];
    for(int i=1;i<=m;i++){
        if(n-a[i]<k){
            cout<<-1<<" ";
            continue;
        }
        int l=0,r=n;
        while(l<r){
            int mid=(l+r)>>1;
            if(calc(mid,i)<=k)r=mid;
            else l=mid+1;
        }
        cout<<l<<" ";
    }
	return 0;
} 

O(nlogn) 后缀优化+二分

相关推荐
情深不寿31714 分钟前
C++特殊类的设计
开发语言·c++·单例模式
做科研的周师兄23 分钟前
【机器学习入门】7.4 随机森林:一文吃透随机森林——从原理到核心特点
人工智能·学习·算法·随机森林·机器学习·支持向量机·数据挖掘
Vanranrr29 分钟前
nullptr vs NULL:C/C++ 空指针的演变史
c语言·c++
切糕师学AI36 分钟前
【多线程】阻塞等待(Blocking Wait)(以C++为例)
c++·多线程·并发编程·阻塞等待
Sunsets_Red38 分钟前
差分操作正确性证明
java·c语言·c++·python·算法·c#
【杨(_> <_)】1 小时前
SAR信号处理重要工具-傅里叶变换(二)
算法·信号处理·傅里叶分析·菲涅尔函数
第七序章1 小时前
【C++】AVL树的平衡机制与实现详解(附思维导图)
c语言·c++·人工智能·机器学习
ajassi20001 小时前
开源 C++ QT QML 开发(十九)多媒体--音频录制
c++·qt·开源
怎么没有名字注册了啊1 小时前
爬动的蠕虫
算法
取酒鱼食--【余九】1 小时前
机器人学基础(一)【坐标系和位姿变换】
笔记·算法·机器人·开源·机器人运动学·机器人学基础