(友情提醒:这⑧是一篇题解)

题目描述

书接上文,小花梨和小信息闲着没事切了太多巧克力,于是他们决定将多切的巧克力分发给参加2018伊卡斯特程序设计竞赛的同学们。他们先统计了一份分发名单,第i位同学被分配了Ai块巧克力。
比赛现场:
“小花梨!有些同学想要多吃点巧克力!”
“小花梨!有些同学午饭吃撑了不要那么多巧克力!”
“小花梨!有些同学要组队打包巧克力带走!”
“小花梨!再拿一包中号袋子过来!这些人都要这么多个巧克力!”
“小花梨!”“您能消停点不!”…………
总而言之,现在出现了三大类问题:
1、小花梨需要修改第X位同学的巧克力数量为Y
2、小花梨需要求第L位同学到第R位同学的巧克力数量之和
3、小花梨需要求第L位同学到第R位同学的巧克力数量的众数,即出现次数最多的数字。
(如果存在多个众数,输出数字最小的那个)
由于人手实在不够,所以小花梨无奈把你从二食堂抓了回来。作为补偿,你可以在得到一份额外的霸王餐之外拿走剩下来的所有巧克力。

输入

输入只有一组数据。
第一行为两个整数N和Q,表示同学数和操作数
第二行为N个整数Ai,表示第i位同学的巧克力数
接下来Q行,先输入字符串s表示操作类型
“CHANGE X Y”,表示修改第X位同学的巧克力数量为Y
“QUERY L R”,求第L位同学到第R位同学的巧克力数量之和
“MOST L R”,求第L位同学到第R位同学的巧克力数量的众数
(1≤N,Q≤10000,1≤Ai,Y≤109,1≤L≤R≤N,1≤X≤N)

输出

对于每一个操作"QUERY"和"MOST",输出一行ans,表示答案。

样例输入

10 4
1 1 1 2 2 3 3 4 4 5
QUERY 2 3
MOST 2 4
CHANGE 3 2
MOST 2 4

样例输出

2
1
2

Code

关于众数从博文 求众数(c语言) 中获得了一些灵感

//超时了。。
#include <bits/stdc++.h>
using namespace std;struct node{int cho_num,nnum;//“巧克力的数量”,“巧克力的数量”出现的相应次数
};bool compare(int a,int b){return a>b;
}bool compare2(node a,node b){return a.nnum>b.nnum;
}int ai[10010];
int aai[10010];
node bi[10010];int most(int n,int x,int y){memcpy(aai,ai+x,sizeof(int)*(y-x+1));sort(aai,aai+y-x+1,compare);memset(bi,0,sizeof(node)*(y-x+1));for(int i=0,j=0;i<(y-x+1);i++){if(aai[i]==aai[i+1]){bi[j].cho_num=aai[i];bi[j].nnum++;}else j++;}stable_sort(bi,bi+y-x+1,compare2);int tt=0;for(int i=0;bi[i].nnum==bi[i+1].nnum;i++){tt=i+1;}return bi[tt].cho_num;
}int main(){int n,q;cin>>n>>q;for(int i=1;i<=n;i++)cin>>ai[i];while(q--){string s;int x,y;cin>>s>>x>>y;int ans=0;if(s=="CHANGE") ai[x]=y;else if(s=="QUERY"){for(int i=x;i<=y;i++) ans+=ai[i];cout<<ans<<endl;}else cout<<most(n,x,y)<<endl;}return 0;
}

问题 Q:巧克力与小花梨相关推荐

  1. C. 小花梨判连通(图的搜索)(map)

    Description 小花梨给出?个点,让?位同学对这?个点任意添加无向边,构成?张图.小花梨想知道对于 每个点?,存在多少个点?(包括?本身),使得?和?在这?张图中都是连通的. Input 第一 ...

  2. 小花梨的字符串 ——java 美登杯

    小花梨的字符串 第一眼看到这个题的时候直接给我整懵了,完全不知道这个题在干什么,但看完题解之后就清楚了: 首先这个题我的思路就是输出的结果应该是从l到r的子字符串的个数,包含自身,但在做的时候求字符串 ...

  3. “美登杯”上海市高校大学生程序设计 C. 小花梨判连通 (并查集+map)

    Problem C C . 小 花梨 判连通 时间限制:2000ms 空间限制:512MB Description 小花梨给出?个点,让?位同学对这?个点任意添加无向边,构成?张图.小花梨想知道对于 ...

  4. “美登杯”上海市高校大学生程序设计邀请赛 **D. 小花梨的取石子游戏**

    "美登杯"上海市高校大学生程序设计邀请赛 (华东理工大学) D. 小花梨的取石子游戏 Description 小花梨有?堆石子,第?堆石子数量为??,?堆石子顺时针编号为1 − ? ...

  5. “美登杯”上海市高校大学生程序设计赛B. 小花梨的三角形(模拟,实现)

    题目链接:https://acm.ecnu.edu.cn/contest/173/problem/B/#report9 Problem B B . 小 花梨 的 三角形 时间限制:1000ms 空间限 ...

  6. B. 小花梨的三角形

    B. 小花梨的三角形 这个题目我真的是感触良多啊,怎么说呢,在一个上三角矩阵里面找出所有三角形的问题,正的三角形可以从第一个顶点开始遍历,设一个方程(i,j)(i+k,j),(i+k,j+k)来表示三 ...

  7. “美登杯”上海市高校大学生程序设计邀请赛 (华东理工大学)E. 小花梨的数组

    题目链接:https://acm.ecnu.edu.cn/contest/173/problem/E/ 题意:Description 小花梨得到了一个长度为?的数组?,现在要对它进行三种操作: ⚫ 1 ...

  8. 小花梨的三角形--美登杯

    Description 小花梨现在有一个n层三角形图(参考下图),第 i 层有2i − 1个边长为1的等边三角形. 每个交点处存在一个字符,总共有n + 1层字符,第 i 层有 i 个字符. 小花梨用 ...

  9. 上海市高校大学生程序设计邀请赛 C:小花梨判连通

    上海市高校大学生程序设计邀请赛 C:小花梨判连通 Problem C.小花梨判连通 时间限制:2000ms 空间限制:512MB Description 小花梨给出?个点,让?位同学对这?个点任意添加 ...

最新文章

  1. 快速创建springBoot
  2. java 中的vector_详解Java中的Vector
  3. mysql导入数据库某张表_MSSQLServer2005 导出导入数据库中某张表的数据
  4. 使用lamba中stream 进行分组统计
  5. Oracle笔记-Oracle Net Manager添加监听IP(当服务器IP变化时要用)
  6. 计算机组成中CM,基于TDN-CM++计算机组成原理课程设计.doc
  7. Java基础学习总结(115)——Java 类加载机制详解
  8. 11.TCP/IP 详解卷1 --- UDP:用户数据报协议
  9. Unity3D中把AudioClip保存为Wav文件
  10. php保存上传的音频文件在哪里,php 视频、音频和图片文件上传,该如何解决
  11. 如何在UltraCompare中编辑文件?
  12. cookie安全性问题
  13. 华为硬件逻辑岗笔试题(一)
  14. 苹果应用分身_苹果手机微信分身怎么下载?微信多开版地址
  15. 操作系统 - 存储器管理系统
  16. 【模型训练】YOLOv7反光衣检测
  17. 摄像头和麦克风的使用日志管控方案
  18. 汽车之家联席总裁邵海峰
  19. oracle p6 破解版下载,Primavera P6项目管理软件 16~17 图文详细安装教程(附下载)
  20. 4 仓储管理系统 仓库端功能

热门文章

  1. jmeter压测结果分析
  2. 【Web开发】登录注册功能实现
  3. 网站服务器内存性能监视异常波动,网站监视, Web架构监视, 服务器监视: Site24x7...
  4. 计算机专业助我成长作文600,电脑伴我成长作文
  5. 使用selenium自动登陆b站 图片文字验证识别
  6. python selenium 爬虫 网站seo刷流量 第一篇:百度搜索
  7. 干货推荐|Java并发编程核心概念一览,面试必备!
  8. lol进入服务器后显示3秒白屏,LOL英雄联盟游戏大厅出现白屏的完美解决方法
  9. 考研数学145分之路:暑期精读大学数学课本
  10. Python-小数取整与小数四舍五入