
训练指南-第二章
JeraKrs
本人目前就职于百度商业研发部,有需要内推的朋友简历可发我邮箱 jerakrs@qq.com
展开
-
uva 10995 - Educational Journey(数论)
题目连接:uva 10995 - Educational Journey 题目大意:A,C,M三个人要去拜访大神D,但是由于太蠢了,走错方向了,当他们发现后,急急忙忙往回赶,先在A,C,M,D他们近似于在一条直线上,从左到右分别是A,C,M和D,D是不移动的,A的移动速度最快,其次是C再M,现在给出5个时刻,分别表示A超过C的时间,A超过M的时间,A见到D的时间,C见到D的时间以及原创 2014-04-29 20:45:08 · 1298 阅读 · 0 评论 -
uva 1530 - Floating Point Numbers(数论)
题目链接:uva 1530 - Floating Point Numbers题目大意:给出一个16位的二进制数,用来表示一个浮点数,第一位为符号,1~7位表示一个十进制的数s,e=63-s;剩下的8位为小数部分,默认整数部分为1,得到f,然后最后a=f*2^e,要求用科学计数法输出a。解题思路:模拟就好了,注意0的情况特殊处理,以及科学计数法的整数部分不能为0.原创 2014-04-29 20:56:31 · 1136 阅读 · 0 评论 -
uva 10693 - Traffic Volume(数论)
题目链接:uva 10693 - Traffic Volume题目大意:每辆c原创 2014-04-29 16:58:52 · 1215 阅读 · 0 评论 -
uva 10726 - Coco Monkey(数论)
题目链接:uva 10726 - Coco Monkey题目大意:n个人,m只猴子,l和r,表示上下限。找出l~r之间有几个数满足题目要求。s即为由满足要求的数,在题目中表示有s个椰子,n个人说好第二天将椰子平分,但是午夜的时候,一个人偷偷爬起来,将椰子分成n份,并且剩了m个,就将m个拿给了猴子,并且自己藏起来一份;紧接着第2个人,第3个人都按照相同的方法一直到最后一个人;然后第二原创 2014-04-29 17:13:53 · 1767 阅读 · 0 评论 -
uva 11029 - Leading and Trailing(快速幂)
题目链接:uva 11029 - Leading and Trailing题目大意:给出一个n和k求n^k的前三位数和后三位数。解题思路:后三为数可以用分治的方法(快速幂)去做,可是前三位数就比较麻烦了,看了别人的题解.n^k = 10 ^ (k * log10(n)),所以可以将多余的位数移到小数点后面然后舍弃掉,只保留前三位,pow(10, 2 + fmod(k *原创 2013-10-26 08:02:43 · 1871 阅读 · 0 评论 -
uva 1529 - Clock(数论)
题目链接:uva 1529 - Clock题目大意:原创 2014-04-29 21:04:34 · 1483 阅读 · 0 评论 -
uva 11314 - Hardly Hard(坐标系问题)
题目链接:uva 11314 - Hardly Hard题目大意:给出A,B两点,然后分别在y轴和x轴找一个D点和C点,使得A,B,C和D组成的四边形的周长最小。解题思路:两点之间直线最短,将A'为A关于y轴的对称点,B'为B关于x轴的对称点,连接A‘B'即为另外三条边的最短距离,然后AB的距离又是固定的。#include #include #inc原创 2014-04-30 15:22:48 · 1335 阅读 · 0 评论 -
uva 278 - Chess(计数问题)
题目链接:uva 278 - Chess题目大意:给出一个n*m的棋盘,并且给出棋子的种类,问说在这个大小的棋盘上最多能放几个给定的棋子,棋子之间不能互相攻击。解题思路:总共有4种棋子,那么就分类讨论。马(骑士):n或m为1的时候,肯定可以摆满,因为肯定不能互相攻击n或者m为2时,这样放是最优的。其他情况的或就是间隔放最优。车:因为车的攻原创 2014-04-30 15:41:14 · 1339 阅读 · 0 评论 -
uva 617- Nonstop Travel(暴力+数学)
题目链接:uva 617 - Nonstop Travel题目大意:原创 2014-04-30 22:09:01 · 1183 阅读 · 0 评论 -
uva 10773 - Back to Intermediate Math(数论)
题目链接:uva 10773 - Back to Intermediate Math题目大意:有一天河,宽d,水流速度v,船速u,问说垂直过河和最快过河的时间差,如果不能过河输出“can't determine”。解题思路:将u的速度分解成水平方向和竖直方向的两个速度,使水平方向速度恰好为v,船即可垂直过河,速度为竖直方向速度。#include #includ原创 2014-04-29 17:20:49 · 1010 阅读 · 0 评论 -
uva 591 Box of Bricks(求平均值)
Box of Bricks Little Bob likes playing with his box of bricks. He puts the bricks one upon another and builds stacks of different height. ``Look, I've built a wall!'', he tells his old原创 2013-07-31 10:25:23 · 2589 阅读 · 0 评论 -
uva 616 - Coconuts, Revisited(数学)
题目链接:uva 616 - Coconuts, Revisited题目大意:题目背景和uva 10726是一样的,只是这道题目是给出n,表示椰子的个数,并且猴子的个数为1,问说是否能找到满足的人数,并且要求人数尽量大。解题思路:枚举人数,然后根据uva 10726推出的公式去求出最后剩下的椰子是否满足平分等判断。#include #include #inc原创 2014-04-30 16:26:20 · 1414 阅读 · 0 评论 -
uva 618 - Doing Windows(暴力+数学)
题目链接:uva 618 - Doing Windows题目大意:给出电脑桌面的大小W和H,现在在桌面上有4个窗口,给出窗口的初始大小,问说能不能通过调整各个窗口的大小(长宽比例不能变)使得4个屏幕刚好占满整个屏幕,并且互相不覆盖。解题思路:其实可以直接暴力出所有情况,不过细节比较多,而且要考虑所有的细节。我的做法的是先将4个窗口缩小至最小的状态,然后枚举左下角的窗口,原创 2014-05-01 12:41:28 · 1550 阅读 · 0 评论 -
uva 808 - Bee Breeding(坐标问题)
题目链接:uva 808 - Bee Breeding题目大意:按照题目中图片的方式将所有的正六边形标上序号,然后给出两个序号,问这两六边形最短要走多少步。解题思路:将图中的坐标系进行修改这样,每个位置和周围(除了左上角和右下角)位置相邻,只需要一步。并且建坐标的方法可以按照6条边的方式#include #include #inclu原创 2014-05-01 13:04:33 · 2365 阅读 · 0 评论 -
uva 11401 - Triangle Counting(数论)
题目链接:uva 11401 - Triangle Counting题目大意:有多少种方法可以从1,2,3...n中选出3个不同的数组成三角形,给出n,求种数。解题思路:加法原理,设最大边为x的三角形有c(x)个,那么另外两条边长分别为y和z,根据三角形的形式可以的y+z>x,所以z的范围即为x−yzx根据这个不等式可以得到每个y值所对应的z值个数,为等差数列,所以c(原创 2014-05-14 17:15:34 · 1110 阅读 · 0 评论 -
uva 11889 - Benefit(数论)
题目链接:uva 11889 - Benefit原创 2014-04-10 13:12:20 · 928 阅读 · 0 评论 -
uva 11752 - The Super Powers(数论+枚举技巧)
题目链接:uva 11752 - The Super Powers题目大意:没有输入,找出所有的超级数,超级数即可以拆分成至少两个数的幂形式。解题思路:先用素数筛选法找出64以内的合数,以为只有幂是合数才可以进行拆分。然后枚举底数进行判断,所有小于2^64-1的数都是满足的,这里有一个技巧,就是说2^64-1已经是unsign long long 的最大值了,那么超过它原创 2014-04-11 09:14:15 · 3524 阅读 · 0 评论 -
uva 1319 Maximum(贪心)
题目连接:2911 - Maximum题目大意:给出m, p, a, b,然后xi满足题目中的两个公式, 要求求的 xp1 + xp2 +...+ xpm 的最大值。解题思路:可以将x1 + x2 +...+ xm = b * 两端同时乘以根号a去计算。然后按照贪心的思想去计算。#include #include int l, r;double m, p, a原创 2013-08-31 21:41:05 · 1924 阅读 · 2 评论 -
uva 11076 - Add Again(组合数学)
题目链接:uva 11076 - Add Again解题思路:给出一个序列,要求将所有可能的序列每个序列形成的数值相加的和。解题思路:对每个位置进行考虑,计算每种数字在这个位置出现的次数,其他位置按照组合数学去计算次数。然后有n个位置,每个位置的情况是一样的。#include #include const int N = 105;typedef un原创 2014-04-10 20:36:28 · 1195 阅读 · 0 评论 -
uva 11609 - Teams(组合数学+快速幂)
题目链接:uva 11609 - Teams题目大意:给出n,表示说有n个人,标好1~n,现在选若干人组成一队,并且选出一个队长,问说可以选多少种队伍,队长,人数,成员不同均算不同的队伍。解题思路:枚举人数为1、2....n的情况,那么就有1*C(n,1)+2*C(n,2)+3*C(n,3)+4*C(n,4) .....n*C(n,n),然后从中提取出n,每一项前的系数原创 2014-04-10 20:46:57 · 1340 阅读 · 0 评论 -
uva 11388 - GCD LCM(数论)
题目链接:uva 11388 - GCD LCM题目大意:给出两个数的g(原创 2014-04-10 13:07:28 · 1082 阅读 · 0 评论 -
uva 10780 - Again Prime? No Time.(数论)
题目链接:uva 10780 - Again Prime? No Time.题目大意:给定m和n,计算n!中有多少个因子m。解题思路:将1~n分解质因子,然后在将m分解,对应每个因子计算说可以保证的个数,维护最小值。#include #include #include #define min(a,b) (a)<(b)?(a):(b)const i原创 2014-04-10 17:47:43 · 2116 阅读 · 0 评论 -
uva 10892 - LCM Cardinality(数论)
题目链接:uva 10892 - LCM Cardinality题目大意:给出l,为说有多少组A,B的最小公约数为l。解题思路:将L的因子分离出来,因为最大不过几百个,所以可以用o(n^2)暴力枚举一下。#include #include #include #include using namespace std;const int N = 10原创 2014-04-10 17:51:41 · 2100 阅读 · 0 评论 -
uva 11489 - Integer Game(数论)
题目链接:uva 11489 - Integer Game题目大意:给出若干个数,两个来玩一个游戏,轮流从这若干个数中移除一个数,使得剩下的数字之和是3的倍数(0也算,即一个也不剩的情况),直到有一人无法移除时,另一个人胜利。解题思路:先将各个数读入并且计数,除了第一次要特殊处理,剩下的这能移除3,6,9。#include #include const原创 2014-04-11 09:05:18 · 1489 阅读 · 0 评论 -
uva 12050 - Palindrome Numbers(数论)
题目链接:uva 12050 - Palindrome Numbers题目大意:给出i,输出第i个镜像数,不能有前导0.解题思路:除了第一位的可能为9外,其他的都为10,这样可以根据i找到位数,然后对每一位进进计算输出。样例:28 -> 191(边界的地方注意)#include #include const int N = 20;int n,原创 2014-04-11 09:18:06 · 1588 阅读 · 0 评论 -
uva 11461 - Square Numbers(数论)
题目链接:uva 11461 - Square Numbers题目大意:给出a,b,求a~b间平方数的ge原创 2014-04-11 13:33:40 · 1033 阅读 · 0 评论 -
uva 1362 - Exploring Pyramids(区间dp)
题目连接:uva 1362 - Exploring Pyramids题目大意:给出一个字符串,问有多少种多叉树德前序遍历(这里每经过一个节点,该节点的值即要被算入,回溯的也要)满足该字符串。解题思路:dp[i][j]表示从i到j的位置可以用多少种多叉树表示。转移方程:dp[i][j]=∑k=i+2jdp[i+1][k−1]∗dp[k][j]。#include #include原创 2014-05-18 14:22:25 · 1707 阅读 · 0 评论 -
uva 11361 - Investigating Div-Sum Property(数位dp)
题目链接:uva 11361 - Investigating Div-Sum Property题目大意:给出a,b,k,问说在[a,b]这个区间有多少n,满足n整除k,以及n的各个为上的数字之和也整除k。解题思路:数位dp,dp[i][j][x]表示第i为的时候,n整除k余j,n(以及考虑到的位数)的各个位置上的数字之和整除k余x的情况总数,并且每次要计算上限的临界值。#inc原创 2014-05-18 20:02:06 · 1336 阅读 · 0 评论 -
uva 10253 - Series-Parallel Networks
题目链接:uva 10253 - Series-Parallel Networks题目大意:就是有n条线,通过并联或者是串联,形成一个整体,问说有n条线,可以组成多少种。解题思路:大白书上的例题,解法还真是高端.dp[i][j]表示说每个树德叶子节点不大于i,一共有j个叶子。f[i]=dp[i-1][i],注意n为1的时候。#include #include typede原创 2014-05-18 23:34:56 · 1571 阅读 · 0 评论 -
uva 1073 - Glenbow Museum(递推)
题目链接:1073 - Glenbow Museum题目大意:一个边平行与坐标轴的多边形,可以通过描述角的方式来表示,R表示90度,O表示270度,现在给出序列的长度L,问可以构造出多少种不同的多边形,要求构造出来的多边形在内部有一点可以看到边界的每一个点(我的理解应该是凸多边形)。解题思路:首先确定是一个凸多边形,所以不可能有两个O相邻,并且在整个序列中,要有4个的RR(即两个R原创 2014-05-18 20:50:21 · 1607 阅读 · 0 评论 -
uva 10339 - Watching Watches(数论)
题目链接:uva 10339 - Watching Watches题目大意:有两个表,每天都会慢一点时间,给出每天慢得秒数,问说下一次重合的时刻。解题思路:时刻重合也就是说整整差了一周,一周是12小时,用12小时的秒数除以两个表的相差那就是需要多少天的时间后重合,知道了需要多少天*每一天某个表走的时间(注意要减去少走的时间)即使答案,化成时间的格式即可,注意0时显示成1原创 2014-04-12 09:22:21 · 1510 阅读 · 0 评论 -
uva 11538 - Chess Queen(数论)
题目链接:uva 11538 - Chess Queen题目大意:在一个n∗m的棋盘上,放两个皇后,要求两个皇后可以互相攻击,求有多少种放法。解题思路:因为皇后的攻击范围为竖线、横线和斜线,所以枚举每条上两个皇后放的位置,比如一条斜线有8个,那么放两个皇后的种数就有C(82)种。行数n,每行m个位置C(m2)∗n列数m,每列n个位置C(n2)∗m斜线,2∗(2∗∑i=1原创 2014-05-13 22:56:51 · 1453 阅读 · 0 评论 -
uva 10367 - Equations(模拟+数论)
题目链接:uva 10367 - Equations题目大意:给出两个等式,求其中的未知原创 2014-04-13 15:25:00 · 1102 阅读 · 0 评论 -
uva 10586 - Polynomial Remains(数论)
题目链接:uva 10586 - Polynomial Remains题目大意:给出一个n和k,表示有一个一元n次方程,有0次幂开始给出系数,用这个式子去除以x^k+1,求剩下的一元n-k次方程。解题思路:模拟除的过程即可,注意k #include #include #include using namespace std;const int N原创 2014-04-13 15:58:49 · 1485 阅读 · 0 评论 -
uva 11038 - How Many O's?(计数问题)
题目链接:uva 11038 - How Many O's?题目大意:写出m到n之间的数,问需要写多少个0.解题思路:f(x)表示从0到x需要写多少个0,于是给出区间[m,n]就有答案等于f(n)-f(m-1)。剩下的就是f(x)该如何求。枚举每个位置上可能为0的情况,这样就将这个数分成两个部分,在保证组成的数小于x的前提下,计算可以的组成方法。例:x=12345,枚举十位为0原创 2014-05-20 12:40:52 · 2256 阅读 · 0 评论 -
uva 10883 - Supermean(组合数学+数值优化)
题目链接:uva 10883 - Supermean题目大意:给出n个数,每相邻两个数求平均数,将得到n-1个数,这n-1个数每相邻的两个数求平均值,将得到n-2个数。一次类推,求最后得到的那个数的值。解题思路:类似与杨辉三角,第i个数起始被加了C(n−1i−1)次。总共有2n−1个数相加。但是因为n有50000,250000根本存不下,所以借助log函数。例:中间原创 2014-05-20 16:59:43 · 1888 阅读 · 0 评论 -
uva 11806 - Cheerleaders(容斥原理)
题目链接:uva 11806 - Cheerleaders题目大意:在一个m行n列的矩阵网里放k个石子,问有多少种画法?每个格子最多放一个石子,所有石子必须用完,并且在第一行、最后一行、第一列和最后一列都得有石子。解题思路:容斥原理,我们可以先求说在m∗n的矩阵上放k个石子的种数C(nmk),减掉四条边界不放的情况就是答案了。所以枚举16种状态,用二进制数表示说四条边中那些边是不放原创 2014-05-14 12:36:04 · 1717 阅读 · 1 评论 -
uva 11645 - Bits(计数问题+高精度)
题目链接:uva 11645 - Bits题目大意:给出n,问从0到n这n+1个数种,数的二进制情况下,有多少11存在。解题思路:和uva 11038一个类型的题目,只是这道题目是对于二进制下的情况。而且高精度部分可以用两个long long数解决。#include #include typedef long long ll;const int N = 100;con原创 2014-05-20 23:03:34 · 1948 阅读 · 2 评论 -
uva 1350 - Pinary(dp+计数)
题目链接:uva 1350 - Pinary题目大意:给出n,输出第n给Pinary Number,Pinary Number为二进制数,并且没有连续两个1相连。解题思路:dp[i]表示到第i位有dp[i]种,于是给定n,一层循环判断dp[i]≤n的话,就输出1,并且n减掉dp[i],注意输出0的时候,不能输出前导0.#include #include typedef l原创 2014-05-22 22:46:25 · 1450 阅读 · 0 评论 -
uva 10312 - Expression Bracketing(Catalan+SuperCatalan)
题目链接:uva 10312 - Expression Bracketing题目大意:给出一个序列,长度为n,表示有n个x(节点),可以添加任意括号,问说形成的串为非二叉表达式的有多少个。解题思路:直接求非二叉表达式是比较困难,所以换求总数减去二叉表达式的数量。二叉表达式的很容易发现是Catalan数,而总数时一种叫SuperCatalan数的一种序列,第一次接触。或者可以用dp做原创 2014-05-22 21:09:37 · 1390 阅读 · 0 评论