网站建设策划表网站建设导向明确

当前位置: 首页 > news >正文

网站建设策划表,网站建设导向明确,新手做网站做什么样的,网络销售哪个平台最好竞赛总览 CSDN 编程竞赛三十九期#xff1a;比赛详情 (csdn.net) 竞赛题解 题目1、圆小艺 最近小艺酱渐渐变成了一个圆滑的形状球#xff0c;小艺酱开始变得喜欢上球#xff01;小艺酱得到n个同心圆。小艺酱对着n个同心圆进行染色#xff0c;相邻的圆范围内不能有相同的…竞赛总览 CSDN 编程竞赛三十九期比赛详情 (csdn.net) 竞赛题解 题目1、圆小艺 最近小艺酱渐渐变成了一个圆滑的形状球小艺酱开始变得喜欢上球小艺酱得到n个同心圆。小艺酱对着n个同心圆进行染色相邻的圆范围内不能有相同的颜色相隔一层的圆颜色相同。小艺酱想知道两种颜色中最外层圆的那种颜色总共染了多少面积 #include cstdio #include algorithmint main () {double resu1t 0;int n;scanf (%d, n);double data [n];for (int i 0; i n; i) scanf (%lf, data [i]);std::sort (data, data n);for (int i n - 1; i -1; i - 2) {int i_1 i - 1;resu1t 圆周率 * (data [i] * data [i] - data [i_1] * data [i_1]);}return 0; } 圆的面积为Pi * (r ^ 2)同心圆的面积为Pi * (R ^ 2 - r ^ 2)。其中R为大圆半径r为小圆半径。 注意圆周率需要给到足够的长度否则计算出的结果精度不够千分位会卡一部分测试点。  题目2、近视的小张 小张和他的M个朋友来到了一个十分神奇的地方在这里有N个柱子每个柱子有两个属性高度Height、位置Pos。题目保证同一个位置不会有多个柱子。请你计算出每个小张的朋友能清晰看到的最远一个柱子的位置如果那个朋友一个柱子都没有清晰看到请输出-1。 1、当一个柱子b在另一个不比他低的柱子a的后面时P[b] P[a] H[b] H[a]这个柱子会被遮挡住也就不再能够被清晰地看到。 2、小张和他的朋友们在位置0休息时发现似乎朋友们能清晰看到的柱子数量并不相同。在他反复思考后他认为这可能是近视度数导致的于是他询问了每一个朋友的近视度数A。为了方便计算我们认为对于每个朋友来说对每一个柱子如果有P [i] A那么第 i 个柱子无法被清晰地看见。 此题由CSDN用户a23333a提供。 这道题目分为两步求解 鉴于总是有人恶意抄袭博主文章并且竞赛时也可能遇到之前出现过的题目博主会尽量将思路讲解得全面一些并减少代码含量。 1、第一步不考虑朋友的近视度数单独判断柱子是否被遮挡。 2、第二步单独判断每个朋友观察柱子的具体情况找出其能够观察到的最远柱子位置。 求解时需要考虑如下要点 1、创建一个柱子结构输入数据之后将柱子按照位置从近到远的顺序进行排序。 #include cstdio #include algorithmstruct node {int height;int pos;bool disvisible; };int cmp (node a, node b) {return a.pos b.pos; }int main () {scanf (%d %d, m, n);node data [n];for (int i 0; i n; i) scanf (%d, data [i].height);for (int i 0; i n; i) scanf (%d, data [i].pos);std::sort (data, data n, cmp);return 0; } 2、更新柱子的可视情况即结构体中的disvisible属性。这项属性的默认值为false如果柱子不可视将其置为true。 更新时需要特别注意题目中对遮挡判定条件的有关描述。 这段描述可以简化为如果当前柱子在一个柱子的后面并且高度未超过前面的柱子那么它就会被遮挡。也可以理解为前面较高的的柱子会挡住后面的柱子。特别是如果刚开始遇到的柱子九非常高那么它有可能把后面大部分甚至全部的柱子都挡住。 因此更新可视情况时需要动态维护最高柱子的高度。默认第一个柱子就是最高的柱子并且它肯定不会被挡住只需要从第二个柱子开始更新即可。 更新时先检查当前正在判断的柱子高度有没有超过之前记录的较高的柱子如果更高更新最大高度。这时当前这个柱子肯定可视因为它比前面最高的柱子还要高。否则这个柱子的高度没有超过前面的柱子那么它会被遮挡这时需要将disvisible置为true。 博主在竞赛时特别留意了一下这一步并且赛后发现很多人这道题目只通过了90%的测试点。其中原因之一很可能就是这个部分的写法导致的。 更新完成后将所有可视的柱子加入到一个列表中以备后续计算使用。 3、使用循环读入每个朋友的近视情况。当遇到新的朋友时根据其近视情况判断其能看到的最远柱子位置。 由于柱子已经按位置排好序因此上一步计算出来的可视柱子位置仍然是有序的。这一步可以直接将这部分数据拿来使用。 注意本题中定义的近视度数满足这样的规律近视情况越严重能看到的位置越近即近视度数数值越小。当柱子位置超过近视度数时柱子便无法被看到。这与现实中的标准有部分差异需要充分理解才能解决这道题目。 柱子的起始位置大于零意味着如果近视度数也为零那么对于这位朋友而言任何柱子都无法被看到。题目规定如果任何柱子都无法被看到输出-1。我们可以巧妙地利用哨兵来处理这个情况。上一步已经记录了可视柱子的位置只需要将-1插入到这个列表的首部即可。 对于每一位朋友可以默认其能看到的柱子是最远的那个可视柱子假设有n个可视柱子那么初始最远下标置为n。之后使用循环从前到后扫描每个柱子判断其能否被看到。注意由于加入了哨兵需要跨过其进行扫描因此起始下标不是零。对于每个柱子如果其位置大于近视度数那么更新能看到的最远柱子的下标并跳出循环。 题目要求输出最远柱子的位置由于柱子位置列表下标从零开始我们只需输出记录的最远柱子下标-1的那个数组成员即可。 例如能看到全部的柱子位置为 visible [n - 1]。 若只能看到一个柱子则循环至第二个柱子时就卡到判定条件并跳出循环这时输出位置为 visible [2 - 1]。 如果任何柱子也看不到位置为 visible [1 - 1]即 visible [0] -1。 题目3、小股炒股 已知n天后的股票行情现在已有的本金是m规定只能入手一次股票和抛售一次股票。最大收益是多少含本金 #include cstdioint main () {int n, m;scanf (%d %d, n, m);int price [n], award 0;for (int i 0; i n; i) scanf (%d, price [i]);for (int i 0; i n; i) {// calc awardNow;for (int j i 1; j n; j) {award max (award, awardNow);}}return 0; } 计算每一天的收益卖出收益 - 购入成本当收益超过历史最大收益时更新历史收益。 最后输出本金 历史最大收益即可。 题目4、买铅笔 P老师需要去商店买n支铅笔作为小朋友们参加编程比赛的礼物。她发现商店一共有三种包装的铅笔不同包装内的铅笔数量有可能不同价格也有可能不同。为了公平起见P老师决定只买同一种包装的铅笔。商店不允许将铅笔的包装拆开因此P老师可能需要购买超过n支铅笔才够给小朋友们发礼物。现在P老师想知道在商店每种包装的数量都足够的情况下要买够至少n支铅笔最少需要花费多少钱。 #include cstdioconst int size 3;int main () {int resu1t 0;int n;scanf (%d, n);int count [size], cost [size], price [size];for (int i 0; i size; i) {scanf (%d %d, count [i], cost [i]);// calc price [i];if (price [i] price [resu1t]) resu1t i;}return 0; } 题目规定只能买一种铅笔而不能混搭。因此可以使用循环来计算买每种铅笔花费的价格。 当价格比历史价格更低时则更新历史最低价格对应的铅笔类型。 完成对所有铅笔种类的计算之后输出最低价格即可。