简单算法题
田地丈量
内存限制:512MB
时间限制:1s
提交:2946
解决:1221
题目描述
西西艾弗岛上散落着 nn 块田地。每块田地可视为平面直角坐标系下的一块矩形区域,由左下角坐标 (x1,y1)(x1,y1) 和右上角坐标 (x2,y2)(x2,y2) 唯一确定,且满足 x1<x2x1<x2、y1<y2y1<y2。这 nn 块田地中,任意两块的交集面积均为 00,仅边界处可能有所重叠。
最近,顿顿想要在南山脚下开垦出一块面积为 a×ba×b 矩形田地,其左下角坐标为 (0,0)(0,0)、右上角坐标为 (a,b)(a,b)。试计算顿顿选定区域内已经存在的田地面积。
输入
从标准输入读入数据。
输入共 n+1n+1 行。
输入的第一行包含空格分隔的三个正整数 nn、aa 和 bb,分别表示西西艾弗岛上田地块数和顿顿选定区域的右上角坐标。
接下来 nn 行,每行包含空格分隔的四个整数 x1x1、y1y1、x2x2 和 y2y2,表示一块田地的位置。
输出
输出到标准输出。
输出一个整数,表示顿顿选定区域内的田地面积。
样例输入
4 10 10
0 0 5 5
5 -2 15 3
8 8 15 15
-2 10 3 15
样例输出
44
提示
如图所示,选定区域内田地(绿色区域)面积为 4444。
子任务
全部的测试数据满足 n≤100n≤100,且所有输入坐标的绝对值均不超过 104104。
1 | import java.util.Scanner; |
垦田计划
内存限制:512MB
时间限制:1s
提交:2046
解决:459
题目描述
顿顿总共选中了 nn 块区域准备开垦田地,由于各块区域大小不一,开垦所需时间也不尽相同。据估算,其中第 ii 块(1≤i≤n1≤i≤n)区域的开垦耗时为 tit**i 天。这 nn 块区域可以同时开垦,所以总耗时 tTotaltTota**l 取决于耗时最长的区域,即:tTotal=max{t1,t2,⋯ ,tn}tTota**l=max{t1,t2,⋯,t**n}
为了加快开垦进度,顿顿准备在部分区域投入额外资源来缩短开垦时间。具体来说:
- 在第 ii 块区域每投入 cic**i 单位资源,便可将其开垦耗时缩短 11 天;
- 耗时缩短天数以整数记,即第 ii 块区域投入资源数量必须是 cic**i 的整数倍;
- 在第 ii 块区域最多可投入 ci×(ti−k)c**i×(t**i−k) 单位资源,将其开垦耗时缩短为 kk 天;
- 这里的 kk 表示开垦一块区域的最少天数,满足 0<k≤min{t1,t2,⋯ ,tn}0<k≤min{t1,t2,⋯,t**n};换言之,如果无限制地投入资源,所有区域都可以用 kk 天完成开垦。
现在顿顿手中共有 mm 单位资源可供使用,试计算开垦 nn 块区域最少需要多少天?
输入
从标准输入读入数据。
输入共 n+1n+1 行。
输入的第一行包含空格分隔的三个正整数 nn、mm 和 kk,分别表示待开垦的区域总数、顿顿手上的资源数量和每块区域的最少开垦天数。
接下来 nn 行,每行包含空格分隔的两个正整数 tit**i 和 cic**i,分别表示第 ii 块区域开垦耗时和将耗时缩短 11 天所需资源数量。
输出
输出到标准输出。
输出一个整数,表示开垦 nn 块区域的最少耗时。
样例输入1
4 9 2
6 1
5 1
6 2
7 1
样例输出1
5
样例输入2
4 30 2
6 1
5 1
6 2
7 1
样例输出2
2
提示
样例1解释
如下表所示,投入 55 单位资源即可将总耗时缩短至 55 天。此时顿顿手中还剩余 44 单位资源,但无论如何安排,也无法使总耗时进一步缩短。
i | 基础耗时tit**i | 缩减1天所需资源cic**i | 投入实际资源数量 | 实际耗时 |
---|---|---|---|---|
1 | 6 | 1 | 1 | 5 |
2 | 5 | 1 | 0 | 5 |
3 | 6 | 2 | 2 | 5 |
4 | 7 | 1 | 2 | 5 |
样例2解释
投入 2020 单位资源,恰好可将所有区域开垦耗时均缩短为 k=2k=2 天;受限于 kk,剩余的 1010 单位资源无法使耗时进一步缩短。
子任务
70%70% 的测试数据满足:0<n,ti,ci≤1000<n,t**i,c**i≤100 且 0<m≤1060<m≤106;
全部的测试数据满足:0<n,ti,ci≤1050<n,t**i,c**i≤105 且 0<m≤1090<m≤109。
1 |
区间最大值
内存限制:256MB
时间限制:1s
提交:203
解决:9
题目描述
给定一个nn个整数的序列AA,再给定数kk, 求长度为kk的连续子序列中出现次数为 11 的数中最大的是多少,如果没有符合要求的数,输出−1−1。
很明显长度为nn个数的序列的长度为kk的连续子序列有 n−k+1n−k+1个。
输入
第一行输入两个整数nn和kk。
第二行输入nn个数,代表序列AA。
其中: 1 ≤ nn ≤ 100000 , 1 ≤ kk ≤ nn , 1 ≤ Ai≤109A**i≤109
输出
输出 n−k+1n−k+1 个数,以空格隔开;
第一个数代表[1,k][1,k]这个连续子序列中出现次数为 11 的数中最大的。
第二个数代表[2,k+1][2,k+1]这个连续子序列中出现次数为 11 的数中最大的。
以此类推……
样例输入
5 3
1 4 4 3 3
样例输出
1 3 4
1 | import java.util.*; |
构造原理
内存限制:128MB
时间限制:1s
提交:61
解决:8
题目描述
原子核外电子可分为不同能层,能层可直接用数字1,2,31,2,3等表示。同一能层的电子又由于所含能量不同可分为不同能级,能级为s,p,d,fs,p,d,f。能级ss最多能容纳 22 个电子,pp 最多可容纳 66 个,dd 最多可容纳 1010 个,ff 最多可容纳 1414 个。第 11 层的 ss 能级就写成 1s1s,第 ii 个能层的能级数最多为 ii 个。
核外电子不一定是按从小数到大数,从 ss 到 ff 的顺序排布的。有构造原理来显示真实的排布顺序(见图)
现在,如果核外电子完全按照构造原理排布,输入给出核外电子数,请列出核外电子排布状况。
输入
正整数nn表示核外电子数。
输出
总共有电子能排布的能层数行。
第 ii 行按照能量从小到大顺序输出能层 ii 的每个有电子的能级及能级的电子数目,用空格隔开。
样例输入
19
样例输出
1s2
2s2 2p6
3s2 3p6
4s1
提示
数据范围
保证最多用到能级 ff , n≤120n≤120。
1 | import java.util.*; |
来不及了,只看了三道简单的,随缘吧。