9.22考试 crf的数数 题解
这道题当时第一反应是线段树,但没有继续想,因为当时打完第一题打算这道题和第二道题并列做,打完第二道题状压后时间还有两个小时多,先打完暴力再说,打完之后又接着去想,然后想了5分多钟吧,扑街。
然后就发现这题似曾相识,有点像指针恒给我讲的分块“数颜色”,于是如获至宝的打了一个标准的分块。然后满心期待的以为至少能拿60分以上,结果被丝薄数据卡的一分没得,好无良的出题人啊。
考完试后发现好多人拿莫队打了70分,才反应过来这道题可以拿莫队打,然而之前只是听Q某犇讲过莫队的原理,具体实现也没打过,于是乎在自己的WW下打了一个J队……不得不说还挺像的……额挺像的……,然而我在宿舍里都排倒数,人家莫涛是国家队队长,差距啊……
其实正解不是莫队,莫队只是部分分,然而同桌Q某犇卡常数卡过去了,于是乎我也去打了莫队,然后各种恶意卡常,连计算机调内存,数组调用,O3等等等等我J某毕生所学都用上了,然而还是T成狗,不公平啊,我承认我没Q某犇帅,但脸黑到一定地步了啊!
于是乎,我只能乖乖的去打正解……
正解某种意义上挺有莫队的影子的,我们先把所有询问按照左右节点顺序排一遍序,然后从后向前进行查找,不断推进左节点位置(左节点一开始为n)然后维护一个t数组,代表该位置如果被选入会对当前答案做出如何的贡献,然后对于数x在该区间里从左到右出现的第x处利用差分的思想将该位置的t修改为1,对于出现的x+1处的t修改为-1,然后对于整个区间的贡献我们利用树状数组进行维护。然后直接对于该询问的右端点求前缀和即可。然而,我们应当注意几点,首先,我们在对树状数组进行修改时应当为修改值-t[当前针对的位置],然后就可以去掉之前改点对树状数组的影响,然后我们也应当记得把出现的x+2处的影响更新为0。
#pragma GCC optimze("O3") #include<iostream> #include<cstdlib> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define N 1000005 #include<vector> using namespace std; int n,q,a[N],ans[N],t[N],b[N]; vector<int> p[N]; struct no { int l,r,bh; }node[N]; inline bool px(no a,no b) { if(a.l==b.l)return a.r<b.r; return a.l<b.l; } inline int read() { ,f=;char x=getchar(); ;x=getchar();} )+(sum<<)+x-';x=getchar();} return sum*f; } int lowbit(int x) { return x&(-x); } void add(int x,int z) { for(int i=x;i<=n;i+=lowbit(i)) b[i]+=z; } int get(int x) { ; ;i-=lowbit(i)) ans+=b[i]; return ans; } int main() { scanf("%d%d",&n,&q); ;i<=n;i++) a[i]=read();//scanf("%d",&a[i]); ;i<=q;i++) { node[i].bh=i; node[i].l=read(),node[i].r=read(); //scanf("%d%d",&node[i].l,&node[i].r); } sort(node+,node++q,px); int l=n; ;i--) { while(l>=node[i].l) { p[a[l]].push_back(l); if(p[a[l]].size()>=a[l]) { int to=p[a[l]].size()-a[l]; add(p[a[l]][to],-t[p[a[l]][to]]);t[p[a[l]][to]]=; to--; ) { add(p[a[l]][to],--t[p[a[l]][to]]);t[p[a[l]][to]]=-; ) { add(p[a[l]][to-],-t[p[a[l]][to-]]);t[p[a[l]][to-]]=; } } } l--; } ans[node[i].bh]+=get(node[i].r); } ;i<=q;i++) printf("%d\n",ans[i]); ; }
最后总结一下这次考试,160分,一个烂大街的大众分,30个人23个前十,十多个160。一开始还以为我翻盘了,然后呵呵,只能说如果当时想起来莫队就好了……
9.22考试 crf的数数 题解的更多相关文章
- 9.22考试 crf的军训 题解
做这道题时由于第一道题太水了,第一反应是NOIP T2级别的题,需要拿上70~100的分,然后就开始分析,当然最后事实证明我错了…… 这道题当时首先联想到了 NOIP2016愤怒的小鸟 当然,数据范围 ...
- 9.22考试 crf的视察 题解
这道题当时第一反应就是一道典型的NOIP第一题的难度,绝对要A掉,不然分数一定会被拉开. 然后就开始分析,暴力是一开始想的是用二维树状数组打加上暴力枚举长度,然而这道题满足二分性质,所以时间复杂度就是 ...
- C#版 - Leetcode 633. 平方数之和 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...
- [CQOI2014]数三角形 题解(组合数学+容斥)
[CQOI2014]数三角形 题解(数论+容斥) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1328780 链接题目地址:洛谷P3166 BZOJ 350 ...
- 题解-[SDOI2014]数数
[SDOI2014]数数 这题的前置知识是AC自动机和dp,前置题目是 [JSOI2007]文本生成器,前置题目我写的题解 题解-[JSOI2007]文本生成器.我的讲解假设你做过上面那道题. 这题比 ...
- 8.22 NOIP模拟测试29(B) 爬山+学数数+七十和十七
T1 爬山 二分最高高度,$O(1)$判断是否可行. #include<iostream> #include<cstdio> #define ll long long usin ...
- 8.23考试总结(NOIP模拟46)[数数·数树·鼠树·ckw的树]
T1 数数 解题思路 大概是一个签到题的感觉...(但是 pyt 并没有签上) 第一题当然可以找规律,但是咱们还是老老实实搞正解吧... 先从小到大拍个序,这样可以保证 \(a_l<a_r\) ...
- 5.22考试总结(NOIP模拟1)
5.22考试总结(NOIP模拟1) 改题记录 T1 序列 题解 暴力思路很好想,分数也很好想\(QAQ\) (反正我只拿了5pts) 正解的话: 先用欧拉筛把1-n的素数筛出来 void get_Pr ...
- BZOJ3530: [Sdoi2014]数数
3530: [Sdoi2014]数数 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 322 Solved: 188[Submit][Status] ...
随机推荐
- C++中构造函数能调用虚函数吗?(答案是语法可以,输出错误),但Java里居然可以
环境:XPSP3 VS2005 今天黑总给应聘者出了一个在C++的构造函数中调用虚函数的问题,具体的题目要比标题复杂,大体情况可以看如下的代码: class Base { public: Base() ...
- block-chain java source
source:github.com/enderlu/Swiftglobal ide:idea ,要安装Lombok plugin 配置: -Dspring.config.location=file:D ...
- UWP应用载入SVG图片的兼容性方案
原文 UWP应用载入SVG图片的兼容性方案 新版本<纸书科学计算器>的更新点之一,就是优化了表达式的显示方式.在旧版本中,表达式里的符号是用png图片显示的,当用户放大看的时候会发现一些锯 ...
- SQL Server根据字段查询不出记录
今天写了一条select语句,很奇怪的一件事,我写程序几年了,第一次碰到这个问题,就是数据库里有这个值,你根据这个值查询就是查询不出来这行记录. 所以我想是不是里面有空格,回车什么的,最后果然如此. ...
- UWP中弹出框屏幕适配问题
上次在UWP中的消息提示框(二)中谈到弹出框在虚拟导航栏的手机上被遮挡问题,今天接就着扯. 上次给用户控件指定的宽高都是Window.Current.Bounds的宽高,而这个获取到的是包含应用程序窗 ...
- ASP.NET Core 下自定义模型绑定,去除字符串类型前后的空格
效果图: 01 02 直接贴代码了: NoTrim public class NoTrimAttribute : Attribute { } 我们自定义的模型绑定提供程序 /// <summar ...
- JPA 报错解决方案 com.microsoft.sqlserver.jdbc.SQLServerException: Cannot insert explicit value for identity column in table 'test_db' when IDENTITY_INSERT is set to OFF.
这种错误插入数据时就是hibernate的自增长字段生成规则应该用native 在字段前加入注解 @GeneratedValue(generator="generator") @G ...
- CMD 从文件中截取匹配规则字符串并输出到文件
*******************command**********************git diff 8d71d92b2d957fd1b697b4cf785fb984f190e5d2 or ...
- netty服务端启动--ServerBootstrap源码解析
netty服务端启动--ServerBootstrap源码解析 前面的第一篇文章中,我以spark中的netty客户端的创建为切入点,分析了netty的客户端引导类Bootstrap的参数设置以及启动 ...
- spring 5.x 系列第14篇 —— 整合RabbitMQ (代码配置方式)
源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 本用例关于rabbitmq的整合提供简单消 ...