思路:
为了计算第 iii 个玩家的获胜概率,我们需要考虑所有可能的情况,即所有玩家轮流投掷直到某人获胜。给定 nnn 个玩家,每个玩家投掷成功的概率为 ppp,失败的概率为 1−p1-p1−p。
第 iii 个玩家的获胜方式可以分为以下几种情况:
在第一轮中,第 iii 个玩家直接获胜,这发生在前 i−1i-1i−1 个玩家都失败了之后,所以概率为 (1−p)i−1⋅p(1-p)^{i-1} \cdot p(1−p)i−1⋅p。
第 iii 个玩家在第二轮获胜,这意味着所有 nnn 个玩家在第一轮都失败了,然后前 i−1i-1i−1 个玩家在第二轮也失败了,第 iii 个玩家在第二轮获胜,所以概率为 (1−p)n⋅(1−p)i−1⋅p=(1−p)n+i−1⋅p(1-p)^{n} \cdot (1-p)^{i-1} \cdot p = (1-p)^{n+i-1} \cdot p(1−p)n⋅(1−p)i−1⋅p=(1−p)n+i−1⋅p。
同理,第i个玩家在第三轮获胜的概率为 (1−p)2n+i−1⋅p(1-p)^{2n+i-1} \cdot p(1−p)2n+i−1⋅p。
这个模 ...
题目传送门。
题意:
完整题目:
UVA10761 Broken Keyboard
题目描述
某些键盘上的字母键坏了,但是所有非字母键都功能正常。尽管如此,我们还是需要输入一段文本,并希望知道可以完整输入多少行文本。此外,在我们仍然能够输出相同的文本行的基础上,我们还想知道哪些其他的字母键也可以坏掉。
输入格式
程序应该从名为 keyboard.dat 的文件中读取输入。这个题目有但是不需要。 输入文件包含多个案例。每个案例的第一行列出了一系列坏掉的字母键。接下来的几行是希望输入的文本。此文本以以下行结束:
END
该行也应被处理。输入的任何一行都不会超过80个字符。当输入的第一个单词为 finish 时,表示输入终止,此案例不应被处理。
输出格式
输出应格式化为一个表格,参见样例输出。表头占据4行,如下所示,另有一行用于标记字符位置;这行不是表头的一部分。
12345678901234567890123456789012345678901234567890123456789+----------+----------------+--------------------- ...
洛谷题解
未读
思路:
lenlenlen 为 sss 的长度。
通过 KMP 算法,找到最长公共前后缀长度,对于字符串 sss,它的最长公共前后缀长度是 KMP 算法使用数组 nexnexnex 的最后一个值 nexlen−1nex_{len-1}nexlen−1。
之后构造字符串 ttt。
如果最长公共前后缀长度为 000,那么 ttt 只能是两个 sss 加在一起,代码实现为 t=s+s。
否则 ttt 就是 sss 加上 sss 中下标为最长公共前后缀长度的字符及其之后的所有字符,代码实现为 t=s+s.substr(nex[len-1])。
代码:
#include<bits/stdc++.h>using namespace std;#define LL long long#define itn int#define ull unsigned long longstring s;int nex[1000005];int main(){ cin>>s; int len=s.size(); for(int i=1,j=0;i<len;i++) ...
洛谷题解
未读
思路:
数学题。
当 xxx 等于 yyy 时,从 xxx 到 yyy 最少只要 000 步。
当 xxx 不等于 yyy 时,从 xxx 到 yyy 最少需要的步数要分两种情况考虑:
直接过去,步数为 lcm(x,y)\operatorname{lcm}(x,y)lcm(x,y)。
通过最大公因数过去,步数为 lcm(x,gcd(x,y))+lcm(y,gcd(x,y))\operatorname{lcm}(x,\gcd(x,y))+\operatorname{lcm}(y,\gcd(x,y))lcm(x,gcd(x,y))+lcm(y,gcd(x,y))。
答案为两种情况里的最小值。
考虑到 long long 范围不够,所以用 __int128。
代码:
#include<bits/stdc++.h>using namespace std;#define itn int#define ull unsigned long long__int128 x,y;__int128 read(){ bool f=1;__int128 x=0;c ...
放的代码是赛时代码。
CSP-J:
总分:280。
T1:AC,map。
#include<bits/stdc++.h>using namespace std;#define LL long long#define itn int// unordered// priority// operatorint n;unordered_map<string,int>mp;string xy[]={ "DA","CA","HA","SA", "D2","C2","H2","S2", "D3","C3","H3","S3", "D4","C4","H4","S4", "D5","C5","H5&q ...
题目翻译:
点击查看。
思路:
使用动态规划,计算在给定的字母表上,长度为 nnn 的所有可能单词中,“紧致”单词的数量。
然后,通过这个数量除以所有可能的单词数量来计算出“紧致”单词的百分百。
对于 dpi,jdp_{i,j}dpi,j,其中 iii 表示长度为 iii,jjj 表示以 jjj 结尾,当长度为 111 时,每个数字 jjj 都是一个“紧致”单词,因此我们可以初始化所有 dp1,jdp_{1,j}dp1,j 为 111,其中 0≤j≤k0 \le j \le k0≤j≤k。
对于 iii 不等于 111 时的 dpi,jdp_{i,j}dpi,j 等于什么呢?这需要分类讨论。
对于长度为 iii 且以数字 jjj 结尾的单词,它可以从以下几种情况转移而来:
长度为 i−1i-1i−1 且以数字 jjj 结尾的单词。
长度为 i−1i-1i−1 且以数字 j−1j-1j−1 结尾的单词,注意 jjj 需要大于 000。
长度为 i−1i-1i−1 且以数字 j+1j+1j+1 结尾的单词,注意 jjj 需要小于 kkk。
因此,动态转移方程在 c++ 中可 ...
效果见本博客友链,链接跳转。
注册,添加站点和获取 API
注册
进入 uptimerobot 官网 点击 Register for FREE 然后按照网站给出的教程注册。
添加站点
进入点击跳转,点击 New monitor,在只有 https:// 里复制上你要监控的网站的链接,如复制成功下面应该会出现 Rename,点击可以修改此站点名字,修改完后点击 Create monitor 就添加好了。
在创建后要过会才会更新。
获取 API
打开链接,点击 API 点击在 Read-only API key 后面的 Create 把它记下来,或者以后出现回到这个页面查看。
搭建站点
可以使用 github 或者 vercel 本文使用 vercel。
注意 vercel 请不要使用浏览器自带的翻译。
进入 vercel,请自行注册官网跳转,点击 Add New 然后点击 Project,之后点击 Continue with GitHub,github 账号请自行注册,点击 Import Third-Party Git Repository,输入链接 https://gi ...
洛谷题目传送门。
CF题目传送门。
洛谷专栏传送门。
题意:
三兄弟约定见面,大哥编号为 111,中弟编号为 222,小弟编号为 333。
到了开会时间,其中一个兄弟迟到了。
给出准时到达的两个兄弟的编号,你需要确定迟到的那个兄弟的编号。
思路:
输入的是两个准时到达的,那么没有在输入里出现的就是迟到的。
代码:
#include<bits/stdc++.h>using namespace std;#define LL long long#define itn int#define ull unsigned long longint a[4];int main(){ int x,y;cin>>x>>y; a[x]=a[y]=1; if(!a[1])cout<<1; else if(!a[2])cout<<2; else cout<<3; return 0;}
AC 记录。
日常记录
未读
第一篇日记。
明天就是国庆最后一天了,www,马上上课了,我还剩好多卷子,国庆七天,五天要模拟考(CSP-J)。
今天模拟考考的不是很好,第一题忘记排序,第四题前缀和写错,四题一下爆两题…
题目传送门。
洛谷专栏传送门。
思路
本题为数学题,需要找规律。
我们可以尝试在 ana_nan 前面放 111,因为 aia_iai 等于 ai−2ai−1\dfrac{a_{i-2}}{a_{i-1}}ai−1ai−2 向上取整,所以当 iii 等于 nnn 时某个数乘 111 要等于 ana_nan 很明显 ana_nan 乘 111 会等于 ana_nan,然后是 iii 等于 n−1n-1n−1 时,aia_iai 等于 ai−2ai−1\dfrac{a_{i-2}}{a_{i-1}}ai−1ai−2 向上取整,又因为 an−1a_{n-1}an−1 等于 111,所以 ai−2≤ai−1a_{i-2} \le a_{i-1}ai−2≤ai−1,是不是又可以放一了,之后一直重复可以得到序列中只有 111 和 ana_nan 这两个数并且是交替出现的。
因为第一个 111 是放在 ana_nan 前的,111 和 ana_nan 这两个数交替出现,所以当 nnn 是偶数时 a1a_1a1 是 111,当 nnn 是奇数时 a1a_1a1 ...