CF Educational 84

CF Educational 84

这场很玄学

A.数学

给定n,k,问你可否把n拆成k个不同奇数

显然if((n+k)&1)两者奇偶不同肯定不行

分下类,看看平均数与个数之间应该满足什么关系即可

B.模拟

阅读题,一大堆废话,无非讲的是每个公主各自有选人名单,最前的公主选可行的最前的王子

男女数一样多

现在就问你是否完全般配,若否,你在任意一个公主名单里加个王子,要使得般配数++即可

开个数组存下状态,女生没pick到,就记录下,回头发一个像我这样帅的单身即可

C.构造,模拟

这题很无聊

给定n*m的长方形

给定k个出发点,k个目标点

你每步操作可对所有点上下左右,撞墙不动

问你在2mn步中能否构造路径,使得目标点只少被经过一次

这题蛋疼的很,2mn够大了,都够跑遍棋盘了,主要是特判很害人

D.置换群

不会,慢慢补嘞~

E.组合数学##

其实这题理解清楚题目意思其实不难

注意它问的是长为i的砖数,而不是含有长为i砖的数有多少

这题比较友好的一点就是,它给你补了前导零,使得做题异常方便

我们只需要直接枚举一下i的长,再分类讨论连续块在中间,两侧的情况

值得注意的是要初始化10的n次幂%mod

#include<iostream>
#include<cstring>
using namespace std;
#define INF 1e10+5
#define maxn 200005
#define minn -105
#define ld long double;
#define uint unsigned int;
#define ull unsigned long long;
typedef long long ll;
ll n,p[maxn];
const ll mod=998244353;
int main()
{
	cin.tie(0);
	cout.tie(0);
	ios_base::sync_with_stdio(false);
	cin>>n,p[0]=1;
	for(int i=1;i<=n;i++)
	    p[i]=p[i-1]*10%mod;
    for(int i=1;i<=n;i++)
    {
    	if(i==n)cout<<10;
    	else
    	{
    	    ll mid=n-i-1,lr=2;
    	    mid=p[n-i-1]*mid%mod*9*9%mod;
    	    lr=lr*9%mod*p[n-i]%mod ;
    	    cout<<(mid+lr)%mod<<" ";
	   	}
	}

	return 0;
}
原文地址:https://www.cnblogs.com/et3-tsy/p/12577889.html