摘要:
A 切蛋糕 大意: 现在有一个蛋糕,需要分给k个人,每次操作可以将一个蛋糕分为2份,还可以选择一些蛋糕打包为一份,最后需要打包出k份,使得每一份的蛋糕量为1/k,误差不大于1e-10,全部操作需要在6000步内完成‘ k保证不大于2e10 思路: 直接将所有的蛋糕分为1/1e-10,这样需要的操作数 阅读全文
摘要:
A. Remove Smallest 大意: 给出n个数,每次可以选择两个差小于等于1的数,然后删掉其中的任意一个,问最后能不能只剩下一个元素 思路: 直接看有没有两个点的差大于2即可 #include <bits/stdc++.h> using namespace std; const int N 阅读全文
摘要:
A. Yet Another Two Integers Problem 大意: 给出两个数a和b,对于a每次可以加上或者减去1到10里的任意一个数 问多少次操作后可以得到b 思路: 直接算abs(a-b)/10向上取整即可 #include <bits/stdc++.h> using namespa 阅读全文
摘要:
A. Floor Number 大意: 第一层有2个房间,其它层都有x个房间,问第n个房间在第几层 思路: 向上取整即可 #include<bits/stdc++.h> using namespace std; const int N = 1e6 + 5; typedef long long LL; 阅读全文
摘要:
A. Cards for Friends 大意: 给出纸片长度和宽度w与h,问能否将其分为大于等于n个小纸片 一个纸片如果一条边为偶数,那么可以将其分为两个小纸片 思路: 算出最多能分成多少小纸片即可 #include<bits/stdc++.h> using namespace std; cons 阅读全文
摘要:
A. Replacing Elements 大意: 给出n个数,以及一个数d,可以对这n个数进行任意次操作,每次操作可以选互不相同的三个值i j k,然后令$a_i=a_j+a_k$ 问能否在任意次操作后,使得每个数都小于等于d 思路: 先看是不是都小于等于d,如果都小于等于d直接输出yes 否则的 阅读全文
摘要:
A. Wizard of Orz 大意: 有n个时钟,都从0开始计时,每秒都会集体+1,如果当前是9,那么下一秒会变成0 现在可以在任意时间选择一个位置,使这个位置上的时钟停下来,然后过一秒钟后,相邻两个时钟会停下来,再过一秒钟后,再向外的两个时钟会停下来..... 最后全部的时钟停下来后,所有的数 阅读全文
摘要:
A Wowoear 大意: 思路: B Mine Sweeper II 大意: 输入两个扫雷的地图,要求只改变(m*n/2)个点,使得第二个图上面每一个点的数字和与第一个图相同 思路: 这个题太cf了.... 想了很久最后发现直接将原图翻转,点变成叉 叉变成点,然后直接在原图和翻转的图上修改即可,这 阅读全文
摘要:
CodeForces 55D Beautiful numbers 大意 : 给出n和m,求出n和m之间的美丽数的数量。 美丽数的定义是每个数位上的数都能整除这个数 思路: 首先需要知道的是,一个数能被每个数位整除,那么它能被所有数位的lcm整除 其次,因为1到9的lcm为2520,那么判断一个数能否 阅读全文
摘要:
A Takoyaki 大意: 一次可以做x个饼,每次花t分钟,问做n个饼花多少分钟 思路: 向上取整即可,注意要用double强制转换一下 #include <bits/stdc++.h> using namespace std; typedef long long LL; typedef pair 阅读全文
摘要:
HDU 1024 Max Sum Plus Plus 大意: 从一序列中取出若干段,这些段之间不能交叉,使得和最大并输出。 思路: 动态规划 首先我们可以列出最基本的状态转移方程: \(dp[i][j] = max( dp[i][j-1] + a[j] , dp[i-1][k] + a[j ]) i 阅读全文
摘要:
大意: 给出n个数,将这个数列修改为不增序列或者不减序列,需要的最小代价是多少(每次修改的代价为修改前后的差的绝对值) 思路: 贪心的想法是每次修改必然修改到原数列中存在的数,因为不这样修改必然会修改多了。 然后先考虑修改到不减序列,那么可以先将a数组排序,得到b数组,然后$dp[i][j]$代表将 阅读全文
摘要:
POJ 3616 Milking Time 大意: m个牛需要挤奶,他们都有一个开始时间结束时间以及价值,对于每只牛,挤完奶需要休息k分钟,最后问能挤多少价值的奶。 思路: 排序后从左到右更新即可 #include <math.h> #include <stdio.h> #include <stri 阅读全文
摘要:
HDU 2859 Phalanx 大意: 给出一个矩阵,要求输出最大的 延左下到右上的对角线对称的 矩阵大小 思路: $now[i][j]\(代表以\)(i,j)$为左上角的长度为k矩阵是否对称,那么它可以由$pre[i-1][j]$和$pre[i][j-1]$转移过来,$pre[i][j]\(代表 阅读全文
摘要:
大意: 给出n个数,每次只能从剩下的数里面取第一个数或者最后一个数,价值是$a[i]*k$,k为第几次取,问最大价值和是多少 思路 区间dp,$dp[i][j]$代表从剩下第i个数和到第j个数时,能取到的最大值 #include <math.h> #include <stdio.h> #includ 阅读全文
摘要:
POJ 1661 Help Jimmy 大意: 一个小球从$(x,y)$位置落下,下落速度恒定为1,当落到一个平台时可以向左也可以向右走,速度也是1,走到边缘时继续下落,每次下落距离不能超过k米,现在给出n个平台的左右边缘位置和高度,问小球最快多久能落到地面 思路: 首先将平台按照高度排一下序,然后 阅读全文
摘要:
大意: n个候选人,从中选出m个人。 控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0到20。选出的m个人,必须满足辩方总分和控方总分的差的绝对值最小。如果有多种选择方案的辩方总分和控方总分的之差的绝对值相同,那么选辩控双方总分之和最大的方案即可。 思路: $dp[i][k]$代表选了 阅读全文
摘要:
大意: 给出n个老鼠的体重x和速度y,要求找出最多的一组老鼠,使他们严格符合体重上升,速度下降 思路: 先按照体重排一下序,然后求最长下降子序列即可,不过需要记录路径,开一个pre数组即可 #include <bits/stdc++.h> using namespace std; const int 阅读全文
摘要:
HDU 1260 Tickets 大意: 给出n个人买票的时间以及他们每个人和下一个人合买双人票的时间,问最早什么时候能卖完票 思路: $dp[i]$代表前i个人买完票需要多久,那么可以从$dp[i-2]$转移过来,也可以从$dp[i-1]$转移过来 #include <bits/stdc++.h> 阅读全文
摘要:
大意: 有n个馅饼在不同的时间会落到0到10的区间内,初始位置为5,每秒只能移动一米,问最多能接到多少馅饼 思路: 既可以正着写也可以反着写,正着写的话需要判断能否达到这个点,反着写就无所谓了 正着写: #include <bits/stdc++.h> using namespace std; co 阅读全文