10.14
DDL数据库操作 show databases://查看当前有哪些数据库 create database 数据库名;//创建数据库 use 数据库名//切换到某一个数据库 select database()//查看当前处于哪一个数据库 drop database 数据库名//删除该数据库 DDL表操作 show tables //输出所有的表 create table 表名(字段 字段类型,字段 字段类型 最后一个不加逗号) desc 表名//查看当前表有哪些字段 show create table 表名//查询该表建表语句 alter table 表名 add/modify/change/drop/rename to drop table 表名//删除表
I 或可的作战计划
作者 或可
单位 石家庄铁道大学
题目描述
在召唤师峡谷的中路上,矗立着 n 座防御塔,每座防御塔的高度各不相同。
防御塔按顺序排列,构成了一条神秘的“防线强度分布图”。
其中某一段防御区域的防御强度等于该区间中最低防御塔的高度与区域长度的乘积。
这时,或可提出了一个问题——在整条中路上,哪一段连续的防御区域最难被突破?
换句话说,请你求出中路上能形成的最大连续防御强度: max(区间宽度×区间内最矮塔的高度)
如下图所示
878bc31d94c00a3ee46faa56d380d394.png
输入格式
格式如下:
n
h1 h2 h3 ... hn
其中:
n 表示防御塔数量(1≤n≤10⁵);
hi 表示第 i 座防御塔的高度(0≤hi≤10⁹)。
输出格式
对于每组数据,输出一行,
表示中路上可形成的最大连续防御强度。
输入样例#1:
7
2 1 4 5 1 3 3
输出样例#1:
8
输入样例#2:
4
1000 1000 1000 1000
输出样例#2:
4000
样例解释:
878bc31d94c00a3ee46faa56d380d394.png
第一组中,选择第 3~4 座防御塔:
最矮塔高度 = 4,宽度 = 2,防御强度 = 4 × 2 = 8;
第二组中,四座塔等高:
高度 = 1000,宽度 = 4,防御强度 = 1000 × 4 = 4000。
include
include
define int long long
using namespace std;
const int N=1e5+10;
int a[N],b[N];
const int M=1e9+10;
vector
signed main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
b[i]=1;
for(int i=1;i<=n;i++)
{
int j=i,k=i;
while(a[--j]>=a[i]&&j>=1)
{
if(a[j]>=a[i])b[i]++;
else break;
}
while(a[++k]>=a[i]&&k<=n)
{
if(a[k]>=a[i])b[i]++;
else break;
}
}
// for(int i=1;i<=n;i++)
// cout<<b[i]<<" ";
// cout<<endl;
for(int i=1;i<=n;i++)
{
res.push_back(a[i]*b[i]);
}
sort(res.begin(),res.end());
cout<<res.back()<<endl;
return 0;
}
暴力 每个列都遍历 如果两边都比自己高就停止 负责就往两边扩 遍历一遍 将乘积放到vector中 最后排序找到最大值输出即可
浙公网安备 33010602011771号