[指数型生成函数专练]chocolate,红色病毒问题,排列组合,字串数

文章目录

  • T1:chocolate
    • 题目
    • 题解
    • code
  • T2:“红色病毒”问题
    • 题目
    • 题解
    • code
  • T3:排列组合
    • 题目
    • 题解
    • code
  • T4:字串数
    • 题解
    • code

T1:chocolate

题目

已帮大家翻译了,不要去UVA或者luogu上面交,卡精度,
在这里插入图片描述
在2100年,ACM巧克力将成为世界上最受欢迎的食品之一。

“绿色,橙色,棕色,红色…”,彩色糖衣壳也许是ACM巧克力最吸引人的特征。您见过多少种颜色?如今,据说ACM从二十四种颜色的调色板中进行选择来绘制其美味的糖果。

一天,桑迪在一大包ACM巧克力上玩游戏,其中包含五种颜色(绿色,橙色,棕色,红色和黄色)。每次他从包装中取出一个巧克力并将其放在桌子上。如果桌子上有两个颜色相同的巧克力,他会把它们都吃掉。他发现一件很有趣的事情,在大多数情况下,桌上总是有2或3块巧克力。

现在,问题来了,如果包装中有C种颜色的ACM巧克力(颜色均匀分布),那么从包装中取出N颗巧克力后,桌上有M颗巧克力的概率是多少?您可以编写一个程序来解决吗?

输入
此问题的输入文件包含几个测试用例,每行一个
对于每种情况,都有三个非负整数:C(C <= 100),N和M(N,M <= 1000000)
输入由包含单个零的行终止。
输出
输出应该是每行一个实数,显示每种情况的概率,四舍五入到小数点后三位

样本输入
5 100 2

0
样本输出
0.625

题解

首先我们由题意知道如果桌子上有两个颜色相同的巧克力,会被吃掉,所以最后桌子上的巧克力一定是互不相同的,也就是有mmm种不同的糖果留在上面,所以我们可以特判当m>cm>cm>c时,是无解的


m>nm>nm>n时,脑子也想得出来是无解的,一共就nnn颗,你从哪里变出m−nm-nmn


再来每次都是两颗两颗地吃,所以n−mn-mnm也就是吃的颗数一定是偶数,所以也可以特判一下


接下来进入母函数板块
首先是
前面提到过最后剩在桌上的糖果一定都是互不相同的,剩mmm颗,也就是剩mmm种,那么这mmm种糖果拿的数量一定是奇数(最后剩下一个不能吃),剩下的c−mc-mcm种糖果拿的一定是偶数(都被两两吃掉),如果你不能理解就算了 ,且吃的顺序不同算不同的方法加上是等概率,那么总情况就是cnc^ncn
我们考虑最普通的指数型函数
1+x1!+x22!+...+xnn!+...=ex1+\frac{x}{1!}+\frac{x^2}{2!}+...+\frac{x^n}{n!}+...=e^x1+1!x+2!x2+...+n!xn+...=ex
奇数的糖果的话就要想办法消掉x偶数项x^{偶数项}x,偶数的糖果就要想办法消掉x奇数项x^{奇数项}x
奇数项:ex−e−x2\frac{e^x-e^{-x}}{2}2exex
偶数项:ex+e−x2\frac{e^x+e^{-x}}{2}2ex+ex
在这里插入图片描述
不要慌,我们来带一下e−x=1+−x1!+(−x)22!+...+(−x)nn!e^{-x}=1+\frac{-x}{1!}+\frac{(-x)^2}{2!}+...+\frac{(-x)^n}{n!}ex=1+1!x+2!(x)2+...+n!(x)n
以奇数项为例,偶数项相信大家看完后会秒懂
ex−e−x2=(1−1)+(x−(−x))+(x2−(−x)2)+...+(xn−(−x)n)+...2\frac{e^x-e^{-x}}{2}=\frac{(1-1)+(x-(-x))+(x^2-(-x)^2)+...+(x^n-(-x)^n)+...}{2}2exex=2(11)+(x(x))+(x2(x)2)+...+(xn(x)n)+...=2x+2x3+2x5+...2=x+x3+x5+...=\frac{2x+2x^3+2x^5+...}{2}=x+x^3+x^5+...=22x+2x3+2x5+...=x+x3+x5+...
在这里插入图片描述
那么把每一种糖果对应的母函数乘起来,即
(ex−e−x2)m+(ex−e−x2)c−m(\frac{e^x-e^{-x}}{2})^m+(\frac{e^x-e^{-x}}{2})^{c-m}(2exex)m+(2exex)cm
运用二项式展开定理得到,看来我还得去学学这玩意儿
∑i=0m(−1)i∗Cmi∗e(m−i)∗x∗e−ix2m×∑i=0c−mCc−mi∗e(c−m−i)x∗e−ix2c−m\frac{\sum_{i=0}^m\ (-1)^i*C_m^i*e^{(m-i)*x}*e^{-ix}}{2^m}×\frac{\sum_{i=0}^{c-m}C_{c-m}^i*e^{(c-m-i)x}*e^{-ix}}{2^{c-m}}2mi=0m (1)iCmie(mi)xeix×2cmi=0cmCcmie(cmi)xeix
∑i=0m(−1)i∗Cmi∗e(m−2i)x×∑i=0c−mCc−mi∗e(c−m−2i)x2c\frac{\sum_{i=0}^m(-1)^i*C_m^i*e^{(m-2i)x}×\sum_{i=0}^{c-m}C_{c-m}^i*e^{(c-m-2i)x}}{2^c}2ci=0m(1)iCmie(m2i)x×i=0cmCcmie(cm2i)x
我们先把分母放一放,先只看分子,对其进行化简
∑i=0m∑j=0c−m(−1)i∗Cmi∗Cc−mj∗e(c−2i−2j)x\sum_{i=0}^m\sum_{j=0}^{c-m}(-1)^i*C_m^i*C_{c-m}^j*e^{(c-2i-2j)x}i=0mj=0cm(1)iCmiCcmje(c2i2j)x
将这个的封闭式展开,变成
∑k=0∞∑i≤0≤m,j≤0≤c−m(−1)i∗Cmi∗Cc−mj∗(c−2i−2j)kk!∗xk\sum_{k=0}^∞\frac{\sum_{i\le0\le m,j\le0\le c-m}(-1)^i*C_m^i*C_{c-m}^j*{(c-2i-2j)^k}}{k!}*x^kk=0k!i0m,j0cm(1)iCmiCcmj(c2i2j)kxk
但是这里我们不能忘记上面的分母和总情况2c,cn2^c,c^n2c,cn,最后剩下的是哪mmm种,还有一个CcmC_c^mCcm
所以最后第nnn项的系数就是Ccm2c∗cn∗∑i≤0≤m,j≤0≤c−m(−1)i∗Cmi∗Cc−mj∗(c−2i−2j)k\frac{C_c^m}{2^c*c^n}*\sum_{i\le0\le m,j\le0\le c-m}(-1)^i*C_m^i*C_{c-m}^j*{(c-2i-2j)^k}2ccnCcmi0m,j0cm(1)iCmiCcmj(c2i2j)k

code

本来刚开始快速幂和组合数都不想开doubledoubledouble,但是同胞告诉我会炸intintint
在这里插入图片描述

#include <cstdio>
#include<iostream>
using namespace std;
#define MAXN 200
#define _for(i,a,b) for(int i=(a);i<=(b);++i)
double C[MAXN + 5][MAXN + 5];double qkpow ( double x, int y ) {double ans = 1;while ( y ) {if ( y & 1 )ans = ans * x;x *= x;y >>= 1;}return ans;
}void init () {C[0][0] = 1;for ( int i = 1;i <= MAXN;i ++ ) {C[i][0] = 1;for ( int j = 1;j <= i;j ++ )C[i][j] = C[i - 1][j - 1] + C[i - 1][j];}
}int main() {int n, c, m;init();while ( scanf ( "%d", &c ) && c != 0 ) {scanf ( "%d %d", &n, &m );if ( m > c || m > n || ( n - m ) & 1 ) {printf ( "0.000\n" );continue;}double result = 0;for ( int i = 0;i <= m;i ++ )for ( int j = 0;j <= c - m;j ++ )result += ( i & 1 ? -1 : 1 ) * C[m][i] * C[c - m][j] * qkpow ( c - ( i << 1 ) - ( j << 1 ), n );result *= C[c][m] / qkpow ( 2, c ) / qkpow ( c, n );printf ( "%.3f\n", result );}return 0;
}

T2:“红色病毒”问题

题目

医学界发现的新病毒因其蔓延速度和Internet上传播的"红色病毒"不相上下,被称为"红色病毒",经研究发现,该病毒及其变种的DNA的一条单链中,胞嘧啶,腺嘧啶均是成对出现的。
现在有一长度为N的字符串,满足一下条件:
(1) 字符串仅由A,B,C,D四个字母组成;
(2) A出现偶数次(也可以不出现);
(3) C出现偶数次(也可以不出现);
计算满足条件的字符串个数.
当N=2时,所有满足条件的字符串有如下6个:BB,BD,DB,DD,AA,CC.
由于这个数据肯能非常庞大,你只要给出最后两位数字即可.

Input
每组输入的第一行是一个整数T,表示测试实例的个数,下面是T行数据,每行一个整数N(1<=N<2^64),当T=0时结束.
Output
对于每个测试实例,输出字符串个数的最后两位,每组输出后跟一个空行.

Sample Input
4
1
4
20
11
3
14
24
6
0
Sample Output
Case 1: 2
Case 2: 72
Case 3: 32
Case 4: 0

Case 1: 56
Case 2: 72
Case 3: 56

题解

对于B,DB,DB,D是没有限制的,那么它们的生成函数则是普通型
1+x1!+x22!+x33!......=ex1+\frac{x}{1!}+\frac{x^2}{2!}+\frac{x^3}{3!}......=e^x1+1!x+2!x2+3!x3......=ex
A,CA,CA,C的要求是必须出现偶数次,当然不出现也行,所以他们的生成函数就只能保留x偶数次x^{偶数次}x
1+x22!+x44!+......=ex+e−x21+\frac{x^2}{2!}+\frac{x^4}{4!}+......=\frac{e^x+e^{-x}}{2}1+2!x2+4!x4+......=2ex+ex
所以先写T1的题解不是没有逻辑的
将四个的生成函数闭形式相乘来化简试试
(ex)2∗(ex+e−x2)2=e2x∗e2x+e−2x+24=e4x+2e2x+14(e^x)^2*(\frac{e^x+e^{-x}}{2})^2=e^{2x}*\frac{e^{2x}+e^{-2x}+2}{4}=\frac{e^{4x}+2e^{2x}+1}{4}(ex)2(2ex+ex)2=e2x4e2x+e2x+2=4e4x+2e2x+1
然后还原成母函数
e4x=1+4x1!+(4x)22!+...(4x)nn!+....e^{4x}=1+\frac{4x}{1!}+\frac{(4x)^2}{2!}+...\frac{(4x)^n}{n!}+....e4x=1+1!4x+2!(4x)2+...n!(4x)n+....
2e2x=2(1+2x1!+(2x)22!+...+(2x)nn!+...)=2+4x1!+8x2!+...+2(2x)nn!+...2e^{2x}=2(1+\frac{2x}{1!}+\frac{(2x)^2}{2!}+...+\frac{(2x)^n}{n!}+...)=2+\frac{4x}{1!}+\frac{8x}{2!}+...+\frac{2(2x)^n}{n!}+...2e2x=2(1+1!2x+2!(2x)2+...+n!(2x)n+...)=2+1!4x+2!8x+...+n!2(2x)n+...
所以
e4x+2e2x+14=14∗(4+4x+2∗2x1!+(4x)2+2∗(2x)22!+...+(4x)n+2(2n)nn!)+...\frac{e^{4x}+2e^{2x}+1}{4}=\frac{1}{4}*(4+\frac{4x+2*2x}{1!}+\frac{(4x)^2+2*(2x)^2}{2!}+...+\frac{(4x)^n+2(2n)^n}{n!})+...4e4x+2e2x+1=41(4+1!4x+22x+2!(4x)2+2(2x)2+...+n!(4x)n+2(2n)n)+...
=14∗(4+(4+2∗2)x1!+(42+2∗22)x22!+...(4n+2∗2n)xnn!+...)=\frac{1}{4}*(4+(4+2*2)\frac{x}{1!}+(4^2+2*2^2)\frac{x^2}{2!}+...(4^n+2*2^n)\frac{x^n}{n!}+...)=41(4+(4+22)1!x+(42+222)2!x2+...(4n+22n)n!xn+...)
常数项是第零项,把14\frac{1}{4}41乘进去,所以第nnn项的系数应该是
14∗(4n+2∗2n)=4n−1+2n−1\frac{1}{4}*(4^{n}+2*2^{n})=4^{n-1}+2^{n-1}41(4n+22n)=4n1+2n1

code

#include <cstdio>
#include <iostream>
using namespace std;
#define mod 100
#define LL unsigned long long
LL n;LL qkpow ( LL x, LL y ) {LL ans = 1;while ( y ) {if ( y & 1 )ans = ans * x % mod;x = x * x % mod;y >>= 1;}return ans;
}int main() {int T; while ( scanf ( "%d", &T ) && T != 0 ) {int Case = 0;while ( T -- ) {cin >> n;printf ( "Case %d: %lld\n", ++ Case, ( qkpow ( 2, n - 1 ) + qkpow ( 4, n - 1 ) ) % mod );	}printf ( "\n" ); }return 0;
}

T3:排列组合

题目

有n种物品,并且知道每种物品的数量。要求从中选出m件物品的排列数。例如有两种物品A,B,并且数量都是1,从中选2件物品,则排列有"AB","BA"两种。
Input
每组输入数据有两行,第一行是二个数n,m(1<=m,n<=10),表示物品数,第二行有n个数,分别表示这n件物品的数量。
Output
对应每组数据输出排列数。(任何运算不会超出2^31的范围)
Sample Input
2 2
1 1
Sample Output
2

题解

我们对于每一种物品数,都可以写出其生成函数
i∈[1,n],1+x1!+x22!+x33!+...+xnum[i]num[i]!i∈[1,n],1+\frac{x}{1!}+\frac{x^2}{2!}+\frac{x^3}{3!}+...+\frac{x^{num[i]}}{num[i]!}i[1,n]1+1!x+2!x2+3!x3+...+num[i]!xnum[i]
dp[j]dp[j]dp[j]表示选了jjj个物品的排列数,那么对于第iii种物品而言,我们枚举该种物品选的个数是k∈[1,num[i]]k∈[1,num[i]]k[1,num[i]],那么排列数就要加上kkk个物品的排列数,但是因为它们是一种,顺序没有用,所以要除掉k!k!k!
于是可以写出转移方程式dp[j+k]=dp[j+k]+dp′[j]/k!dp[j+k]=dp[j+k]+dp'[j]/k!dp[j+k]=dp[j+k]+dp[j]/k!
在这里插入图片描述

code

这就像是一种模板了。。

#include <cstdio>
#include <cstring>
#define MAXN 15
int n, m;
int fac[MAXN], num[MAXN];
double dp1[MAXN], dp2[MAXN];void init () {fac[0] = fac[1] = 1;for ( int i = 2;i < MAXN;i ++ )fac[i] = i * fac[i - 1]; 
}int main() {init();while ( ~ scanf ( "%d %d", &n, &m ) ) {for ( int i = 1;i <= n;i ++ )scanf ( "%d", &num[i] );memset ( dp1, 0, sizeof ( dp1 ) );memset ( dp2, 0, sizeof ( dp2 ) );for ( int i = 0;i <= num[1];i ++ )dp2[i] = 1.0 / fac[i];for ( int i = 2;i <= n;i ++ ) {for ( int j = 0;j <= m;j ++ )for ( int k = 0;k <= num[i];k ++ )if ( j + k > m )break;elsedp1[j + k] += dp2[j] / fac[k];for ( int j = 0;j <= m;j ++ ) {dp2[j] = dp1[j];dp1[j] = 0;}}printf ( "%.0lf\n", dp2[m] * fac[m] );}return 0;
}

T4:字串数

一个A和两个B一共可以组成三种字符串:“ABB”,“BAB”,“BBA”.
给定若干字母和它们相应的个数,计算一共可以组成多少个不同的字符串.
Input
每组测试数据分两行,第一行为n(1<=n<=26),表示不同字母的个数,第二行为n个数A1,A2,…,An(1<=Ai<=12),表示每种字母的个数.测试数据以n=0为结束.
Output
对于每一组测试数据,输出一个m,表示一共有多少种字符串.
Sample Input
2
1 2
3
2 2 2
0
Sample Output
3
90

题解

这道题跟上面第三题有点相似,我们可以先看对于nnn个字符,一共可以拼凑出n!n!n!个字符串
但是我们知道如果有两个AAA那么A0A1A_0A_1A0A1A1A0A_1A_0A1A0我们是看不出来的,那么就应该排除掉它们的影响
所以这道题的公式就是n!A0!A1!...An!\frac{n!}{A_0!A_1!...A_n!}A0!A1!...An!n!
其实这道题的本质是卡我们的高精,哎~具体的代码理解在codecodecode里面有详解,你一定会看得懂的

code

#include <cstdio>
#include <cstring>
#define MAXN 30
#define MAX 1000
int n, len;
int A[MAXN];
int res[MAX];void Res_bit () { for ( int i = 0;i < len;i ++ )if ( res[i] > 9 ) {if ( i == len - 1 )len ++;res[i + 1] += res[i] / 10;res[i] %= 10;}
}void Fac ( int x ) {res[0] = x;len = 1;Res_bit();while ( x > 2 ) {
//1是不必要乘的,0是不能乘的
//这个条件的下限就是x=3,走进去就变成了2,当x=2时就不必要了 x --;
//大数乘法其实跟竖式乘法是一样的
//我们算A*B是用B的个位依次去乘A的每一位加上B的十位去乘A的每一位的结果...以此类推for ( int i = 0;i < len;i ++ )res[i] *= x;Res_bit ();//每一次都要进行大数进位 }
}void div ( int x ) {
//除法也可以用竖式来理解,从最高位开始除
//除不动就往下一位(商0),除得动就把余数传给下一位 for ( int i = len - 1;i >= 0;i -- )if ( res[i] < x ) {
//有的人可能会疑问感觉每次除法都只少了一位
//其实不然,在i循环减小时,如果是从最高位开始缩位
//len其实是同步减小了的,上面的进位同理 if ( i == len - 1 )len --;res[i - 1] += res[i] * 10;res[i] = 0;}else {if ( i > 0 )res[i - 1] += ( res[i] % x ) * 10;res[i] = res[i] / x;}
}int main() {while ( scanf ( "%d", &n ) && n ) {int tot = 0;for ( int i = 1;i <= n;i ++ ) {scanf ( "%d", &A[i] );tot += A[i];}Fac ( tot );for ( int i = 1;i <= n;i ++ )for ( int j = 2;j <= A[i];j ++ )div ( j );for ( int i = len - 1;i >= 0;i -- )printf ( "%d", res[i] );printf ( "\n" );memset ( res, 0, sizeof ( res ) );}return 0;
} 

在这里插入图片描述
我好想写得顺序出了问题,我是fu应该先写生成函数的学习博客,然后再写题解
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务之:从零搭建ocelot网关和consul集群

介绍微服务中有关键的几项技术&#xff0c;其中网关和服务服务发现&#xff0c;服务注册相辅相成。首先解释几个本次教程中需要的术语网关 Gateway&#xff08;API GW / API 网关&#xff09;&#xff0c;顾名思义&#xff0c;是企业 IT 在系统边界上提供给外部访问内部接口服务…

使用 WRK 压力测试工具对 ASP.NET Core 的接口进行压力测试

0. 简要介绍WRK 是一款轻量且易用的 HTTP 压力测试工具&#xff0c;通过该工具我们可以方便地对我们所开发的 WebAPI 项目进行压力测试&#xff0c;并且针对测试的情况返回结果。PS&#xff1a;Wrk 并不能针对测试的结果生成动态的图表&#xff0c;如果有这种需要&#xff0c;可…

[TJOI2019]唱、跳、rap和篮球(指数型生成函数+NTT+卷积)

文章目录题目题解code1&#xff08;NTT&#xff09;code2&#xff08;EGF卷积&#xff09;题目 大中锋的学院要组织学生参观博物馆&#xff0c;要求学生们在博物馆中排成一队进行参观。他的同学可以分为四类&#xff1a;一部分最喜欢唱、一部分最喜欢跳、一部分最喜欢rap&…

Sum of Paths CodeForces - 1467D

Sum of Paths CodeForces - 1467D Tagscombinatorics dp math *2200 题意&#xff1a; 定义一条好的路径&#xff0c;当且仅当从任意点出发之后恰好经过了 k 次移动&#xff0c;定义这条路径的权值为经过点权值的总和(可重)&#xff0c;进行 q 次修改&#xff0c;每次将ak 改…

[矩阵乘法/快速幂专题]Arc of Dream,Recursive sequence,233 Matrix,Training little cats

矩阵快速幂习题复习矩阵乘法及快速幂模板乘法模板快速幂模板T1&#xff1a;Arc of Dream题目题解codeT2&#xff1a;Recursive sequence题目题解codeT3&#xff1a;233 Matrix题目题解codeT4&#xff1a;Training little cats题目题解code做题的时候后悔没有保存过模板&#xf…

你准备好了在云中工作吗?

前几天写了一篇文章 《云时代的.NET》&#xff0c;今天继续这个话题聊下云时代的技能。无服务器计算&#xff0c;容器化&#xff0c;云原生应用&#xff0c;DevOps&#xff0c;人工智能&#xff0c;机器学习以及混合云和多云解决方案等IT趋势正在成为主流或“新常态”。所有大小…

最长公共上升子序列(LCIS)

题意&#xff1a; 求最长公共上升子序列 题解&#xff1a; 最长公共上升子序列 最长公共子序列&#xff08;LCS&#xff09;与最长上升子序列&#xff08;LIS&#xff09; LCS核心代码&#xff1a; for(int i1;i<n;i){for(int j1;j<m;j){if(a[i]b[j])dp[i][j]max(dp[…

[高斯消元及理论]线性方程组整数/浮点数,模线性方程组,异或方程组模板

文章目录理论线性方程组整数类型解线性方程组浮点类型解模线性方程组异或方程组高斯约旦消元约旦消元无解无穷解唯一解理论 高斯消元法&#xff0c;是线性代数规划中的一个算法&#xff0c;可用来为线性方程组求解。但其算法十分复杂&#xff0c;不常用于加减消元法&#xff0c…

eShopOnContainers 知多少[7]:Basket microservice

引言Basket microservice&#xff08;购物车微服务&#xff09;主要用于处理购物车的业务逻辑&#xff0c;包括&#xff1a;购物车商品的CRUD订阅商品价格更新事件&#xff0c;进行购物车商品同步处理购物车结算事件发布订阅订单成功创建事件&#xff0c;进行购物车的清空操作架…

后缀数组 SA

后缀数组 SA 后缀树组(SA&#xff0c;suffix array)&#xff0c;用于处理字符串子串形成的结构。 处理子串的结构主要方式有&#xff1a;后缀数组 SA&#xff0c;后缀自动机 SAM&#xff0c;后缀树 ST。 后缀树和后缀自动机暂时决定咕咕咕&#xff0c;以后学习可以参考ix35 的字…

微软热门开源项目及代码库地址

点击蓝字关注我这几年来&#xff0c;微软在开源与社区方向的努力与成就是全世界有目共睹的。微软的开源项目超过2000多个&#xff0c;挑了一些比较火热的给大家整理了一下。欢迎补充~Visual Studio Code非常流行的跨平台代码编辑器&#xff0c;提供全面的编辑和调试支持、可扩展…

[树链剖分][SDOI 2011]染色,Housewife Wind

文章目录T1&#xff1a;Housewife Wind题目题解codeT2&#xff1a;染色题目题解code今天选择写这篇博客主要是为了告诉大家一个道理&#xff0c;数组比vectorvectorvector快太多了&#xff0c;我这两道题第一次都因为vectorvectorvector&#xff0c;TTT到飞起 T1&#xff1a;…

ASP.NET Core 网站运行时修改设置如何自动生效

点击蓝字关注我在ASP.NET Core中&#xff0c;如果修改了appsettings.json中的设置&#xff0c;那么默认情况下就得重启网站才能生效。有没有办法在修改设置后自动刷新并应用呢&#xff1f;背景首先&#xff0c;我们看看默认模板建出来的 ASP.NET Core 网站&#xff0c;配置文件…

1022. 宠物小精灵之收服

1022. 宠物小精灵之收服 题意&#xff1a; 现在有n个胶囊&#xff0c;m个生命值&#xff0c;k个怪物&#xff0c;每个怪物需要a[i]个胶囊&#xff0c;且会造成b[i]个伤害后才能捕获&#xff0c;问在活着的前提下&#xff0c;最多捕获多少怪物&#xff0c;在怪物最多的情况下剩…

【周末狂欢赛6】[AT1219]历史研究(回滚莫队),大魔法师(矩阵+线段树),单峰排列

文章目录T1&#xff1a;单峰排列题目题解codeT2&#xff1a;历史研究题目题解codeT3&#xff1a;大魔法师题目题解code我可能这辈子都更不出来狂欢赛5了&#xff0c;先咕咕 T1&#xff1a;单峰排列 题目 一个n的全排列A[i]是单峰的&#xff0c;当且仅当存在某个x使得A[1]<…

YBTOJ:圈套问题(分治法、鸽笼原理)

文章目录题目描述数据范围解析代码图片转载自&#xff1a; https://blog.csdn.net/weixin_43346722/article/details/118435430题目描述 平面上有 n个点&#xff0c;用n个大小相同的圆分别将一个点作为圆心&#xff0c;同时满足圆圈不相交&#xff0c;求圆的最大半径。 数据范…

ASP.NET Core 实战:使用 NLog 将日志信息记录到 MongoDB

一、前言在项目开发中&#xff0c;日志系统是系统的一个重要组成模块&#xff0c;通过在程序中记录运行日志、错误日志&#xff0c;可以让我们对于系统的运行情况做到很好的掌控。同时&#xff0c;收集日志不仅仅可以用于诊断排查错误&#xff0c;由于日志同样也是大量的数据&a…

[学习笔记] 伸展树splay详解+全套模板+例题[Luogu P3369 【模板】普通平衡树]

文章目录引入概念全套模板变量声明updaterotate旋转splay操作insert插入delete删除查找x的位置查找第k大前驱/后继极小值-inf和极大值inf的作用例题&#xff1a;P3369 【模板】普通平衡树题目code声明一下&#xff0c;许多代码的注解都在模板代码里面写了的&#xff0c;所以正文…

手写AspNetCore 认证授权代码

在普通的MVC项目中 我们普遍的使用Cookie来作为认证授权方式&#xff0c;使用简单。登录成功后将用户信息写入Cookie&#xff1b;但当我们做WebApi的时候显然Cookie这种方式就有点不适用了。在dotnet core 中 WebApi中目前比较流行的认证授权方式是Jwt (Json Web Token) 技术。…

YBTOJ:采矿战略(线段树维护dp、树链剖分)

文章目录题目描述解析代码题目描述 所谓线段树维护dp&#xff0c;就是在线段树上维护dp &#xff08;逃&#xff09; 解析 把树剖一下后就变成了区间问题 考虑建一棵线段树&#xff0c;每一个结点都是一个背包 这样就能区间查询&#xff0c;也能带修了 这种做法复杂度其实并不…