青少年编程知识记录 codecoming

【题解】切割绳子

【题目描述】

有N条绳子,它们的长度分别为Li。如果从它们中切割出K条长度相同的绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位(直接舍掉2位后的小数)。

【输入描述】

第一行两个整数N和K(0<N<=10000, 0<K<=10000),接下来N行,描述了每条绳子的长度Li(0<Li<=100000.00)。

【输出描述】

切割后每条绳子的最大长度。

【样例输入】

4 11  8.02  7.43  4.57  5.39

【样例输出】

2.00
作者:亿万年的星光 分类:题解目录 浏览:

【题解】木材加工

【题目描述】

 木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有剩余),需要得到的小段的数目是事先给定的,切割时希望得到的小段越长越好。

      编写程序,输入原木的数目 N 和需要得到的小段的数目 K以及各段原木的长度,计算能够得到的小段木头的最大长度。

      木头长度的单位是 cm。原木的长度都是正整数,要求切割得到的小段木头的长度也是正整数。

例如有两根原木长度分别为11和21,要求切割成到等长的6段,很明显能切割出来的小段木头长度最长为5.

【输入描述】

第一行是两个正整数N和K(1 ≤ N ≤ 100000,1 ≤ K ≤ 100000000),N是原木的数目,K是需要得到的小段的数目。

接下来的N行,每行有一个1到100000000之间的正整数,表示一根原木的长度。

【输出描述】

能够切割得到的小段的最大长度。如果连1cm长的小段都切不出来,输出”0”。

【样例输入】

3 7  232  124  456

【样例输出】

114

标签: 二分

作者:亿万年的星光 分类:题解目录 浏览:

【题解】切割钢管

【题目描述】

小A是某工地的计算工程师。工地现有 n 根钢管,第 i 根钢管的长度为 ai

现在想用这 n 根钢管来做一个支撑用的柱子。我么可以切割这些钢管成为更短的钢管,但是不能缝合两根钢管。为了安全起见,柱子必须用 至少 k 根长度相同的钢管加上混凝土制成,并且要求钢管长度必须为 整数。

小A想知道,这个柱子最高能建成多高(钢管可以有剩余)。

【输入描述】

输入第一行一个整数  。

接下来一行输入 n 个空格隔开的整数 ,表示每根钢管的长度。

【输出描述】

输出最大的高度。

【样例输入1】

2 4  8 4

【样例输出1】

2

【样例输入2】

8 8  12 3 14 12 14 20 4 8

【样例输出2】

7
作者:亿万年的星光 分类:题解目录 浏览:

【STL】二分查找函数 lower_bound 和 upper_bound

一、 lower_bound【功能】在数组a中从a[begin]开始到a[end - 1]按照cmp函数来比较进行二分查找第一个大于等于k的数的地址,如果有第一个大于等于k的数则返回该数的地址,否则返回a[end]的地址。【头文件】algorithm【模板】lower_bound(a + begin, a + end, k, cmp); 首地址(a + begin) 必要 末地址
作者:亿万年的星光 分类:C++知识 浏览:

【STL】二分查找函数(算法)—binary_search

【说明】binary_search() 实现了一个二分查找算法。它会在前两个参数指定范围内搜索等同于第三个参数的元素。指定范围的迭代器必须是正向迭代器而且元素必须可以使用 < 运算符来比较。这个序列中的元素必须被排成升序序列或者至少相对于所查找元素是有序的。如果找到第三个参数,这个算法会返回布尔值 true,否则返回 false。【头文件】<algorithm>【语法格式】语法格式一共有两种1.  //查找 [first, last)&n
作者:亿万年的星光 分类:C++知识 浏览:

【题解】开花

【题目描述】

小A所在的学校又迎来了一年一度的开花活动,有 n 名学生被评为文学优秀奖,m 名学生被评为体育优秀奖。现已知两个奖项获奖同学的编号,每个同学都有唯一的编号。只有同时被评为文学优秀奖和体育优秀奖的学生才能开花,小A想知道开花的名单,请你帮他统计一下。

【输入描述】



第一行两个整数  ,分别表示文学优秀奖和体育优秀奖的获奖人数。

第二行 n 个不同的整数,表示获得文学优秀奖的同学编号。

第二行 m 个不同的整数,表示获得体育优秀奖的同学编号。

所有编号为正整数且不超过  。

【输出描述】



一行若干个空格分隔的整数,表示开花的同学编号,按文学优秀奖的先后次序输出。

【样例输入】

4 4  5 1 7 3  2 3 4 1

【样例输出】

 1 3

标签: 二分

作者:亿万年的星光 分类:题解目录 浏览:

【题解】牛的阵容

【题目描述】农民约翰雇一个专业摄影师给他的奶牛拍照。由于约翰的牛有很多品种,他喜欢他的照片包含每个品种至少一头牛。约翰的牛都站在数轴的不同地方,每一头牛由一个整数位置 X_i 以及整数品种编号 ID_i 表示。 约翰想拍一张照片,这张照片由数轴上连续的奶牛组成。照片的成本为这些奶牛最大和最小X坐标的差。 请帮助约翰计算最小的照片成本。保证没有两头牛在同一位置。【输入描述】第 1 行:牛的数量 N;第 2..1+N 行:每行包含 2 个以空格分隔的正整数 X_i 和 ID_i;
作者:亿万年的星光 分类:题解目录 浏览:

【题解】游戏

【题目描述】

上了半天的物理数学课,大家的脑子有点转不动了,下午的课表似乎看透了同学们的 心思,第一节就安排了体育课,CZ 中学的课表真是太有爱了,赞一个!午间休息后,文体 委员小 S 喊大家到教室外的走廊上排队,队形整好后小 S 带着大家走到了大操场上,体育 老师早就在那等着了,他先安排同学们做了五分钟的准备活动,接下来让大家玩一个有趣 的游戏,在这个游戏里,全班同学先散开站在操场上,同学们轮流玩这个游戏,从 1 号同学开始,然后是 2 号 3 号等等 (只要这个同学仍然参与这个游戏)。每次轮到玩的同学,就选择一个目前离他最近的同学,走过去拍他一下,然后回到原来的位置,那个被拍到的 同学就被排除在游戏之外了,必须立刻离开操场。当操场上只剩下一个同学时,游戏即告 结束,最后站在操场上的那个同学就是赢家。

R 老师 正和隔壁班的 F 主任津津有味地在场边看着同学们做游戏,为了添加一点乐 趣,R 老师就和 F 主任打赌哪个同学会赢?所以他想事先知道谁是赢家。R 老师希望你写 一个程序,读入同学们相互之间的距离,模拟出哪个同学最终会获胜。

【输入描述】

输入数据第一行为一个正整数 N, 表示在操场上玩游戏的人数,其中 1≤N≤1000, 接下来共有 N 行数据,每行有 N 个用空格隔开的整数,其中第 i 行第 j 列的数据表示操场 上编号为 i 的同学与编号为 j 的同学之间的距离。输入数据保证第 i 行第 i 列(主对角线 上的位置)的数据均为 0,其余数据均为正整数,且第 i 行第 j 列的数据一定等于第 j 行 第 i 列的数据,这意味着同学甲到同学乙的距离等于同学乙到同学甲的距离;操场上任意 两对同学之间的距离均不相同,也就是说上三角部分的正整数互不相同。

【输出描述】

输出数据仅有一行包含一个正整数表示获胜的同学的编号。



【样例输入】

4

0 1 6 3

1 0 4 5

6 4 0 2

3 5 2 0

【样例输出】

1

【样例解释】

1号同学先玩,走过去拍了离他最近的2号同学,2号同学被排除出游戏;接下去就直接轮到3号同学玩了,他走过去拍了4号同学,4号同学被排除出游戏;再次轮到1号同学时,他走过去拍了3号同学,3号同学被排除出游戏。最后1号同学获胜。

【数据范围】

30%的数据满足:n≤10

60%的数据满足:n≤100

100%的数据满足:n≤1000,所有数据不超过长整型范围

作者:亿万年的星光 分类:题解目录 浏览:

【题解】采药的最短路径

【题目描述】

少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶。孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处。迷阵由M×N个方格组成,有的方格内有可以瞬秒李逍遥的怪物,而有的方格内则是安全。现在李逍遥想尽快找到仙药,显然他应避开有怪物的方格,并经过最少的方格,而且那里会有神秘人物等待着他。现在要求你来帮助他实现这个目标。

下图 显示了一个迷阵的样例及李逍遥找到仙药的路线。

【输入描述】

第1行输入两个非零整数 M 和 N ,两者均不大于20。M 表示迷阵行数, N 表示迷阵列数。

接下来有 M 行, 每行包含N个字符,不同字符分别代表不同含义:

1) ‘@’:少年李逍遥所在的位置;

2) ‘.’:可以安全通行的方格;

3) ‘#’:有怪物的方格;

4) ‘*’:仙药所在位置。

【输出描述】

求李逍遥找到仙药需要穿过的最少的方格数目(计数包括初始位置的方块)。如果他不可能找到仙药, 则输出 -1。

【样例输入】

8 8  .@##...#  #....#.#  #.#.##..  ..#.###.  #.#...#.  ..###.#.  ...#.*..  .#...###

【样例输出】

10
作者:亿万年的星光 分类:C++知识 浏览:

【题解】小X玩游戏

【题目描述】

小X喜欢玩游戏。 

 这天,小X觉得传统的游戏都玩腻了,自己随手在草稿纸上画了一行N个格子作为棋盘, 制定了如下规则:格子从左到右依次编号为1到N,玩家初始位于格子1,初始前进方向为向右,游戏共进行M轮,第i轮玩家前进Ai格,若玩家到达格子N则改变前进方向为向左,若玩家到达格子1则改变前进方向为向右。 

小X想知道玩家最后会停在哪个格子,但这个游戏太漫长了,他已经玩得快睡着了,希望你帮帮他。

【输入描述】

第一行包含用一个空格隔开的两个整数N,M。 

接下来M行,第i行包含一个整数Ai。

【输出描述】

第一行包含一个整数,表示玩家最后停留的格子编号。

【样例输入】

3 2  2  3

【样例输出】

2

【提示】

样例说明

   玩家的路线为 1->2->3->2->1->2。

【数据范围】

  对于30%的数据,N=2,M≤10,Ai=1。

   对于60%的数据,N≤1000,M≤1000,Ai≤1000。

   对于 100%的数据,2≤N≤100000,1≤M≤100000,1≤Ai≤1000000000。

作者:亿万年的星光 分类:C++知识 浏览: