顺序三元组 java_hihocoder-1550-顺序三元组
hihocoder-1550-顺序三元组
#1550 : 顺序三元组
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
给定一个长度为N的数组A=[A1, A2, ... AN],已知其中每个元素Ai的值都只可能是1, 2或者3。
请求出有多少下标三元组(i, j, k)满足1 ≤ i < j < k ≤ N且Ai < Aj < Ak。
输入
第一行包含一个整数N
第二行包含N个整数A1, A2, ... AN。(1 ≤ Ai ≤ 3)
对于30%的数据,1 ≤ N ≤ 100
对于80%的数据,1 ≤ N ≤ 1000
对于100%的数据,1 ≤ N ≤ 100000
输出
一个整数表示答案
样例输入6
1 3 2 1 2 3样例输出3
注意:
需要使用long long 类型来保存 ans。 oj特别需要注意这个!!!!
#include
const int MAXN = 100000 + 10;
int num[MAXN], dp[MAXN];
int main(){
int n;
long long tmp, ans;
while(scanf("%d", &n) != EOF){
for(int i=1; i<=n; ++i){
scanf("%d", &num[i]);
}
dp[0] = 0;
for(int i=1; i<=n; ++i){
if(num[i] == 1){
dp[i] = dp[i-1] + 1;
}else{
dp[i] = dp[i-1];
}
}
for(int i=1; i<=n; ++i){
if(num[i] != 2){
dp[i] = 0;
}
}
tmp = 0; ans = 0;
for(int i=1; i<=n; ++i){
tmp += dp[i];
if(num[i] == 3){
ans += tmp;
}
}
printf("%lld\n", ans );
}
return 0;
}
参考了discuss中的网友的答案,更加简洁。
#include
const int MAXN = 100000 + 10;
int num[MAXN];
int main(){
int n;
long long ans;
while(scanf("%d", &n) != EOF){
for(int i=1; i<=n; ++i){
scanf("%d", &num[i]);
}
ans = 0;
int l = 0, r = 0;
for(int i=1; i<=n; ++i){
if(num[i] == 3){
++r;
}
}
for(int i=1; i<=n; ++i){
if(num[i] == 1){
++l;
}else if(num[i] == 2){
ans = ans + l * r;
}else{
--r;
}
}
printf("%lld\n", ans );
}
return 0;
}
顺序三元组 java_hihocoder-1550-顺序三元组相关推荐
- 聊一聊顺序消息(RocketMQ顺序消息的实现机制)
本文来自:https://www.cnblogs.com/hzmark/p/orderly_message.html 当我们说顺序时,我们在说什么? 日常思维中,顺序大部分情况会和时间关联起来,即时间 ...
- 1.c++中初始化列表和构造函数初始化的区别是什么?2.类的成员变量的初始化顺序是按照声明顺序吗?
初始化列表和构造函数初始化的区别是什么? 初始化和赋值对内置类型的成员没有太大的区别,在成员初始化列表和构造函数体内进行,在性能和结果上都是一样的.只有一些需要注意的事项 初始化列表一般情况如下: D ...
- C++primer第九章 顺序容器 9.1 顺序容器概述 9.2容器库概览
一个容器就是一些特定类型对象的集合.顺序容器(sequentialcontainer)为程序员提供了控制元素存储和访问顺序的能力.这种顺序不依赖于元素的值,而是与元素加入容器 时的位置相对应.与之相对 ...
- Java前端顺序,java种初始化顺序
java类初始化顺序 java类初始化顺序 先父类的static-->父类的字段或对象-->父类的构造函数-->子类的static-->子类的字段或对象-->子类的构造函 ...
- 顺序表专题(1)——顺序表
顺序表 概念 基本形式 顺序表基本布局 元素外置的顺序表基本布局 图解 顺序表的实现 一体式实现 分离式结构 图解 元素存储区操作 元素存储区替换 元素存储区扩充 概念 需求:将一组(通常是同一类型) ...
- 最基本的顺序表(经典顺序表)
// 顺序表.cpp -- 最基本的顺序表(经典顺序表) // 完整的class.// List abstract class -- 线性表的C++抽象类声明 template<class El ...
- 静态顺序表和动态顺序表区别
静态顺序表的定义 #define MaxSize 10 //定义最大长度 typedef int ElemType; typedef struct{ Elemtype data[MaxSize]: / ...
- mysql 执行顺序 SQL语句执行顺序分析
最近在做一个数据库的大作业,算是复习了下MySql里面比较复杂的一些语句的用法,如Left Join之类的.在这里就不对具体语法进行记录了,希望能在以后经常用到,而不是隔好长时间用一次.在这里就记录下 ...
- 毕达哥拉斯三元组及本原毕达哥拉斯三元组
毕达哥拉斯定理:勾股定理又称商高定理.毕达哥拉斯定理,是平面几何中一个基本而重要的定理.勾股定理说明,平面上的直角三角形的两条直角边的长度(古称勾长.股长)的平方和等于斜边长(古称弦长)的平方.反之, ...
- 静态顺序表和动态顺序表区别的优缺点比较
静态顺序表 typedef int DataType;#define MAX_SIZE (100)typedef struct SeqList {DataType array[MAX_SIZE];in ...
最新文章
- QuartzCore框架-- iOS中的动画
- 将图像转换为8位单通道_数字图像存储
- python的nan,NaN,NAN
- Go语言中使用MySql数据库
- 学习笔记(17):Python网络编程并发编程-Process对象的其他属性或方法
- 常见的C语言字符串操作
- linux 上下文切换监控,[Linux] 查看进程的上下文切换pidstat
- mysql触发器的简单入门(二)
- Spring Boot 导出Excel表格
- Exchange 迁移 Public Folder 公共文件夹
- 程序员之道——编程也是一门艺术
- Cocos2d-x层(Layer)详解
- 洛谷 P1328 生活大爆炸版石头剪刀布 模拟
- Elasticsearch概念介绍文档路由与存储
- java 信号处理模块_GitHub - Astoros-Fung/JavaDsp: 数字信号处理(DSP)方面的Java封装,包含常用的一些处理方法,如滤波、信号变换等等。...
- 在百度地图中获取当前点击 位置的 经纬度 和 地址信息
- 【贪心 题解】 HDU 5773 The All-purpose Zero
- 治疗长期失眠的最好食物,不可错过!
- ubuntu 12.10起用g++4.7 编译C++11
- 第九章 数据库其他对象