首页 > 其他分享 >20231208练习

20231208练习

时间:2023-12-08 12:55:06浏览次数:26  
标签:frac ll 练习 times 有个 老和尚 20231208 First

【2022.12.30提高组模拟】依依寺(yiyi)

Problem Description

从前有个寺庙,名为依依寺。寺庙因《诗经.小雅》中的“昔我往矣,杨柳依依。
今我来思,雨雪霏霏。“而得名。
庙里有个老和尚和小和尚。老和尚叫章丘样,小和尚叫章扬扬。老和尚说“从前有个寺庙,名为依依寺。庙里有个老和尚和小和尚。老和尚叫章丘样,小和尚叫章扬扬……”
有一天,老何尚在拨算盘。他脑海中蹦出了这么一道题:
有n = a + b + c个数,其中有a个0,b个1,c 个2。我章丘样和你章扬扬轮流取数,我先手。设累计取出来的数总和为 s,若s 是3的倍数,那么这一方输。如果数字取完了游戏还没结束,则没有数可以取的这一方输。
由于a, b, c 可能很大,两和尚无法手玩得到,所以想让你编程来帮帮他们。

Input

第一行,输入数据组数T,表示有T 局游戏。
接下来T行,每行输入a, b, c表示老和尚和小和尚的一局游戏。

Output

输出共 T 行,若老和尚(即先手)赢,输出 First,否则输出 Second。

Sample Input Copy

3
0 0 0
1 0 0
1 1 1

Sample Output Copy

Second
Second
Second

【样例 说明】
对于a = 0, b = 0, c = 0,先手无法操作,所以先手输;
对于a = 1, b = 0, c = 0,先手只能取0 ,但是这样s = 0为3的倍数,所以先手输;
对于a = 1, b = 1, c = 1 ,若先手取1,则后手取0,先手只能取2 ;若先手取 2,
则后手取0,先手也只能取1。因此先手怎样都输。

Data Constraint

对于所有数据,数据组数均满足 1 ≤ T ≤ 10^5。
对于 30% 的数据,1 ≤ a, b, c ≤ 10;
对于 60% 的数据,1 ≤ a, b, c ≤ 100;
对于 80% 的数据,1 ≤ a, b, c ≤ 10^9;
对于 100% 的数据,1 ≤ a, b, c ≤ 10^18。

除去0,发现取的顺序一定是1,1,2,1,2……或2,2,1,2,1……比谁的多

0的作用是逆转先后手顺序,只在乎奇偶性。

然后代码就出来了:

#include <cstdio>
#define ll long long
ll T, a, b, c;
int main() {
	freopen("yiyi.in", "r", stdin);
	freopen("yiyi.out", "w", stdout);
	scanf("%lld", &T);
	while(T--) {
		scanf("%lld %lld %lld", &a, &b, &c);
		a %= 2;
		// 先取2b
		// 1:1:2:1:2:1:2:1:2:1
		if(b >= 2) {
			if(b-2 < c) {
				if(!a) {
					printf("First\n");
					continue;
				}
			} else {
				if(a) {
					printf("First\n");
					continue;
				}
			}
		} else if(b == 1) {
			if(!a) {
				printf("First\n");
				continue;
			}
		}
		
		// 先取2c
		// 2:2:1:2:1:2:1:2:1
		if(c >= 2) {
			if(c-2 < b) {
				if(!a) {
					printf("First\n");
					continue;
				}
			} else {
				if(a) {
					printf("First\n");
					continue;
				}
			}
		} else if(c == 1) {
			if(!a) {
				printf("First\n");
				continue;
			}
		}
		
		printf("Second\n");
	}
}

【2022.12.30提高组模拟】武义寺(wuyi)

Problem Description

从前有个寺庙,名为武义寺。庙里有个老和尚和小和尚。老和尚叫扶弱给,小和尚叫扶弱呱。老和尚说“从前有个寺庙,名为武义寺。庙里有个老和尚和小和尚。
老和尚叫扶弱给,小和尚叫扶弱呱……”
有一天,扶弱给在潜心研究排列。他在脑中随机一个排列的时候,脑海里冒出了
这样一个问题:
对于一个排列p = {1,2, . . . , n} ,记val(p)等于最小的i 满足i > ai,如不存在则
val(p) = n + 1。
可是val(p)的期望值是多少呢?显然,扶弱给没学过编程,需要你来帮帮他。

Input

输入一个数n。

Output

输出val(p)的期望值,答案对998244353取模。

Sample Input Copy

2

Sample Output Copy

499122179

【样例 1 说明】
对于排列p = [1,2],val(p) = 3;对于排列p = [2,1],val(p) = 2。因此期望值为5/2 。

Data Constraint

对于 30% 的数据,1 ≤ n ≤ 5 ;
对于 50% 的数据,1 ≤ n ≤ 20 ;
对于 80% 的数据,1 ≤ n ≤ 10^5 ;
对于 100% 的数据,1 ≤ n ≤ 10^6。

枚举 \(\text{val}(p)=i\),说明 \(1\sim (i-1)\) 都有 \(a_i\ge i\),第 \(i\) 位有 \(i > a_i\),后面随便排。

首先化简题目,设 \(n=6,k=4\),第一位能选1到n,第二位能选2到n,第三位能选3到n……第k位能选k到n。

先考虑约束大的第k位,有 \(n-k+1\) 种选择,选择一种后发现第k-1位方案也少了一种,所以也是 \(n-k+1\) 种选择,最终有 \((n-k+1)^k\)。

枚举第 \(a_i=j\),然后有 \(1\sim j\) 为的方案数都减一,\((j+1)\sim (i-1)\) 不变。

\[\sum_{j=1}^{i-1} (n-i+2)^{i-j-1}\times(n-i+1)^j \]

考虑化简,设 \(a=n-i+1\),有:

\[\begin{aligned} \sum_{j=1}^{i-1} (a+1)^{i-j-1}\times a^j &= \sum_{j=1}^{i-1} (a+1)^{i-1}\times(a+1)^{-j}\times a^j \\ &= (a+1)^{i-1}\times\sum_{j=1}^{i-1} (\frac{a}{a+1})^j \\ & \text{设}u=\frac{a}{a+1}\\ &= (a+1)^{i-1}\times\sum_{j=1}^{i-1} u^j \\ &= (a+1)^{i-1}\times \frac{u^{i}-u}{u-1} \\ &= (a+1)^{i-1}\times \frac{(\frac{a}{a+1})^{i}-\frac{a}{a+1}}{\frac{a}{a+1}-1}\\ &= (a+1)^{i-1}\times \frac{(\frac{a}{a+1})^{i}-\frac{a}{a+1}}{\frac{a}{a+1}-\frac{a+1}{a+1}}\\ &= (a+1)^{i-1}\times \frac{(\frac{a}{a+1})^{i}-\frac{a}{a+1}}{\frac{-1}{a+1}}\\ &= (a+1)^{i-1}\times ((\frac{a}{a+1})^{i}-\frac{a}{a+1})\times\frac{a+1}{-1}\\ &= (a+1)^{i-1}\times (\frac{a^{i}}{(a+1)^{i}}-\frac{a(a+1)^{i-1}}{(a+1)^{i}})\times\frac{a+1}{-1}\\ &= (a+1)^{i-1}\times (\frac{a^{i}-a(a+1)^{i-1}}{(a+1)^{i}})\times\frac{a+1}{-1}\\ &= (a+1)^{i}\times (\frac{a^{i}-a(a+1)^{i-1}}{(a+1)^{i}})\times(-1)\\ &= (a^{i}-a(a+1)^{i-1})\times(-1)\\ &= a(a+1)^{i-1}-a^{i}\\ \end{aligned} \]

然后有后面的 \(i+1\) 到 \(n\),全排列即可。

代码:

#include <cstdio>
#define P 998244353
#define ll long long
#define N 1000010
ll n;
ll invn;
ll fact[N];
ll b[N];
ll ans;
ll qpow(ll x, ll y) {
	if(y == 0) return 1;
	if(y % 2 == 1) return x * qpow(x, y-1) % P;
	ll tmp = qpow(x, y/2);
	return tmp * tmp % P;
}
inline ll fun(ll x) {
	return (x%P+P)%P;
}

int main() {
	freopen("wuyi.in", "r", stdin);
	freopen("wuyi.out", "w", stdout);
	scanf("%lld", &n);
	fact[0] = 1;
	for(ll i = 1; i <= n; i++) (fact[i] = fact[i-1] * i) %= P;
	for(ll i = 1; i <= n; i++) {
		ll a = n-i+1;
		(ans += fun(a * qpow(a+1, i-1) % P - qpow(a, i)) * fact[n-i] % P * i) %= P;
	}
	// 易得val(p)=n+1只有一种情况 
	(ans += n+1) %= P;
	// 总共有n!种情况,求期望 
	(ans *= qpow(fact[n], P-2)) %= P;
	
	printf("%lld", ans);
}

标签:frac,ll,练习,times,有个,老和尚,20231208,First
From: https://www.cnblogs.com/znpdco/p/17884915.html

相关文章

  • Java File类详解(下)练习部分
    练习第一题需求:在当前模块下的aaa文件夹中创建一个a.txt文件importjava.io.File;importjava.io.IOException;publicclassFileExer01{publicstaticvoidmain(String[]args)throwsIOException{Filef1=newFile("AllInOne\\aaa");f1.mkdirs();Filesrc=ne......
  • 天池AI练习生计划 - 第二期AI数学基础入门与实践,火热进行中!通关赢取双重礼品!
    机器视觉学术研究与产品研发专家雷明,带领您详细学习人工智能领域需要用到的数据知识点,从学习者蜕变为AI新星!轻松来闯关,即可领取双重礼品~实训培训证书:通关两个关卡即可领取阿里云定制长袖T恤:通关全部关卡即可领取活动地址:https://tianchi.aliyun.com/specials/promotion/math......
  • 天池AI练习生计划 - 第二期AI数学基础入门与实践,火热进行中!通关赢取双重礼品!
    机器视觉学术研究与产品研发专家雷明,带领您详细学习人工智能领域需要用到的数据知识点,从学习者蜕变为AI新星!轻松来闯关,即可领取双重礼品~实训培训证书:通关两个关卡即可领取阿里云定制长袖T恤:通关全部关卡即可领取活动地址:https://tianchi.aliyun.com/specials/promotion/math......
  • 计算小练习
    求\(\displaystyle\int_0^b\int_0^d\sqrt{x^2+y^2}\text{d}x\text{d}y\)。\(\newcommand\d[1]{\text{d}#1}\)参考。\[\begin{aligned}&\displaystyle\int_0^b\int_0^d\sqrt{x^2+y^2}\d{x}\d{y}\\=&\int_0^b\int_{0}^{\frac{d......
  • 每日一练 | 华为认证真题练习Day144
    1、DHCPv6无状态自动分配方案中,主机不需要发送任何DHCPv6报文。A.对B.错2、IPv4最后一个选项字段(option)是可变长的可选信息,该字段最大长度为?A.40BB.20BC.60BD.10B3、关于ARP协议的作用和报文封装,描述正确的是()。A.通过ARP协议可以获取目的端的MAC地址和UUID的地址B.ARP协议......
  • 12 6 刻意练习阅读笔记
    第3章心理表征偶然的盲棋大师俄罗斯国际象棋特级大师亚历山大-阿廖欣,与当地26位优秀的国际象棋棋手盲棋对战,选手不需要盲下。赢了17盘,输了5盘,和了4盘。上学的时候喜欢下棋,不允许将棋盘带到学校,只能在课堂上通过草图进行模拟。慢慢的他发现自己可以不用草图,完全凭借记忆记住整......
  • python练习
    1将数字汉字符号一起打印2大小写转换首字母大写3使用数学函数4注释5对字符串求长度6通过索引获取单个字符7布尔类型8空值类型9查找所属类型type10列表将数字汉字符号一起打印name="璃月"date="12月5号"message=f'{name}您好,今天是:{date}'print(message)或者可以......
  • PTA-2023第十一次练习题目讲解
    PTA-2023第十一次练习题目6-17实验7_9_简单排序法一:冒泡排序上课学过好多好多次,讲解略过,代码有注释。voidbubbleSort(intdata[],intelementCount){for(inti=0;i<elementCount-1;i++)//第一层循环,控制找最大值的次数{for(intj=0;j<elementCount-......
  • 2023.12.4 近期练习
    CF1845E这种\(01\)串的描述方式一般是提出\(1\)的位置去讨论,设原串\(1\)出现位置是\(p_1,...,p_m\).考虑最后生成的串的性质,描述其\(1\)的位置,\(q_1,...q_m\)。那么至少移动步数为\(\sum|p_i-q_i|\),因为\(1\)的位置是相对不变的。考虑一个一个\(1\)往里填,设\(......
  • 人生叙事练习
    时常进行人生叙事练习,自己来描述自己的故事,美好的、有情景感的画面,让自己知道什么是重要的,什么是自己的终极目标,了解真正的自己,让自己不困惑1、自己在60岁的状态年收入健康人际关系(单打独斗的人都会被淘汰)时间的自由程度居住地点2、完美的一天3、如果自己即将死去,那么什......