隐藏
Bill Yang's Blog

路终会有尽头,但视野总能看到更远的地方。

0%

题目大意

    在你的帮助下,Winedag 愉快地在 deadline 前造完了他的题目。
    虽然 Winedag 非常牛逼,但 Wetmath 还是要求他参加模拟考试。
    Winedag 要考的题目一共有$n$道,对于第$i$道题,如果AC了,那么得分为$i$,否则得分为$1$,这套题的得分为所有题的得分的积,如果没有AC任何题,那么得分为$1$。
    就在Winedag准备切题如麻的时候,突然想起了一个事情,之前有人告诉他:在评测结束以后,会有一个小斗士来把所有分数不为完全平方数的人的程序删掉,分数变为$0$分。
    Winedag 想知道他有多少种方案能得到他能得到的最高分,但是他忙于写代码,所以他只能来找你帮忙。

阅读全文 »

题目大意

    三维空间给一个点,它沿着某个方向运动。空间中分布着$N$个球,当点与球相遇的时候,按照物理规则进行反弹 (入射角等于反射角)。
    请输出该点所有能相遇球的编号,如果能撞上的球超过$10$次 (即能撞上第$11$次),只输出前$10$次,然后再输出etc.

阅读全文 »

题目大意

    刚开始你有一个数字$0$,每一秒钟你会随机选择一个$[0,2^n-1]$的数字,与你手上的数字进行或(c++,c的|,pascal的or)操作。选择数字$i$的概率是$p[i]$。保证$0\le p[i]\le1,\sum p[i]=1$,问期望多少秒后,你手上的数字变成$2^n-1$。

阅读全文 »

题目大意

    在一个$2$维平面上有两条传送带,每一条传送带可以看成是一条线段。两条传送带分别为线段$AB$和线段$CD$。lxhgww在$AB$上的移动速度为$P$,在$CD$上的移动速度为$Q$,在平面上的移动速度$R$。现在lxhgww想从$A$点走到$D$点,他想知道最少需要走多长时间。

阅读全文 »

题目大意

    方伯伯正在做他的Oj。现在他在处理Oj上的用户排名问题。
    Oj上注册了$n$个用户,编号为$1\sim n$,一开始他们按照编号排名。方伯伯会按照心情对这些用户做以下四种操作,修改用户的排名和编号:

  1. 操作格式为$1 \ x \ y$,意味着将编号为$x$的用户编号改为$y$,而排名不变,执行完该操作后需要输出该用户在队列中的位置,数据保证$x$必然出现在队列中,同时$y$是一个当前不在排名中的编号。
  2. 操作格式为$2 \ x$,意味着将编号为$x$的用户的排名提升到第一位,执行完该操作后需要输出执行该操作前编号为$x$用户的排名。
  3. 操作格式为$3 \ x$,意味着将编号为$x$的用户的排名降到最后一位,执行完该操作后需要输出执行该操作前编号为$x$用户的排名。
  4. 操作格式为$4 \ k$,意味着查询当前排名为$k$的用户编号,执行完该操作后需要输出当前操作用户的编号。

    但同时为了防止别人监听自己的工作,方伯伯对他的操作进行了加密,即将四种操作的格式分别改为了:
    $1 \ x+a \ y+a$
    $2 \ x+a$
    $3 \ x+a$
    $4 \ k+a$
    其中$a$为上一次操作得到的输出,一开始$a=0$。
    例如:
    上一次操作得到的输出是$5$
    这一次操作的输入为:$1 \ 13 \ 15$
    因为这个输入是经过加密后的,所以你应该处理的操作是$1 8 10$
    现在你截获丁方伯伯的所有操作,希望你能给出结果。

阅读全文 »

题目大意

    lxhgww的小名叫“小L”,这是因为他总是很喜欢L型的东西。小L家的客厅是一个$R\times C$的矩形,现在他想用L型的地板来铺满整个客厅,客厅里有些位置有柱子,不能铺地板。现在小L想知道,用L型的地板铺满整个客厅有多少种不同的方案?
    需要注意的是,如下图所示,L型地板的两端长度可以任意变化,但不能长度为0。铺设完成后,客厅里面所有没有柱子的地方都必须铺上地板,但同一个地方不能被铺多次。

阅读全文 »

前天在做一道回文自动机题的时候,发现自己不会写Manacher了。于是重新学了一遍。
话不多说,直接贴链接,讲得很好我也就没什么要补充的了。

另外,时间复杂度显然是$O(n)$的。

下面是 HDU3068最长回文 的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<bits/stdc++.h>

using namespace std;

const int maxn=110005*2;

char tmp[maxn];
int n,f[maxn];
string s;

int main() {
while(~scanf("%s",tmp)) {
int len=strlen(tmp);
s.clear();
s.push_back('#');
for(int i=0; i<len; i++)s.push_back(tmp[i]),s.push_back('#');
n=s.length();
int Max=0,id=0,ans=0;
for(int i=1; i<=n-2; i++) {
f[i]=Max>i?min(f[2*id-i],Max-i):1;
while(i-f[i]>=0&&i+f[i]<n&&s[i-f[i]]==s[i+f[i]])f[i]++;
if(f[i]+i>Max) {Max=f[i]+i;id=i;}
ans=max(ans,f[i]-1);
}
printf("%d\n",ans);
}
return 0;
}

题目大意

    小明有一套玩具卡片。这套卡片中,有$n$张是数字卡片,这$n$张数字卡片上分别写有一个正整数$1,2,\ldots,n$;还有若干张符号卡片,每张符号卡片上写有符号$\underline +,\underline -,\underline{*},\underline(,\underline)$之一。
    小明最喜欢用这套卡片来摆算式,然后计算它的结果。当然,摆算式时不必用完所有的卡片。
    一天,小明摆好了一个算式。然而,准备计算前,一个熊孩子把算式中的数字卡片全部取走了,只剩下符号卡片和原来数字卡片所在的空位。也就是说,现在的算式可能是这样的:(_+_*_)*(_*_-_)+_(这里_代表原来放有数字卡片的空位)。
    无奈小明已不记得原来每个位置填的数字卡片上的数分别是多少,他只能假设每
种可能的算式作为原算式的概率相等。现在,小明想知道,原算式的结果的期望值是多少?
    形式化地,设有$m$种可能的算式,它们的运算结果分别为$s_1,s_2,\ldots,s_m$,那么原算式的结果的期望值$E$为

阅读全文 »