插入排序(CSP-J 2021 T2)我有新思路了,链接:https://www.cnblogs.com/wjk53233/p/16533752.html


我有新思路了,链接:https://www.cnblogs.com/wjk53233/p/16533752.html
我有新思路了,链接:https://www.cnblogs.com/wjk53233/p/16533752.html
我有新思路了,链接:https://www.cnblogs.com/wjk53233/p/16533752.html
这道题目很长但只要·二个数组就能解决数组一:a(a数组只是用来存数是无序的) p(p数组是用来记录数的位置的,p[i]表示第i个数的排序)
题目有两种操作,查询和顶替。
在查询时进行数组操作会爆因为Q * n达到了 1.6*10^10,亿秒肯定会爆,所以要在顶替操作时改变p数组,操作次数为4*10^7,运算量大幅度减少。
二种操作
1.顶替:
(一)先将要替换的点删除,要替换点的p数组内的数初始化为1并将比删除点的p数组内的数大(或等于,但一定i要大于替换点的下标)的p数组内的数-1;
(二)再将要替换的点换上新值新制(在替换操作后),并将比替换点的p数组内的数大(或等于,但一定i要大于替换点的下标)的p数组内的数+1;
(三)如果a[i]==v&&i<x或a[i]<v p[x]就++;
2.查找
(一)输入n1;
(二)输出p[n1];
剩下只有开头p数组要初始化为一之后就是小细节了
程序:
1 #include<iostream>
2 #include<algorithm>
3 #include<cstdio>
4 #include<cmath>
5 #include<map>
6 #include<vector>
7 #include<queue>
8 #include<set>
9 #define LL long long
10 using namespace std;
11 int main()
12 {
13 // freopen("1.in","r",stdin);
14 // freopen("1.out","w",stdout);
15 int n,q,a[9000]={0},p[9000]={0};
16 scanf("%d%d",&n,&q);
17 for(int i=1;i<=n;i++)
18 {
19 scanf("%d",&a[i]);
20 p[i]=1;
21 }
22 for(int i=1;i<=n;i++)
23 {
24 for(int j=1;j<=n;j++)
25 {
26 if(i==j) continue;
27 else
28 {
29 if(a[j]<a[i]) p[i]++;
30 else if(a[j]==a[i]&&i>j) p[i]++;
31 }
32 }
33 }
34 while(q--)
35 {
36 int l;
37 scanf("%d",&l);
38 if(l==1)
39 {
40 int x,v;
41 scanf("%d%d",&x,&v);
42 p[x]=1;
43 for(int i=1;i<=n;i++)
44 {
45 if(i==x) continue;
46 if(a[i]>a[x])
47 {
48 p[i]--;
49 }
50 if(a[i]==a[x]&&x<i)
51 {
52 p[i]--;
53 }
54 if(a[i]>v)
55 {
56 p[i]++;
57 }
58 if(a[i]==v&&i>x)
59 {
60 p[i]++;
61 }
62 if(a[i]<v)
63 {
64 p[x]++;
65 }
66 if(a[i]==v&&i<x)
67 {
68 p[x]++;
69 }
70 }
71 a[x]=v;
72 }
73 else
74 {
75 int n1;
76 scanf("%d",&n1);
77 printf("%d\n",p[n1]);
78 }
79 }
80 return 0;
81 }
插入排序(CSP-J 2021 T2)我有新思路了,链接:https://www.cnblogs.com/wjk53233/p/16533752.html的更多相关文章
- CSP J/S 初赛总结
CSP J/S 初赛总结 2021/9/19 19:29 用官方答案估计 J 涂卡的时候唯一的一支 2B 铅笔坏了,只能用笔芯一个个涂 选择 \(-6\ pts\) 判断 \(-3\ pts\) 回答 ...
- 【游记】CSP J/S 2019 游记
J 组 \(2:30\)开始, \(2:13\)还在酒店的我看了看手表...飞奔考场. T1 数字游戏 秒切. 下午某中学某大佬说可用线性基(%) T2 公交换乘 用单调队列思想,秒切. T3 纪念品 ...
- CSP J/S 2019受虐记
一枚蒟蒻的游记~ 提高组DAY1 不是说每场考试都有一道签到题吗 那我tm读了三遍题硬是没找到一道水题是怎么回事(是我太弱了吗) 没办法,硬着头皮做T1 暴力写法...期望得分30pts 于是...在 ...
- 【做题】ECFinal2018 J - Philosophical … Balance——dp
原文链接 https://www.cnblogs.com/cly-none/p/ECFINAL2018J.html 题意:给出一个长度为\(n\)的字符串\(s\),要求给\(s\)的每个后缀\(s[ ...
- xss小结-从xss平台搭建到csp规则
0x00前言 xss是跨站脚本攻击,利用嵌入js代码达到‘控制’对方浏览器的作用,测试的时候我们是用alert(1)弹窗,而做CTF也好,实际中的漏洞利用也好一般是用xss获取管理员的cookie 0 ...
- java.util.UnknownFormatConversionException: Conversion = 'j' || Conversion = 'D' || Conversion = 'Y'
执行内容: String a = "select * from j_question j where j.status = %s and j.title like '%java%'" ...
- 借书证信息管理系统,C语言实现
自己实现的如有缺漏欢迎提出 /* 原创文章 转载请附上原链接: https://www.cnblogs.com/jiujue/p/10325628.html */ 设计内容: 设计一个排序和查找系 ...
- 必须知道的Java八大排序算法
冒泡排序.简单选择.直接插入.快速排序.堆排序.希尔排序.归并排序.基数排序. 将其按排序方式分类如下图所示: 1.冒泡排序: 基本思想——在要排序的一组数中,对当前还未排好序的范围内的全部数据,自上 ...
- huffman树即Huffma编码的实现
自己写的Huffman树生成与Huffman编码实现 (实现了核心功能 ,打出了每个字符的huffman编码 其他的懒得实现了,有兴趣的朋友可以自己在我的基础增加功能 ) /* 原创文章 转载请附上原 ...
- <转载>ford-fulkerson算法2
原文链接https://www.cnblogs.com/luweiseu/archive/2012/07/14/2591573.html 作者:wlu 7. 网络流算法--Ford-Fulkerson ...
随机推荐
- 刚哥谈架构(八)- 为你的应用选择合适的API
前言: 架构师的主要活动是做出正确的技术决策.选择合适的API是一项重要的技术决策.那么今天就看看API的选择问题. 应用程序编程接口(API)是一种计算接口,它定义了多个软件中介之间的交互.它定义了 ...
- Redis 常见问题
Redis 常见问题 落叶他乡树,寒灯独夜人. 一. 什么是Redis? Redis 是一个使用 C 语言写成的,开源的高性能key-value非关系缓存数据库: Redis的数据都基于缓存的,所以很 ...
- python3爬取CSDN个人所有文章列表页
前言 我之前写了下载单篇文章的接口函数,结合这篇写的,就可以下载所有个人的所有文章了 代码实现 没什么技术含量就是简单的 xpath 处理,不过有意思的是有一位csdn 员工将自己的博客地址写到源码里 ...
- MySQL 常用到的几个字符处理函数
修改某字段的内容,用于英文 首先解释用到的函数: CONCAT(str1,str2)字符连接函数 UPPER(str)将字符串改为大写字母 LOWER(str)将字符串改为小写字母 LENGTH(st ...
- GitHub上的一个笔记相关小项目
就是一个笔记屑小项目, C++编写,有想一起开发的私信 AlgorithWeaver/V-note (github.com) 项目名V-note QVQ
- 最新 2022 年 Kubernetes 面试题高级面试题及附答案解析
题1:Kubernetes Service 都有哪些类型? 通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载分发到后端的各个容器应用上.其主要类型有: C ...
- view-design tabpane禁用后renderHeader失效问题
需求是这样的 在tabPane的renderHeader里面添加hover事件(使用组件自带的Poptip)能显示提示 其实这个不算是问题,设置disabled属性后,原本的元素上面添加了 ivu-t ...
- Spring之后置处理器
Spring的后置处理器是Spring对外开发的重要扩展点,允许我们接入Bean的实例化流程中,以达到动态注册BeanDefinition.动态修改BeanDefinition.动态修改Bean的 ...
- Windows搭建Git服务器
Windows如何搭建Git服务器 1.安装java环境 (1)下载安装java 注意(java的版本需要在1.7及以上) (2)配置java的环境变量 (3)检验java环境是否安装成功 2.下载安 ...
- ArcObjects SDK开发 021 开发框架搭建-FrameWork包设计
1.框架引擎部分 引擎模块其实就是之前我们说的App-Command-Tool模块,通过这个模块,把系统的主干框架搭建起来. 其中大部分出现在菜单以及工具条上的按钮都会继承这个框架定义ICommand ...