首页 > 其他分享 >济南 CSP-J Day 4

济南 CSP-J Day 4

时间:2023-07-27 20:44:38浏览次数:56  
标签:柱子 int 高度 hzh CSP MAXN 出现 Day 济南

Solution

T1 出现次数

原题链接

4102: 出现次数

简要思路

利用类似前缀和的 “后缀和” 来记录下每个数后面有几个未重复出现的数,定义一个 \(f\) 数组来判断是不是第一次出现(实现去重)。

完整代码

#include<bits/stdc++.h>
#define int long long 
using namespace std;
const int MAXN=1e5+5;

int n,q;
int f[MAXN];//判断是否是第一次出现
int hzh[MAXN];//后缀和
int a[MAXN];

signed main(){
	cin>>n>>q;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	
	for(int i=n;i>=1;i--){//倒序遍历
		if(f[a[i]]==0){//如果是第一次出现
			hzh[i]=hzh[i+1]+1;
			f[a[i]]=1;//标记已经出现
		}
		else{
			hzh[i]=hzh[i+1];
		}
	}
	
	while(q--){
		int x;
		cin>>x;
		cout<<hzh[x]<<endl;//直接输出就行
	}
	
	return 0;
}

T2 组模拟赛

原题链接

4103: 组模拟赛

处理出每个操作来看能刷到什么高度(也就是 \(K\) 个数的最小值),ST 表或单调队列。
看一个柱子的最大高度是经过该柱子的所有区间的最大值。
用贪心,在保证 \(1~i\) 已经到达了最大高度的前提下,让后面的柱子经可能得高。
如果未到达最大高度,我们就要进行多一次操作,但是要保证对后边的柱子影响越多。
在高度最大的条件下位置最右的区间。
记录延伸到了哪,高度是多少。
\(a_{i+1}=h,i+1<p\),如果不满足就向后遍历,如果不符合就让答案加一并增加一个区间

标签:柱子,int,高度,hzh,CSP,MAXN,出现,Day,济南
From: https://www.cnblogs.com/CheZiHe929/p/17585967.html

相关文章

  • 集训Day 4
     比赛开始,先看了一眼A题,great!这个数据写一个DFS就可以过100%于是就开始写DFS但是一直爆,数组也没越界,也没开太大,我就十分奇怪,于是就这样调了大约十来分钟发现是因为遍历器的问题(我已经因为遍历器炸了2次了,再也不用遍历器了QwQ)将遍历器换成正常的for循环就过了(get100pt)。然后......
  • Day06-25 接口
    接口普通类:只有具体实现抽象类:具体实现和规范(抽象方法)都有!接口:只有规范!自己无法写方法~专业的约束!约束和实现分离:面向接口编程~接口就是规范,定义的是一组规则,体现了现实世界中“如果你是...则必须能...”的思想。如果你是天使,则必须能飞;如果你是汽车,则必须能跑;如果......
  • CSP 模拟 6
    T1排序基本是原题CF1375E好像是简单题,考虑这个排列\(\pi\)的逆排列\(\pi^{-1}\)(如果排列是\(a_i\),则逆排列为\(b_{a_i}=i\)),因为逆序对的定义是序列编号和数值大小关系不一样,所以在逆排列中逆序对和原排列相同,对逆排列做冒泡排序,因为冒泡排序交换的是相邻值的位置,对其他值......
  • CSP模拟7
    A.卷一道可爱的树形DP喵!题目保证了\(w_i\)是在给定范围内随机生成的,所以不会炸精度。首先明确题意,是求出最大乘积独立集之后取模,而不是边乘边取模。边乘边取模会炸,例如\(10^9+8\)对\(10^9+7\)取模后小于\(2\),但显然\(10^9+8>2\)。那怎么办呢?高精?可以用我们......
  • Python基础day54 Django2
    配置文件的介绍#注册应用的INSTALLED_APPS=['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.......
  • CSP 模拟 5
    T1第一题贪心,观察肯定是从较浅的点上来一个士兵或者从根节点来一个士兵,用set或者vector启发式合并维护这个过程即可点击查看代码#include<bits/stdc++.h>#defineN100005#defineinf0x3f3f3f3f#definepiipair<int,int>#definempmake_pairusingnamespacestd;......
  • 鸟哥Linux私房菜学习记录day3
    第七章    Linux磁盘与文件系统管理1硬。盘分区:硬盘的分区方式,主要包括基本分区和扩展分区,介绍了硬盘的主引导记录(MBR)和扩展引导记录(EBR)的作用。superblock:记录此filesystem的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息等;inode:记录文......
  • 7.27 day4 树论
    悲报:335->220战绩:100+100+20+0T1求子树sizeT2通过大眼观察严谨的证明后,我们发现\(x_i\)是\(x_i+1\)的祖先的概率和\(x_i+1\)具体是什么无关:我们令\(x_i+1\)一直跳父亲,直到编号小于等于\(x_i\)的那一次。因为父亲是等概率选取的,所以概率就是\(\frac{1}{x_i}\)......
  • vue--day46---组件自定义事件的解绑
    查看vue版本命令npmlistvue1.App.vue<template><div><h1>{{msg}}</h1><!--通过父组件给子组件传递函数的props实现子给父传数据--><School:receiveSchoolName="receiveSchoolName"></School><!--v-on在student组件标签上所以说是在给......
  • day03课程回顾
    课程回顾进制十进制转换二进制十进制数除以2倒取余数二进制转换十进制二进制转换八进制从低位次开始三位一组,如果最高位不足三位补0,将每一组三位二进制转换为八进制八进制转换二进制一个八进制数转换成三个二进制数,不足的位次补0二进制转换十六进制从低位次......