【OI】WERTYU UVa 10082】的更多相关文章

题目: A common typing error is to place the hands on the keyboard one row to the right of the correct position. So 'Q' is typed as 'W' and 'J' is typed as 'K' and so on. You are to decode a message typed in this manner. Input Input consists of several…
题目:(由于UVa注册不了,还是用vjudge) https://vjudge.net/problem/UVA-1586 详细说明放在了注释里面.原创. 破题点在于对于一个元素的组合(元素+个数),只有3种可能: 1.单个元素 2.一个元素和一位数字 3.一个元素和两位数字 没有了.因为题设交代了n<=99,表明个数只能为2位数.分别判断即可. /* Copyright 2019 AlexanderZ.Tang Molar_mass.cpp For UVa 1586 https://cnblog…
题目: TEX is a typesetting language developed by Donald Knuth. It takes source text together with a few typesetting instructions and produces, one hopes, a beautiful document. Beautiful documents use " and " to delimit quotations, rather than the…
UVa 1262  Password 题目: Password   Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description  Shoulder-surfing is the behavior of intentionally and stealthily watching the screen of another person's electronic…
UVa 10375 Choose and divide 题目: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19601 思路: maxn=10000 如果计算maxn!再保存的话显然装不下. 但答案由阶乘的积或商组成,所以可以用唯一分解定理求解.大题思路就是把目前答案的质因子的指数用数组e保存,乘除都对e操作. 需要注意的是筛法求素数优化后的写法. 代码: #include<iostream> #include<…
题目传送门:https://vjudge.net/problem/UVA-1440 看上去很像DAG的最小路径覆盖QwQ? 反正我是写了一个上下界网络流,建模方法清晰易懂. 建立源$s$,向每个原图中的点连边,下界为$0$,上界为$\infty$,表示在每个点可以放置无限多的人. 建立汇$t$,每个原图中的点向汇连边,下界为$0$,上界为$\infty$,表示人可以在任意一个点停止滑雪. 对于原图中的每条弧$<u,v>$,连边$<u,v>$,下界为$1$,上界为$\infty$,表…
都知道算某个数的幂需要线性的复杂度,为了优化复杂度,就出现了所谓的快速幂. 快速幂的代码很短,但是要原理需要一点心思. 首先,我们知道, a^b = a^c * a^d (c+d=b) 那么,不就可以通过 a^b = a^b1 * a^b2 * a^b3... * a^bn (b1 + b2...+bn = b) 来快速获得a^b吗?这个方法的优越性在于,如果可以线性的求出a^b1~a^bn,不就是很快的算法吗? 因为a^b=a^c*a^d,c+d=b这条原理,我们的目标是找到普遍满足 b =…
如何查找一个范围内的所有素数? 可以是从1~n挨个判断n%i 是否 == 0,也可以从 1~sqr(n) 一个个判断. 相信你们也听说过埃氏筛法,是使用每一个数的倍数筛掉合数!但是!每一个合数要被筛多次!这就给了我们优化的可乘之机! 它叫做线性筛,顾名思义,时间复杂度是线性的. 我们都知道,线性的复杂度已经非常优秀了,接下来我们的目的就是如何让每一个合数只被筛一次. 下面记住这条线性筛的原理: 每个合数只被它的最小质因子筛一次 每个合数只被它的最小质因子筛一次 每个合数只被它的最小质因子筛一次…
对于线段树,我们一般需要n*4的空间去存储线段树,然后有一种玄学操作是用指针来实现线段树. #include <inttypes.h> #include <algorithm> #include <cstdio> #include <iostream> #include <vector> #define debug(x) std::cout<< #x << " = " << std::end…
所谓单调队列,就是一个保持着某种性质的队列,通常是队列从队头到队尾,维护一种递增递减的关系. 这种队列通常用来解决一些连续区间的最值问题. 这种队列的入队要保证符合当前的性质,例如一个递增的单调序列(从左到右是从头到尾):7,9,10,11 这时,入队时要保证是递增的:例如12这个元素可以入队,而10这个元素不行. 这时我们看队头,这就是整个队列中最小的元素.所以,递增的队列可以维护最小值:递减的队列可以维护最大值. 当然,实现一个单调队列需要看题目要求,通常需要对队头和队尾进行更新. 例如这道…