青少年编程知识记录 codecoming

【题解】后缀表达式的值

【题目描述】



从键盘读入一个后缀表达式(字符串),只含有0-9组成的运算数及加(+)、减(—)、乘(*)、除(/)四种运算符。每个运算数之间用一个空格隔开,不需要判断给你的表达式是否合法。以@作为结束标志。

比如,16–9*(4+3)转换成后缀表达式为:16□9□4□3□+*–,在字符数组A中的形式为:

栈中的变化情况:



运行结果:-47

提示:输入字符串长度小于250,参与运算的整数及结果之绝对值均在264范围内,如有除法保证能整除。



【输入描述】

一个后缀表达式。

【输出描述】

一个后缀表达式的值。

【样例输入】

16 9 4 3 +*-@



【样例输出】

-47

标签: 数据结构

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

【题解】剔除相关数

【题目描述】

一个数与另一个数如果含有相同数字和个数的字符,则称两数相关。现有一堆乱七八糟的整数,里面可能充满了彼此相关的数,请你用一下手段,自动地将其剔除。

【输入描述】

每组数据前有一个N(<1000),表示跟随的整数P(0

【输出描述】

按从小到大的顺序输出非相关数,若没有非相关数,则输出None

【样例输入】

8  213 667 3 213 43 34 677 2  3  322 232 232  0

【样例输出】

2 3 667 677  None

标签: 模拟

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

【题解】发工资

【题目描述】

作为程序猿,最盼望的日子就是每月的9号了,因为这一天是发工资的日子,养家糊口就靠它了,呵呵

但是对于公司财务处的工作人员来说,这一天则是很忙碌的一天,财务处的小李最近就在考虑一个问题:如果每个员工的工资额都知道,最少需要准备多少张人民币,才能在给每位员工发工资的时候都不用员工找零呢?

这里假设程序猿的工资都是正整数,单位元,人民币一共有100元、50元、10元、5元、2元和1元六种。

【输入描述】

输入数据包含多个测试实例,每个测试实例的第一行是一个整数n(n<100),表示员工的人数,然后是n个员工的工资。

n=0表示输入的结束,不做处理。

【输出描述】

对于每个测试实例输出一个整数x,表示至少需要准备的人民币张数。每个输出占一行。

【样例输入】

3 1 2 3  0

【样例输出】

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

【C++图形化编程】飞机大战2——运动与碰撞检测

上一篇中,简单实现了飞机大战的基本框架,这篇文章继续完善,使其可以进行游戏。#include <graphics.h> #include <conio.h> #include <math.h> #include <stdio.h> // 引用 Windows Multimedia API #pragma comment(lib,"Win
作者:亿万年的星光 分类:趣味小程序 浏览:

【C++图形化编程】飞机大战1—基础资源导入与基本框架

0.前言前面几篇文章中,我们实现了flappy的小游戏,这篇文章中,我们尝试制作飞机大战的游戏。首先,效果图如下:基础资源导入下载图片及音乐资源:https://box356.lanzoui.com/ilIEfwg5lcb下载解压后的图片及音乐资源如下:2.游戏基础框架#include <graphics.h> #include <conio.h> #include <math.h> #include <st
作者:亿万年的星光 分类:趣味小程序 浏览:

【题解】Best Cow Fences

【题目描述】    给定一个长度为n的正整数序列A。求一个平均数最大的,长度不小于L的子序列。【输入描述】第一行,n和L;n个正整数,表示A。【输出描述】    一个整数,表示答案的1000倍(不用四舍五入,直接输出)。【样例输入】10 6  6 4 2 10 3 8 5 9 4 1【样例输出】6500【提

标签: 二分

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

【题解】愤怒的牛

【题目描述】

农夫 John 建造了一座很长的畜栏,它包括N(2<=N<100000)个隔间,这些小隔间依次编号为x1,x2,...xn(0<=xi<=1000000000)。但是,John的C(2<=C<=N)头牛们并不喜欢这种布局,而且几头牛放在一个隔间里,他们就要发生争斗。为了不让牛互相伤害。John决定自己给牛分配隔间,使任意两头牛之间的最小距离尽可能的大,那么,这个最大的最小距离是什么呢?

【输入描述】

第一行:空格分隔的两个整数N和C;

第二行---第N+1行:i+1行指出了xi的位置。

【输出描述】

        一个整数,最大的最小值。

【样例输入】

5 3  1 2 8 4 9

【样例输出】

3

【提示】

    把牛放在1,4,8这样的最小距离是3。

标签: 二分

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

CSP-J2021年普及组复赛T3——网络连接

【题目描述】TCP/IP 协议是网络通信领域的一项重要协议。今天你的任务,就是尝试利用这个 协议,还原一个简化后的网络连接场景。在本问题中,计算机分为两大类:服务机(Server)和客户机(Client)。服务机 负责建立连接,客户机负责加入连接。需要进行网络连接的计算机共有 n 台,编号为 1 ∼ n ,这些机器将按编号递增的顺 序,依次发起一条建立连接或加入连接的操作。每台机器在尝试建立或加入连接时需要提供一个地址串。服务机提供的地址串表示 它尝试建立连接的地址,客户机提供的地址串表

标签: cspj2021

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

CSP-J2021年普及组复赛T4——小熊的果篮

【题目描述】    小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依 次用正整数 1、2、3、……、n 编号。连续排在一起的同一种水果称为一个“块”。小熊 要把这一排水果挑到若干个果篮里,具体方法是:每次都把每一个“块”中最左边的水 果同时挑出,组成一个果篮。重复这一操作,直至水果用完。注意,每次挑完一个果篮 后,“块”可能会发生变化。比如两个苹果“块”之间的唯一桔子被挑走后,两个苹果 “块”就变成了一个“块”。请帮小
作者:亿万年的星光 分类:C++知识 浏览:

CSP-J2021年普及组复赛T2——插入排序

【题目描述】

插入排序是一种非常常见且简单的排序算法。

小 Z 是一名大一的新生,今天 H 老 师刚刚在上课的时候讲了插入排序算法。 假设比较两个元素的时间为 O(1),则插入排序可以以 O(n 2 ) 的时间复杂度完成长 度为 n 的数组的排序。不妨假设这 n 个数字分别存储在 a1, a2, · · · , an 之中,则如下伪 代码给出了插入排序算法的一种最简单的实现方式: 

这下面是 C/C++ 的示范代码

for (int i = 1; i <= n; i++)  	for (int j = i; j>=2; j‐‐)  		if ( a[j] < a[j‐1] ) {  			int t = a[j‐1];  			a[j‐1] = a[j];  			a[j] = t;  		}

这下面是 Pascal 的示范代码

for i:=1 to n do  	for j:=i downto 2 do  	 if a[j]<a[j‐1] then   		begin   			t:=a[i];   			a[i]:=a[j];    			a[j]:=t;   		end;

为了帮助小 Z 更好的理解插入排序,小 Z 的老师 H 老师留下了这么一道家庭作业: 

H 老师给了一个长度为 n 的数组 a,数组下标从 1 开始,并且数组中的所有元素均 为非负整数。小 Z 需要支持在数组 a 上的 Q 次操作,操作共两种,参数分别如下: 

1 x v : 这是第一种操作,会将 a 的第 x 个元素,也就是 ax 的值,修改为 v。保证 1 ≤ x ≤ n, 1 ≤ v ≤ 109。注意这种操作会改变数组的元素, 修改得到的数组会被保留,也会影 响后续的操作。.

 2 x : 这是第二种操作,假设 H 老师按照上. 面. 的. 伪. 代. 码. 对 a 数组进行排序,你需要 告诉 H 老师原来 a 的第 x 个元素,也就是 ax,在排序后的新数组所处的位置。保证 1 ≤ x ≤ n。注意这种操作不会改变数组的元素,排序后的数组不会被保留,也不会影响后续的操作。

H 老师不喜欢过多的修改,所以他保证类型 1 的操作次数不超过 5000。 

小 Z 没有学过计算机竞赛,因此小 Z 并不会做这道题。他找到了你来帮助他解决 这个问题。

【输入格式】

从文件 sort.in 中读入数据。 

输入的第一行包含两个正整数 n, Q,表示数组长度和操作次数。保证 1 ≤ n ≤ 8, 000, 1 ≤ Q ≤ 2 × 105。 输入的第二行包含 n 个空格分隔的非负整数,其中第 i 个非负整数表示 ai。保证 1 ≤ ai ≤ 109。 接下来 Q 行,每行 2 ∼ 3 个正整数,表示一次操作,操作格式见题目描述。

【输出格式】

输出到文件 sort.out 中。 对于每一次类型为 2 的询问,输出一行一个正整数表示答案。

【样例1输入】

3 4  3 2 1  2 3  1 3 2  2 2  2

【样例1输出】

1  1  2

【样例1解释】

在修改操作之前,假设 H 老师进行了一次插入排序,则原序列的三个元素在排序 结束后所处的位置分别是 3, 2, 1。

在修改操作之前,假设 H 老师进行了一次插入排序,则原序列的三个元素在排序 结束后所处的位置分别是 3, 1, 2。 注意虽然此时 a2 = a3,但是我们不能将其视为相同的元素。

【数据范围】

对于所有测试数据,满足 1 ≤ n ≤ 8, 000, 1 ≤ Q ≤ 2×105, 1 ≤ x ≤ n, 1 ≤ v, ai ≤ 109。 

对于所有测试数据,保证在所有 Q 次操作中,至多有 5000 次操作属于类型一。 各测试点的附加限制及分值如下表所示。



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