
ACM训练开始
文章平均质量分 68
-sky-
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ZOJ-3870 Team Formation
题目链接:ZOJ-3870 Team Formation刚拿到这个题的时候自信满满, 但是没看数据范围,遍历的 必然超时。 考虑了好久, 然而·····题目大意: 有 n个数 这n个数中 两个数异或之后比这两个数最大值大(用公式表示: a^b > max(a,b) )分析: 两个数( a , b ) 假设 a原创 2017-04-16 15:00:46 · 255 阅读 · 0 评论 -
Coin HDU - 2662 两个素数可以表示比一个数大的所有数
传送门题目大意:两个素数可以表示n大的所有数,比如:比23大的所有的整数都可以用5和7 表示。那么5和7就可以表示比23大的所有的整数。给两个素数求出这个n。公式证明:设所求为n,那么n+a、n+b可以用a、b线性表出,而n不可。所以 n+a=x1*a+y1*b,n+b=x2*a+y2*b所以 n=(x1-1)*a+y1*b n=x2*a+(y2-1)*b因为n不能被线原创 2017-08-17 19:05:06 · 347 阅读 · 0 评论 -
Robberies HDU - 2955 01背包, 价值与重量互换
传送门题目大意:他准备到银行抢钱,只有被抓的概率小于 P 时才能去, 给每个银行的钱数 m, 和被抓的概率 p 。 目标是拿到最多的钱,并且概率不能超过P;解题思路:有背包上限和价值尽可能大, 所以时背包问题,每个银行只能抢一次 很直白的01背包。但是有个问题需要处理, 浮点数不能当作下标,因此我们需要转换一下,用逆向思维考虑,可以让概率当作价值,钱数当作重原创 2017-07-26 15:41:56 · 279 阅读 · 0 评论 -
Robot HDU - 4576 dp+滚动数组
传送门题目大意:有一个环,有n个格子,编号为1~n; 一开始1的位置上有一个机器人,每次给他一个指令m,它移动m距离,但是它等可能的向左或者向右。求m条指令之后在l和r之间的可能性。解题思路:这个题卡时间卡的非常紧,超时了两次。简直崩溃,但是题目本身不难。每读取一个指令,将数组内概率更新,每个位置都可能向前或者向后x,因此把自己的概率乘以0.5加给那个格子即可。但是每次都应该初始化为零原创 2017-08-18 14:10:02 · 274 阅读 · 0 评论 -
例题1.8 彩色立方体 Colored Cubes UVALive - 3401 暴力打表+暴力搜索+贪心
传送门题目大意:有n个带颜色的立方体,每个面都涂有不同的颜色,要求图改尽量少的面,使得所有立方体完全相同,立方体可以旋转。解题思路:如果立方体每个面都不一样,那么立方体通过旋转一共有4×6=24中状态。我们给每个面标号0,1,2,3,4,5 那么旋转可以生成24中序列。这个序列手写很麻烦,可以用程序生成。然后将这二十四个状态当作常量表,直接使用即可。 第一个立方体作为参照,然后就是枚原创 2017-08-11 12:36:48 · 441 阅读 · 0 评论 -
例题1.7 偶数矩阵 Even Parity UVA - 11464 部分枚举+递推
传送门题目大意:给你一个n*n的01矩阵,你的任务时把尽量少的0变成1,使得每个数字的上下左右之和为偶数。只算存在的解题思路:全部枚举时不可能的,枚举第一行的变化,那么第二行行就可以递推出来。(因为第一行上面一行不存在,所以是三个的和)。 那么第三行就可以根据第一行和第二行推出。AC代码:#include #include #include #include #i原创 2017-08-10 17:48:20 · 466 阅读 · 0 评论 -
例题1.12 组装电脑 Assemble UVALive - 3971 模拟或者二分
传送门题目大意:你有b块钱,要组装一台电脑,给n个配件,每个配件给出种类,名称,价格,品质。电脑整体水平取决于最差的哪个配件的品质,因此要求最低的品质的配件的品质尽可能的大。输出组装的电脑配件里面最低的品质的最大值。解题思路:首先我想到的是都买最便宜的,然后有钱就把最差的换的稍微好一点。不断更新。因为每次提升都是把最差的变好,那么就会更新到最大值。更换配件时我们都买最便宜的换掉当前品质最差原创 2017-08-12 13:21:56 · 378 阅读 · 0 评论 -
Face The Right Way POJ - 3276 简单开关问题
传送门题目大意:白书例题p150 N头牛拍成一排, 没有牛有头朝前和头朝后,一个机器可以一次反转连续的几头牛, 但需要固定个数K, 也就是每次都反转K头牛,求解反转的最少的次数M和对应的K。注意:反转的牛不能少于K,也就是说在开头和结尾也必须反转K头。解题思路:递归思想,将问题分解为更小的问题。如果开头第一个牛头朝前,那么其最少的次数就是第二头牛到n-1头牛时最小的次原创 2017-08-04 16:57:24 · 296 阅读 · 0 评论 -
例题1.13 派 Pie UVALive - 3635 二分
传送门题目大意:你和你的f个朋友分蛋糕(也就是一共f+1个人),有n个蛋糕,要求每个人分到的一样多,并且蛋糕不能拼接。可以有剩余。求每个人最大能分到的面积是多大。给定n个蛋糕的半径。解题思路:直接二分即可,答案一定在0和最大的蛋糕面积之间。我们测试x是否可以,我们只需检测可以切下多少个x面积的蛋糕,只要够f+1块即可。本题与白书割绳子例题一样。AC代码:#include原创 2017-08-13 10:52:07 · 308 阅读 · 0 评论 -
Dragon of Loowater UVA - 11292
传送门题目大意:有一个恶龙有多个头,勇士雇佣人砍掉他所有的头, 每个勇士的能力为x的话,佣金也为x, 能力为x的勇士能砍掉直径为小于等于x的头。这个勇士想花最少的佣金砍掉恶龙所有的头。每个勇士只能雇佣一次。水~~~~解题思路:算是贪心法吧,一开始我想到的是进行匹配。对恶龙和佣兵进行排序,从小到大遍历恶龙,找到最小的勇士砍对应的头。如果勇士不够就不能砍掉所有的头。代码写完跟题解差不多..原创 2017-08-06 09:17:01 · 208 阅读 · 0 评论 -
Commando War UVA - 11729
传送门水~~~~题目大意:你给n个士兵安排任务,每个士兵安排任务的时间为bi 执行时间为ji ,同一时间只能给一个士兵安排任务,但是士兵执行任务不妨碍给其他士兵安排和执行。求出最短的时间。解题思路:贪心,无论怎样,执行时间长的就要先安排,因为安排了其他的,他就是最后,所以把所有最后完成的都提到前面,先执行,因此排序即可。AC代码:#include #includ原创 2017-08-06 10:38:44 · 233 阅读 · 0 评论 -
Spreading the Wealth UVA - 11300 找规律+数学推导
传送门题目大意:有n个人围成一圈,每个人有ai个金币,每个人可以向相邻的人传金币。求出需要传递最少的金币数目使得每个人手中的金币数相等,数据保证金币总数时n的倍数。解题思路: 我们设第i个人向前一个人传递xi个金币。并且我们可以求出每个人平均有多少个金币:M = sum/n; 那么: A[i] + x[i+1] - x[i] = M =原创 2017-08-07 08:45:45 · 226 阅读 · 0 评论 -
例题1.4 Graveyard UVALive - 3708 数学思维题
传送门题目大意:有一个周长为10000的圈,以前有n个雕像,现在要加进去m个,以前每个雕像之间距离是相等的,加进去之后也要相等。求移动原来雕像最少的距离。新的雕像可以添加到任意位置。解题思路:我们可以求出原来的间隔和现在的间隔。移动距离最少就要把原来的雕像移动到最近的一个点。因此我们将原来的雕像移动到它前后两个点的近的那一个位置就好。因为新添了雕像,所以新的距离比原来的原创 2017-08-07 14:46:02 · 285 阅读 · 0 评论 -
例1.11 新汉诺塔问题 A Different Task UVA - 10795 中间状态+逆向思维
传送门题目大意:标准的汉诺塔上有n个盘子,然后给定两个状态,初状态和目标状态,即每个盘子的位置。求出初装态到目标状态需要最少的步数解题思路:汉诺塔问题我们知道,1,2,3,4。。。个盘子移动到另一个柱子需要的步数为:1,3,7,15,,,,即前一项的两倍再加一。在考虑另一个问题,当最大的盘子在目标位置时就不需要移动,那么就找第二小的盘子,找到一个盘子时,那这个盘子就是需要移动的最大的盘子,原创 2017-08-11 17:10:26 · 802 阅读 · 0 评论 -
Fabled Rooks UVA - 11134 等效转换
传送门题目大意:你的 任务是在一个n*n的棋盘上放置n个车,使n个车不能相互攻击(既都不同行也不同列),每个车都必须在一定的矩形范围内放置,输入四个值,分别为左上角和右下角的横纵坐标。按照输入顺序输出车的放置位置。解题思路:每个车的行和列没有 关系,也就可以分别讨论行和列。单独看行,就变成了一维问题,1-n范围内放置n个物品,每个物品都有自己的范围。贪心法。优先给结束早的区间安排位置即原创 2017-09-07 23:00:02 · 215 阅读 · 0 评论 -
BrokenLED HDU - 2661 暴力搜索
传送门题目大意:有一排LED灯, 每个可以显示一个数字,有七个灯组成一个LED灯, 给定n个LED灯,其中LED灯的某些小灯是坏掉的,先给出坏掉的灯,然后给n个灯,求出所有的可能的数字。解题思路:每一个灯都去试一次能不能是这个数字。把每个灯可能表示几个数字求出,组合的个数就是每个灯的可能数相乘。AC代码:#include #include #include #incl原创 2017-08-17 16:40:15 · 482 阅读 · 0 评论 -
codevs 2833 奇怪的梦境 拓扑排序
传送门:codevs2833奇怪的梦境题目大意:额···中文题···解题思路:拓扑排序, 就是遍历所有数的出度, 找出有没有环。 代码思路:遍历所有数的出度,将遍历到的数入度减一, 所有数的入度均为0时就可以将所有数都按下。AC代码:#include #include #include #include using namespace std;原创 2017-07-31 17:38:32 · 260 阅读 · 0 评论 -
CodeForces - 394B 逆推
题目链接:Very Beautiful Number题目大意:给定两个整数 p 和 x; 找出一个p 位的数 这个数要求最后一位移道首位 编程原来的数的x倍;注意不能出现前导0(就是首位不能为0);解题思路: 枚举最后一位 for(int i=1; i倒数第二位: A[p-1] = A[p] * x + c; 倒数第三位:A原创 2017-07-20 14:13:08 · 263 阅读 · 0 评论 -
Oulipo HDU - 1686 kmp算法
传送门题目大意:给定两个字符串,计算第一个字符串在第二个字符串中出现的次数。解题思路:直言不讳的kmpAC代码:#include #include #include using namespace std;int Next[100050];void kmp_pre(char s[], int len){ int i = 0, j = -1原创 2017-07-29 18:06:31 · 263 阅读 · 0 评论 -
并查集 POJ 1182 食物链
题目链接:食物链题目大意:存在三类动物, A,B, C三类; 关系是 A 吃 B , B 吃 C, C 吃 A;题目给定动物总数量N, 以及关系数 K然后给定K 条关系, 有两种说法 1: x 和 y 同类2: x 吃 y 答题思路:用三个并查集同时维护关系, A -原创 2017-07-21 15:25:58 · 267 阅读 · 0 评论 -
并查集 POJ-1703 Find them, Catch them
传送门:vjudge 或者原网址本题与食物连相似 传送门题目大意:警察抓捕罪犯,罪犯有两个帮派(龙帮和蛇帮。。。抓罪犯还要分帮派,难道是龙蛇混杂,龙帮不敢抓??), 让你写个程序分辨两个罪犯是不是属于一个帮派,输入 A 时判断两个罪犯是不是同一个帮派, 输入D 时说明两个罪犯不是同一个帮派的。AC 代码:#include #incl原创 2017-07-22 14:19:59 · 338 阅读 · 0 评论 -
Uva 1160 简单并查集
传送门不允许有环; 如果有环则拒绝接受数据并且计数+1 水题一个不做多说明AC 代码:#include #include using namespace std;int par[100050];int Rank[100050];void init(int n){ for(int i=0; i<n; i++) { par[i] =原创 2017-07-23 11:15:41 · 310 阅读 · 0 评论 -
Codeforces 526C Om Nom and Candies 完全背包
传送门题目大意:它要吃糖果,一共有两种糖果, red 和 blue ,红色的每个重量为wr, 享受为 hr, 蓝色的每个重量wb, 享受hb , 他能吃的总量不能超过 C , 想要最高的幸福指数;解题思路:一个for循环遍历每种的个数, 看到大神的代码,有个地方不明白, 为什么循环到10万就可以解决,后来想了想这么认为的:如果两个糖果重量相差1原创 2017-07-24 10:13:44 · 342 阅读 · 0 评论 -
CodeForces - 455A 01背包
传送门题目大意:输入一个序列的整数,进行删除操作, 如果删除 x 那么队列中所有的 x+1 和 x-1 (注意时值,不是下标,一开始理解错题意了,坑死....) 就要删除. 同时获得 x的个数乘以x的分数, 求出最高得分。 简单的01背包问题, 就是删除还是不删除当前数字,比较往前数两个加上但前的值 与前一个进行比较就好。一开始的A原创 2017-07-24 15:45:11 · 409 阅读 · 0 评论 -
例题1.5 蚂蚁 UVA - 10881 等效变换+排序
传送门题目大意:一根长度为L的杆上有N只蚂蚁,每只蚂蚁要么往左爬,要么往右爬,速度为1.两只蚂蚁相撞,同时掉头。杆子最左端为0,问T间时各蚂蚁的位置和方向。解题思路:两只蚂蚁相撞与穿过效果一样。因此我们直接计算蚂蚁相遇直接穿过的结果即可。但是我们需要记录每只蚂蚁的方向,其实我们按照穿过计算时,朝左的个数和朝右的个数以及顺序不会变,但是蚂蚁的位置变了,但是真正蚂蚁的相对位置没原创 2017-08-08 15:46:54 · 292 阅读 · 0 评论 -
CodeForces - 745B
传送门题目大意:给定一个图 ,确定能否通过平移整个图 使得两个一样的图拼接成一个矩形,不能旋转。注意是整个图移动,一开始理解错了`````思路:很简单的一个水题, 看一下这个图本身是不是矩形就可以,如果时矩形就能拼成矩形,否则不能。 查看图是否为矩形的思路: 遍历一遍,找到边界 最上面的行, 最下面行 最左边列 最右边列 在原创 2017-07-25 15:13:17 · 335 阅读 · 0 评论 -
CodeForces - 745A 字符串操作
传送门题目大意:给定一个字符串,字符串有小写字母组成,通过将最后一个字符移动到第一个,能组成多少种不同的字符串。超级水。。。。。不过这个题有个用string 的写法,很简单, 记一下string吧算是。AC代码:#include #include #include #include using namespace std;map mp;原创 2017-07-25 15:21:42 · 305 阅读 · 0 评论 -
HDU - 1203 01背包经典 从后往前
传送门题目大意:额。。中文题,都能看懂```向我这种英文白痴的也不多,还得看题目大意````汗!!!解题思路: 每个学校只能选一次,只有选或者不选,因此是 01背包, 题目要求只要有一个录取就行,不方便算概率, 直接算一个都不被录取, 找到最小值就好。 状态转移方程: 选这一件与不选这一件的概率也就是价值 进行比较。 遍历所有的重量(也就是本题的钱原创 2017-07-25 15:34:40 · 393 阅读 · 0 评论 -
Chloe and the sequence CodeForces - 743B
传送门题目大意:给定两个整数n , m; 一个数列,从1开始,每进行一次操作,把自己复制一次放到后面,并在中间添加一个没出现过的最小正整数, 操作n次后 第m个位置的数字是几。解题思路:数列有规律出现,找到最小的队列中出现的次数就好,递归问题。 题目发给定了错做次数,以及出现的位置,我们可以计算出操作n次后数列的长度, A[n] = A[n-1]原创 2017-07-25 15:46:41 · 346 阅读 · 0 评论 -
CodeForces - 510C Fox And Names 字符串拓扑排序
传送门题目大意:给定一个数字n, 输入n个字符串,根据字符串的顺序得出题目的字典序,比如第一个字符串为abef 第二个字符串为abdf, 则e的字典序在d之前。如果字符串中没有给定的字母,按a~z的顺序。最后输出题目中二十六个英文字母的字典序。解题思路:每个字符串进行逐个比较,找到两个字符串的不同的字母,将两个节点链接,形成一个有向图,然后拓扑排序。需要注意的是没出现原创 2017-08-02 12:23:32 · 328 阅读 · 1 评论 -
codevs 2488 绿豆蛙的归宿 拓扑+概率统计
传送门:codevs 2488 绿豆蛙的归宿解题思路:要求所有的期望,就要求出每个走每个路线的概率乘以路线的长度, 每条线的概率就是每个点的概率再除以出度。直接累加就可以。要计算每个点的概率就要遍历所有的入度。也就是说入度为零的时候这个点的所有概率都算上了,也就可以计算了。因此拓扑一下就可以。AC代码:#include #include #include #inc原创 2017-08-01 08:19:13 · 260 阅读 · 0 评论 -
旅行 The Trip, 2007 UVA - 11100 构造&输出技巧
传送门题目大意:n个背包,然后给n个背包的大小,然后把所有的包打包起来,(把小包放到大包里面),使打包起来的包最少,即:给定一个整数序列,找出尽量少的增序列,输出最少的序列个数,以及每个序列。解题思路:背包不能一样大,因此出现次数最多的那个包的个数就是总的打包数量maxsize,即最少序列个数maxsize。先排序,然后每隔maxsize取一个数,保证不会出现重复的情况。每个背包都比上一个原创 2017-09-10 22:59:56 · 228 阅读 · 0 评论