- 博客(14)
- 收藏
- 关注
原创 ccf-csp 2017-12-01
题目: 给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。思路: 对长度为n的数字序列进行排序,最小的差值一定是在某相邻两数的差值,故可以逐个比较相邻两数之间的差值的大小#include <iostream>#include <algorithm>#include <vector>using namespace std;...
2018-02-26 10:09:44
291
原创 ccf-csp 2016-12-02 计算工资
题目:小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资。假设他一个月的税前工资(扣除五险一金后、未扣税前的工资)为S元,则他应交的个人所得税按如下公式计算: 1) 个人所得税起征点为3500元,若S不超过3500,则不交税,3500元以上的部分才计算个人所得税,令A=S-3500元; 2) A中不超过1500元的部分,税率3%; 3) A中超过1500元未
2017-11-25 16:09:19
428
原创 ccf-csp - 2016-12-01 中间数
题目:在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。 给定一个整数序列,请找出这个整数序列的中间数的值。解题思路:水题,只需要有点思路就能做出来,因为序列的中间数必须满足大于它的整数数量等于小于它的整数数量,故我们可以将序列进行排序,若中间
2017-11-25 11:02:11
503
原创 ccf-csp - 2017-09-02 公共钥匙盒
已经很久没有刷过题了,上一次更新博客还是两年前,哈哈,我想不是必须得通过csp认证我也不会再刷题了,emmmmm, 貌似要从头开始了题目:有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家。每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中。 钥匙盒一共有N个挂钩,从左到右排成一排,用来挂N个
2017-11-25 09:51:05
2591
原创 hdu2182 - Frog
题目大意:有一只青蛙,在一条长度为n的路上,总共可以跳k次,每次跳的t个单元(A思路分析:01背包的变形,dp[ i ][ j ] 为青蛙跳j次到达i位置可以吃到的最多的昆虫数,状态转移方程为dp[ i ][ j ] = max( dp[ i ][ j ] , dp[ t ][ j - 1 ] + p[ i ] ),需要注意的一点是青蛙的起点的昆虫数#include #include
2015-08-14 20:44:11
1104
原创 hdu1494 - 跑跑卡丁车 (01背包)
中文题,题目大意就不描述了,需要注意的坑点是使用加速卡时不能获得能量,还有就是要多组案例输入。。。一组案例输入不行。。。WA了好多发。。。思路分析:因为最多只能有280%的能量,没20%的能量看作一个单位,所以一共可以有15种状态,dp[ i ] [ j ]表示当前有j个单位的能量跑完i段的最小时间状态转移方程为:j dp[ i ][ j + 1 ] = min( dp[
2015-08-13 19:49:03
445
原创 uva10905 - Children's Game
题意:求n个数字连接所成的最大的那个数字,实际上就是n个数字对应字符串的一个字典序,两个数字字符串a和b,要么a+b>b+a,要么a+b#include #include #include using namespace std;string str[55];bool cmp(string a,string b){ return a+b>b+a;}int main()
2015-08-09 20:02:37
354
原创 hdu2191 — 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (多重背包)
题目大意:一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买。问用有限的资金最多能采购多少公斤粮食。思路分析:将多重背包问题转化为01背包,两种转化方法均不会超时,状态转移方程为 dp [ j ] = max ( dp [ j ] , dp [ j - p2 [ i ] ] + h2 [ i ] (j : n to p2[ i ] ),两种方法的代
2015-07-21 20:53:11
262
原创 hdu1114 — Piggy-Bank (完全背包)
题目大意:已知一个空存钱罐的重量,和存钱之后的重量,求可能的最小的钱的数目思路分析:完全背包有两个状态转移方程,一种时间复杂度为O(VNlog V/weight[i]),一种为O(VN),根据题目给出数据,第一种会超时,所以用第二种,第二种的状态转移方程为 dp[j]=min(dp[j],dp[j-w[i]]+p[i]) (其中j:w[i] to V),需要注意的是因为是求最小值,
2015-07-21 15:25:33
466
原创 hdu1203 — I NEED A OFFER! (01背包)
思路分析:动态转移方程 dp [ j ] = min ( dp [ j ] , dp [ j - cost [ i ] ] * pro [ i ] ) ,其中cost [ i ] 为学校 i 的申请费,pro [ i ] 为申请学校 i 成功的概率。申请学校不成功的最小概率即为至少得到一份 offer 的最大概率, dp [ j ] 在总金钱数额为 j 的情况下申请 i 所学校不成功的最小概率。其
2015-07-16 19:17:19
277
原创 hdu2602 — Bone Collector
基础01背包,需要注意的是输入时先输入骨头的价值,然后输入骨头的体积#include #include #include using namespace std;const int MAXN=1005;int v[MAXN];int w[MAXN];int dp[MAXN];int main(){ int t; cin>>t; while(t
2015-07-16 09:39:59
267
原创 hdu1864 — 最大报销额
题目大意:给出n张发票,每张发票可报销的类型只有 A、B、C三类,若有其他不予报销,其中可报销的每张发票总额不超过1000,单项消费金额不超过600,给出报销额度,问可报销的最大总额思路分析:该题花费即价值,在输入时进行筛选,不符合条件的发票不进行处理,符合条件的将该张发票的总金额计算出来,为方便处理,将所有涉及金额数目*100方程为 f [ j ] = max ( f [ j ]
2015-07-16 09:35:42
377
原创 hdu2546 — 饭卡 (01背包)
题目大意:食堂有n种菜,饭卡余额为m,当要购买一种商品前,若当前饭卡余额小于5,则购买不成功,反之则购买成功,即使购买后饭卡余额为负值,给出每种菜的价格和卡上余额,求最少可使卡上余额为多少思路分析:这一题中,需要注意的是花费即物品本身价值,还有一个 m f [ j ] = max ( f [ j ] , f [ j - cost [ i ] ] + cost [ i ] )
2015-07-16 09:23:26
255
原创 hdu2955 — Robberies (01背包)
题目大意:Roy去抢银行,问在给定的被抓住的概率下,Roy可以抢的金钱数额最多,且小于给定概率输入:第一行输入一个整数 T,为案例数,每组案例第一行输入给定概率 P 和银行数目 N,接下来 N 行输入该银行的钱数 Mj 和被抓概率 Pj思路分析:值得注意的一点是,要将可得金钱数目当作价值,将每个银行的金钱数当作花费,状态转移方程为 f [ j ] = max ( f [ j ] ,
2015-07-15 20:56:15
247
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人