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\ ...
随机推荐
- Django 2.0 学习(17):Django 用户认证(auth模块)
Django 用户认证(auth模块) 一.认证登陆 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中:如果用户存在于数据库中,然后再验证用户输入 ...
- BZOJ3620 似乎在梦中见过的样子(kmp)
不是很懂为什么数据范围要开的这么诡异,想到正解都不敢写.用类似NOI2014动物园的方法,对每个后缀求出类似next的数组即可. #include<iostream> #include&l ...
- C++解析(14):静态成员变量与静态成员函数
0.目录 1.静态成员变量 2.静态成员函数 3.小结 1.静态成员变量 成员变量的回顾: 通过对象名能够访问public成员变量 每个对象的成员变量都是专属的 成员变量不能在对象之间共享 新的需求: ...
- P4169 [Violet]天使玩偶/SJY摆棋子
题目背景 感谢@浮尘ii 提供的一组hack数据 题目描述 Ayu 在七年前曾经收到过一个天使玩偶,当时她把它当作时间囊埋在了地下.而七年后 的今天,Ayu 却忘了她把天使玩偶埋在了哪里,所以她决定仅 ...
- 洛谷 P2195 HXY造公园 解题报告
P2195 HXY造公园 题目描述 现在有一个现成的公园,有\(n\)个休息点和\(m\)条双向边连接两个休息点.众所周知,\(HXY\)是一个\(SXBK\)的强迫症患者,所以她打算施展魔法来改造公 ...
- tmp_table_size ---> 优化 MYSQL 经验总结
数据库连接突然增多到1000的问题 查看了一下,未有LOCK操作语句. 但是明显有好多copy to tmp table的SQL语句,这条语读的时间比较长,且这个表会被加读锁,相关表的update语句 ...
- spark(三)spark sql
一.DataFrame 1.DataFrame是组织成命名列的数据的分布式集合,类似于关系型数据库的一张表,如果没有列名就等于RDD,如果有列名,就是DataFrames DataFrames可以从各 ...
- Codeforces 578B. "Or" Game(思维题)
我们知道所有sigma(2^i){i<n}比2^n小,所以我们肯定是把这k次操作全部丢到一个数上看看能不能凑出二进制下一个更高位的1. 因为k最大只有10,我们可以求出每一个数乘以k次之后的值, ...
- bzoj3143: [Hnoi2013]游走(贪心+高斯消元)
考虑让总期望最小,那么就是期望经过次数越多的边贪心地给它越小的编号. 怎么求每条边的期望经过次数呢?边不大好算,我们考虑计算每个点的期望经过次数f[x],那么一条边的期望经过次数就是f[x]/d[x] ...
- gdb常用命令小结
用了这么长时间gdb, 总结下常用用法: http://note.youdao.com/noteshare?id=4a2d1a34624f7197d8e2304c4beb4578