URAL题解一
URAL题解一
URAL 1002
题目描述:一种记住手机号的方法就是将字母与数字对应,如图。这样就可以只记住一些单词,而不用记住数字。给出一个数字串和n个单词,用最少的单词数来代替数字串,输出对应的任一方案。

solution
首先想到的应该是DP,接着就是状态转移的问题,也就是预处理出每个单词可以与哪一段的数字对应,分析时间复杂度,发现直接暴力判断是可以的,但用HASH会好一些,还可以用KMP。
时间复杂度:\(O(单词数*数字长度)或O(单词长度*数字长度)\)
URAL 1010
题目描述:有一个离散函数,它的定义域为整数\([1, n]\),现在在函数图象中找两个点,使得这两个点之间的点都在这两个点的连线的下方,求出连线倾斜度最大的方案(两个点,编号小的在前),有多个方案时输出第一个点编号最小的方案。
solution
首先考虑比较特殊的方案:相邻的两个点。相邻的两个点肯定是可行的。然后考虑两点之间有点的可行方案。




由上图可知,与选取的两点\((i, j)\)相邻的点必定有一个点与i或j相连的直线的倾角比\((i, j)\)所成的直线的倾角要大,所以中间有点的方案不是最优方案,所以答案就是相邻的点形成的直线的倾角最大的方案。
时间复杂度:\(O(n)\)
URAL 1011
题目描述:有\(n\)个人,其中有\(m\)个是乘务员,已知乘务员的比例大于\(P\)%,小于\(Q\)%,问\(n\)最小是多少。
solution
按题意列出公式
$ P$ % \(< \frac{m}{n} < Q\) %
化简
\(P\) % \(n<m< Q\) % \(n\)
题目就变成:找出最小的\(n\),使得区间\((P\) % \(n ,Q\) % \(n)\)中至少有一个整数。显然\(n<100000\),所以直接枚举即可。
时间复杂度:\(O(n)\)
URAL 1012
题目描述:在所有没有前导\(0\)的\(n\)位\(k\)进制数中,没有连续两个\(0\)的数有多少个。
solution
很明显是数位DP,但答案很大,要高精度。
时间复杂度:\(O(n^2)\)
URAL 1017
题目描述:用\(n\)个木块排成一个楼梯,楼梯每一级的高度至少要比前一级高一个木块,楼梯至少有两级,问楼梯有多少种。
solution
简单的记忆化搜索,不需要高精度。
时间复杂度:\(O(n^2)\)
URAL 1023
题目描述:有\(n\)颗石子,有两个人进行游戏,轮流拿走石子,每次拿走的石子数目范围为\([1, m]\),拿走最后一颗的人算赢,请求出最小的\(m(m \geq 2)\),使得后手必胜。
solution
小学奥数题,显然\(n%(m+1)=0\)时,后手必胜,所以只要求\(n\)的最小因子即可,但要注意\((m \geq 2)\)的限制。
时间复杂度:\(O(\sqrt{n})\)
URAL 1024
题目描述:给出一个关于\(n\)排列的置换\(P\),问至少需要置换多少次才能变回\(1, 2, 3 ... n\)。(可以证明一定能回到\(1, 2, 3 ... n\))
solution
可以求出每个数至少需要置换多少次才能变回自己,也就是这个数的循环,然后求所有数的循环的最小公倍数就是答案。
时间复杂度:\(O(n^2)\)
URAL 1028
题目描述:给出平面上的\(n\)个点,记每个点的左下方的点的个数为该点的\(level\),问每个\(level\)有多少个点。
solution
数据已经排好序了,直接用树状数组就好了。
时间复杂度:\(O(nlogn)\)
URAL 1033
题目描述:给出一个展厅的平面图,‘.’是空地,‘#’是墙,展厅外围也是墙,左上角和右下角是入口,所以这两个格子有两面不是墙,现在要给能被游客看到的墙面贴上墙纸,问需要墙纸的面积。
solution
搜索。碰到墙壁就记一次数,或者搜索完后判断某一个面是否是能访问的空地与墙的交界。注意两个入口可能不连通。
时间复杂度:\(O(n^2)\)
URAL 1034
题目描述:一个\(n*n\)的棋盘上有\(n\)个皇后,这\(n\)个皇后两两不能攻击到对方,这时的局面称为peaceful, 问改变任意三个皇后的位置,使得局面依然是peaceful, peaceful的局面有多少个,注意:所有的皇后都看做是相同的。
solution
枚举三个皇后,改变他们的位置(只有两种情况),判断是否peaceful,判断方法与\(n\)皇后问题一样。
时间复杂度:\(O(n^3)\)
URAL题解一的更多相关文章
- URAL题解三
URAL题解三 URAL 1045 题目描述:有\(n\)个机场,\(n-1\)条航线,任意两个机场有且只有一种方案联通.现有两个恐怖分子从\(m\)号机场出发,第一个人在机场安装炸弹,乘坐飞机,引爆 ...
- URAL题解二
URAL题解二 URAL 1082 题目描述:输出程序的输入数据,使得程序输出"Beutiful Vasilisa" solution 一开始只看程序的核心部分,发现是求快排的比较 ...
- URAL题解—不断跟新中
1014:简单题,忘了0的情况可以是10,== 1219:找呀找规律,满足N*(N-1)/2+1=X;就是1 的情况了
- 收集一些关于OI/ACM的奇怪的东西……
一.代码: 1.求逆元(原理貌似就是拓展欧几里得,要求MOD是素数): int inv(int a) { if(a == 1) return 1; return ((MOD - MOD / a) * ...
- Ural 1029 Ministry 题解
目录 Ural 1029 Ministry 题解 题意 题解 程序 Ural 1029 Ministry 题解 题意 给定一个\(n\times m(1\le n \le10,1\le m \le50 ...
- Ural 1298 Knight 题解
目录 Ural 1298 Knight 题解 题意 题解 程序 Ural 1298 Knight 题解 题意 给定一个\(n\times n(1\le n\le8)\)的国际象棋棋盘和一个骑士(基本上 ...
- Ural 1238 Folding 题解
目录 Ural 1238 Folding 题解 题意 题解 程序 Ural 1238 Folding 题解 题意 定义折叠.展开为: 单个大写英文字母是一个折叠的串,把它展开后是它本身. 如果\(S\ ...
- Ural 1248 Sequence Sum 题解
目录 Ural 1248 Sequence Sum 题解 题意 题解 程序 Ural 1248 Sequence Sum 题解 题意 给定\(n\)个用科学计数法表示的实数\((10^{-100}\s ...
- Ural 1201 Which Day Is It? 题解
目录 Ural 1201 Which Day Is It? 题解 题意 输入 输出 题解 程序 Ural 1201 Which Day Is It? 题解 题意 打印一个月历. 输入 输入日\((1\ ...
随机推荐
- luogu 1344 追查坏牛奶(最小割)
第一问求最小割. 第二问求割边最小的最小割. 我们直接求出第二问就可以求出第一问了. 对于求割边最小,如果我们可以把每条边都附加一个1的权值,那么求最小割是不是会优先选择1最少的边呢. 但是如果直接把 ...
- 【uoj#51】[UR #4]元旦三侠的游戏 博弈论+dp
题目描述 给出 $n$ 和 $m$ ,$m$ 次询问.每次询问给出 $a$ 和 $b$ ,两人轮流选择:将 $a$ 加一或者将 $b$ 加一,但必须保证 $a^b\le n$ ,无法操作者输,问先手是 ...
- elsarticle模板 去掉Preprint submitted to
参考:http://latex.org/forum/viewtopic.php?t=11123 修改elsarticle.cls文件. 我的CTeX装在c盘中,elsarticle.cls文件路径为: ...
- 【数据库_Mysql】查询当前年份的sql
1.本年份 SELECT DATE_FORMAT(NOW(), '%Y'); 2.本月份(显示数字) SELECT DATE_FORMAT(NOW(), '%m'); 3.本月份(显示英文) SELE ...
- BZOJ4975 区间翻转
这个范围给的很像区间dp之类的,想了半天没一点思路,滚去看了一眼status被吓傻了.然后瞎猜了一发结论就过掉了. 求出逆序对数,判断是否为奇数即可.因为翻转区间会把将这段区间的逆序对取反,而长度为4 ...
- Cows and Cars UVA - 10491 (古典概率)
按照题目的去推就好了 两种情况 1.第一次选择奶牛的门 概率是 a/(a+b) 打开c扇门后 除去选择的门 还剩 a-1-c+b扇门 则选到车的概率为b/(a-1-c+b) 2.第一次选择车的门 ...
- 【刷题】BZOJ 3926 [Zjoi2015]诸神眷顾的幻想乡
Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日. 粉丝们非常热情,自发组织表演了一系列节目给幽香看. ...
- [CF1103B]Game with modulo
题目大意:交互题,有一个数$a(a\leqslant10^9)$,需要猜出它的值,一次询问为你两个数字$x,y(x,y\in[0,2\times10^9])$: 若$x\bmod a\geqslant ...
- ContestHunter#24-C 逃不掉的路
Description: 求无向图的必经边 思路:一眼题 将无向图缩成树,然后求两点树上距离 #include<iostream> #include<vector> #incl ...
- python基础----迭代器、生成器、协程函数及应用(面向过程实例)
一.什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2.可迭代 ...