2018 07 14 题解

2018 07 14


T1

Description
给出一个长度为 n 的序列 A,求这个序列的最长上升子序列的长度。

Hint
O(NlogN)模板题,不赘述了

Code

#include <set>
#include <cmath>
#include <queue>
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
#define siz 100010
using namespace std;
int n, m, len;
int a[siz], dp[siz];

int sear(int dat) {
    int l = 0, r = len, mid, re;
    while(l <= r) {
        mid = (l + r) / 2;
        if(dp[mid] >= dat) r = mid - 1;
        else re = mid, l=mid + 1;
    }
    return re;
}

int main() {

    scanf("%d",&n);
    for(int i=1; i<=n; ++i) scanf("%d",&a[i]);
    dp[0] = -2147483647;
    for(int i=1; i<=n; ++i) {
      if(a[i] > dp[len]) dp[++len] = a[i];
      else {
          int j = sear(a[i]);
          dp[j + 1] = a[i];
      }
    }
    printf("%d",len);
    return 0;
}

T2

Description
给出一棵大小为 n 的树,根为 1。点有点权。给出 m 个操作或询问:

  1. 操作:节点 p 权值增加 w。
  2. 询问:两点(u,v)的路径点权和。

Hint

Code


T3

Description
给出一个长度为 n 的排列 A,求这个排列有多少个长度为奇数的子串中位数是 mid。

Hint
首先知晓概念:子串是连续的
既然是长度为奇数的子串,中位数为mid,那一定是以mid为中位数的
又因为子串是连续的,所以我们只要以mid为界向两边延伸,如果大于mid的数和小于mid的数数量相等,这一串就符合题意.
这里就有一个普通的优化,记大于mid的数为+1,小于mid的为-1,mid为0
向左累加,统计累计和为i的个数为L[i],同理向右,统计r[i]
答案即为$\sum {L[i]*R[-i]}$
注意 C++不能开负数组

Code

#include <set>
#include <cmath>
#include <queue>
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
#define mid 1000000
#define siz 2000100
using namespace std;
int n, m, pos, cntl, cntr;
int a[siz], l[siz], r[siz];
long long ans;
int main() {

    scanf("%d%d",&n,&m);
    for(int i=1; i<=n; ++i) {
        scanf("%d",&a[i]);
        if(a[i] < m) a[i] = -1;
        else if(a[i] == m) { pos = i; a[i] = 0;}
        else a[i] = 1;
    }
    for(int i=pos; i; i--) {
        cntl += a[i];
        l[cntl + mid] ++;
    }
    for(int i=pos; i<=n; ++i) {
        cntr += a[i];
        r[cntr + mid] ++;
    }
    for(int i=-(n-1); i<n; ++i) ans += (l[mid + i] * r[mid - i]);
    printf("%ld",ans);
    return 0;
}

?

原文地址:https://www.cnblogs.com/LonelyRyan/p/9315913.html

时间: 2024-08-29 00:02:08

2018 07 14 题解的相关文章

使用Vue.js初次真正项目开发-2018/07/14

一.组件化 使用Vue.js进行开发,按照MVVM模式,围绕数据为核心,进行开发. 开发过程根据业务和功能组件化,组件化一方面让我们开发思路更加清晰,另一方面对于数据的处理和控制变得更加简单,毕竟一个大功能交给一个组件去实现,总是会显得很复杂,但是将大功能进行细分,交给多个人,每个人负责不同的小功能,就会变得清晰简单. 1. 父子组件数据交互通过prop和事件来实现双向数据绑定. 父组件传递到子组件的prop数据,需要在子组件的props属性中进行注册,意为预期传入的数据. 然后子组件不能直接在

Murano Weekly Meeting 2015.07.14

2015.07.14 会议摘要 主持人:Kirill Zaitsev, core from Mirantis periodic nightly builds,然后通过mailing List发布出来,最终没有结论通过哪一个mailingList发布出来 1.yaql1.0 BP Action: kzaitsev从slagun处接手yaql1.0 BP with client and dashboard tasks. JS linting jobs (kzaitsev_mb, 17:32:05)

Python学习之路—2018/6/14

Python学习之路-2018/6/14 1.浏览器与服务器 浏览器向服务器发送请求的过程为请求过程,服务器向浏览器响应的过程为响应过程. 2.简单的web应用程序 import socket sock = socket.socket() sock.bind(("100.113.14.43", 8080)) sock.listen(5) with open("index.html", "r") as f: # 先将样式写入html文件中,然后再读

AI Summit(2018.07.19)

AI Summit 时间:2018.07.19地点:北京丽都皇冠假日酒店 原文地址:https://www.cnblogs.com/xuefeng1982/p/10331578.html

[2018/11/14] Java学习

在网上下载了一个用Java实现的数据结构的视频, 看了前三个视频, 感觉收获很大, 今天花了接近三小时在Java的数据结构上. 课程的目录如下: 第01讲:数组第02讲:简单排序第03讲:栈和队列第04讲:链表第05讲:双端链表和双向链表第06讲:递归的应用第07讲:递归的高级应用第08讲:希尔排序第09讲:快速排序第10讲:二叉树的基本概念第11讲:二叉树的基本操作第12讲:遍历二叉树第13讲:删除二叉树节点第14讲:红黑树第15讲:哈希表第16讲:开放地址法第17讲:链地址法第18讲:图的基

【GDOI】2018题目及题解(未写完)

我的游记:https://www.cnblogs.com/huangzihaoal/p/11154228.html DAY1 题目 T1 农场 [题目描述] [输入] 第一行,一个整数n. 第二行,n个整数\(a_i\) [输出] 一个数,最多可以分成几块. [样例输入] 6 1 1 2 1 2 1 [样例输出] 2 [数据范围限制] T2 密码锁 [题目描述] [输入] 输入文件共两行,第一行有两个数字n,m,第二行为一个长为n的数组\(a_1,a_2, ... ,a_n\) [输出] 输出文

BUPT Summer Training #7 for Grade 14 题解

A. CodeForces 396C 题意就不描述啦. 对于第一种操作 1 v x k,我们可以给v的子树全部加上(x+depth[v]*k)的值. 对于第二种操作 2 v.查询每个节点的值之后,只需要在减去depth[v]*K即可得到答案了.里面的K是对v这个节点有影响的k的和. 自己在纸上推推公式,很容易就能知道为何是对的了 这里用两个树状数组即可维护, 当然增加整棵子树的操作就是预先处理dfs序,将树转化为线性,然后在区间操作即可. 这里的区间操作可以用线段树,也可以用树状数组.当然树状数

Pygame初步-AlienInvasion部分代码 2018/07/20

AlienInvasion.py 1 """ 2 BlackAlien名称是因为飞船是黑色的 3 该文件是alien invasion的主程序 4 """ 5 6 from settings import Settings 7 from ship import Ship 8 from game_function import * 9 from pygame.sprite import Group 10 from bullet import * 1

百度之星2018资格赛1002题解

作为退役的老人家来光顾光顾百度之星. 据说资格赛水过一道题就行...就写那个签到题吧.orz 题目糊上,,, 度度熊的字符串课堂开始了!要以像度度熊一样的天才为目标,努力奋斗哦! 为了检验你是否具备不听课的资质,度度熊准备了一个只包含大写英文字母的字符串 A[1,n]=a1a2?anA[1,n]=a?1??a?2???a?n??,接下来他会向你提出 qq 个问题 (l,r)(l,r),你需要回答字符串 A[l,r]=alal+1?arA[l,r]=a?l??a?l+1???a?r?? 内有多少个