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-顺序三元组相关推荐

  1. 聊一聊顺序消息(RocketMQ顺序消息的实现机制)

    本文来自:https://www.cnblogs.com/hzmark/p/orderly_message.html 当我们说顺序时,我们在说什么? 日常思维中,顺序大部分情况会和时间关联起来,即时间 ...

  2. 1.c++中初始化列表和构造函数初始化的区别是什么?2.类的成员变量的初始化顺序是按照声明顺序吗?

    初始化列表和构造函数初始化的区别是什么? 初始化和赋值对内置类型的成员没有太大的区别,在成员初始化列表和构造函数体内进行,在性能和结果上都是一样的.只有一些需要注意的事项 初始化列表一般情况如下: D ...

  3. C++primer第九章 顺序容器 9.1 顺序容器概述 9.2容器库概览

    一个容器就是一些特定类型对象的集合.顺序容器(sequentialcontainer)为程序员提供了控制元素存储和访问顺序的能力.这种顺序不依赖于元素的值,而是与元素加入容器 时的位置相对应.与之相对 ...

  4. Java前端顺序,java种初始化顺序

    java类初始化顺序 java类初始化顺序 先父类的static-->父类的字段或对象-->父类的构造函数-->子类的static-->子类的字段或对象-->子类的构造函 ...

  5. 顺序表专题(1)——顺序表

    顺序表 概念 基本形式 顺序表基本布局 元素外置的顺序表基本布局 图解 顺序表的实现 一体式实现 分离式结构 图解 元素存储区操作 元素存储区替换 元素存储区扩充 概念 需求:将一组(通常是同一类型) ...

  6. 最基本的顺序表(经典顺序表)

    // 顺序表.cpp -- 最基本的顺序表(经典顺序表) // 完整的class.// List abstract class -- 线性表的C++抽象类声明 template<class El ...

  7. 静态顺序表和动态顺序表区别

    静态顺序表的定义 #define MaxSize 10 //定义最大长度 typedef int ElemType; typedef struct{ Elemtype data[MaxSize]: / ...

  8. mysql 执行顺序 SQL语句执行顺序分析

    最近在做一个数据库的大作业,算是复习了下MySql里面比较复杂的一些语句的用法,如Left Join之类的.在这里就不对具体语法进行记录了,希望能在以后经常用到,而不是隔好长时间用一次.在这里就记录下 ...

  9. 毕达哥拉斯三元组及本原毕达哥拉斯三元组

    毕达哥拉斯定理:勾股定理又称商高定理.毕达哥拉斯定理,是平面几何中一个基本而重要的定理.勾股定理说明,平面上的直角三角形的两条直角边的长度(古称勾长.股长)的平方和等于斜边长(古称弦长)的平方.反之, ...

  10. 静态顺序表和动态顺序表区别的优缺点比较

    静态顺序表 typedef int DataType;#define MAX_SIZE (100)typedef struct SeqList {DataType array[MAX_SIZE];in ...

最新文章

  1. QuartzCore框架-- iOS中的动画
  2. 将图像转换为8位单通道_数字图像存储
  3. python的nan,NaN,NAN
  4. Go语言中使用MySql数据库
  5. 学习笔记(17):Python网络编程并发编程-Process对象的其他属性或方法
  6. 常见的C语言字符串操作
  7. linux 上下文切换监控,[Linux] 查看进程的上下文切换pidstat
  8. mysql触发器的简单入门(二)
  9. Spring Boot 导出Excel表格
  10. Exchange 迁移 Public Folder 公共文件夹
  11. 程序员之道——编程也是一门艺术
  12. Cocos2d-x层(Layer)详解
  13. 洛谷 P1328 生活大爆炸版石头剪刀布 模拟
  14. Elasticsearch概念介绍文档路由与存储
  15. java 信号处理模块_GitHub - Astoros-Fung/JavaDsp: 数字信号处理(DSP)方面的Java封装,包含常用的一些处理方法,如滤波、信号变换等等。...
  16. 在百度地图中获取当前点击 位置的 经纬度 和 地址信息
  17. 【贪心 题解】 HDU 5773 The All-purpose Zero
  18. 治疗长期失眠的最好食物,不可错过!
  19. ubuntu 12.10起用g++4.7 编译C++11
  20. 第九章 数据库其他对象

热门文章

  1. ffmpeg转换格式
  2. 性能测试工具Gatling
  3. 如何保护移动应用程序安全–移动应用程序安全检查表
  4. 学习python课程_想学习Python吗? 这是我们的免费4小时互动课程
  5. 浅谈BP神经网络的Matlab实现
  6. Python高级——Web静态服务器(面向对象)
  7. linux管理之磁盘信息和进程管理
  8. 如何在网上获取国际、国内的学术会议消息
  9. ASP.Net请求处理模式
  10. 【opencv 学习】【常用的图像卷积核】