青少年编程知识记录 codecoming

【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++知识 浏览:

【题解】最短路径问题

【题目描述】

平面上有n个点(n≤100),每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。

若有连线,则表示可从一个点到达另一个点,即两点间有通路,通路的距离为两点间的直线距离。现在的任务是找出从一点到另一点之间的最短路径。

【输入描述】

共n+m+3行,其中:

第一行为整数n。

第2行到第n+1行(共n行) ,每行两个整数x和y,描述了一个点的坐标。

第n+2行为一个整数m,表示图中连线的个数。

此后的m 行,每行描述一条连线,由两个整数i和j组成,表示第i个点和第j个点之间有连线。

最后一行:两个整数s和t,分别表示源点和目标点。

【输出描述】

一行,一个实数(保留两位小数),表示从s到t的最短路径长度。

【样例输入】

5   0 0  2 0  2 2  0 2  3 1  5   1 2  1 3  1 4  2 5  3 5  1 5

【样例输出】

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

【算法】最短路径算法——Floyed-Warshell算法

如下图所示,我们把边带有权值的图称为带权图。边的权值可以理解为两点之间的距离。一张图中任意两点间会有不同的路径相怜。最短路径就是指连接两点的这些路径中最短的一条。【注意】边的权值可以为负。当出现负边权时,有些算法不适用。Floyed-Warshall算法    简称Floyed(弗洛伊德)算法,是最简单的最短路径算法,可以计算出图中任意两点间的最短路径。Floyed的时间复杂度是N3,适用于出现负边权的情况。【算法描述】(a)初始化:点u、v如果有边相怜,则dis[u][v]
作者:亿万年的星光 分类:算法 浏览:

EasyX小游戏—双人反弹球

参考代码:#include <conio.h> #include <graphics.h> #include<windows.h> #define High 480  // 游戏画面尺寸 #define Width 640 // 全局变量 int ball_x,ball_y; // 小球的坐标 int bal
作者:亿万年的星光 分类:趣味小程序 浏览: