并不能ac jsoi2009
来源:互联网 发布:淘宝介入后对卖家影响 编辑:程序博客网 时间:2024/04/30 16:56
看到这种题目,,下意识先来了个莫队。。。然后。。。想想加个set。不就好了。。看看复杂度n^1.5*logn可能会卡过去吧。。。然后就写了一下。。然后就tle了。。。
#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<map>#include<set>#define N 100005#define ll int using namespace std;int n,m,ans;int pos[N],c[N];ll read(){ ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}struct cmp1{ bool operator()(const int &k1, const int &k2)const { return k1<k2;} };map<int,int,cmp1> mp1;multiset<int> tree;struct data{int l,r,id;ll val;}a[N];bool cmp(data a,data b){if(pos[a.l]==pos[b.l])return a.r<b.r;return a.l<b.l;}bool cmp_id(data a,data b){return a.id<b.id;}void init(){n=read(); m=read();for(int i=1;i<=n;i++) c[i]=read();int block=int(sqrt(n));for(int i=1;i<=n;i++) pos[i]=(i-1)/block+1;for(int i=1;i<=m;i++){ a[i].l=read(); a[i].r=read(); a[i].id=i; }}void update(int x,int f){int k=c[x]; map<int,int>::iterator iter; if(f==1) {mp1[k]++; if(mp1[k]==1) { iter=mp1.find(k); map<int,int>::iterator iter0; if(iter!=mp1.begin()) { iter0=iter;iter0--; int r3=(iter->first)-(iter0->first); tree.insert(r3); } map<int,int>::iterator iter2=iter;iter2++; if(iter2!=mp1.end()) { int r1=(iter2->first)-(iter->first);tree.insert(r1); }if((iter2!=mp1.end())&&(iter!=mp1.begin())) { int r2=(iter2->first)-(iter0->first); tree.erase(r2); } } }else { mp1[k]--; if(mp1[k]==0) { iter=mp1.find(k); map<int,int>::iterator iter0; if(iter!=mp1.begin()) { iter0=iter;iter0--; int r3=(iter->first)-(iter0->first); tree.erase(r3); } map<int,int>::iterator iter2=iter;iter2++; if(iter2!=mp1.end()) { int r1=(iter2->first)-(iter->first);tree.erase(r1); }if((iter2!=mp1.end())&&(iter!=mp1.begin())) { int r2=(iter2->first)-(iter0->first); tree.insert(r2); } mp1.erase(k); } }}void solve(){ for(int i=1,l=1,r=0;i<=m;i++){for(;r<a[i].r;r++)update(r+1,1);for(;r>a[i].r;r--) update(r,-1);for(;l<a[i].l;l++) update(l,-1);for(;l>a[i].l;l--) update(l-1,1);a[i].val=*(tree.begin());}}int main(){init();sort(a+1,a+m+1,cmp);solve();sort(a+1,a+m+1,cmp_id);for(int i=1;i<=m;i++) printf("%d\n",a[i].val);return 0;}程序有错的话请大神指出,明天再去看标算。。。
0 0
- 并不能ac jsoi2009
- 一道乱搞题并不能ac.
- 某【并不能AC的】模拟题部分解题报告
- hihocoder #1121 : 二分图一•二分图判定 并不能AC 孤立点问题?
- BZOJ 1444 JSOI2009 有趣的游戏 AC自动机+矩阵乘法
- 【 bzoj 1444 】 [Jsoi2009]有趣的游戏 - AC自动机+矩阵乘法
- 【bzoj1444】【jsoi2009】【有趣的游戏】【AC自动机+矩阵乘法】
- BZOJ1444: [Jsoi2009]有趣的游戏 矩阵求逆+AC自动机
- bzoj 1559: [JSOI2009]密码 AC自动机+状压dp
- [BZOJ1559]-[JSOI2009]密码-补全AC自动机+状压dp
- [BZOj]1559 [JSOI2009] 密码 AC自动机 + 状压DP
- bzoj1559 [JSOI2009]密码(AC自动机+状压DP)
- 并不能一蹴而就的s9t9
- 队列并不能解决“超载”
- zoj能AC
- 并不是每时每刻都能记得
- wifstream并不能理解UNICODE文本文件
- FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment
- 分布式之RPC的协议以及错误处理
- ubuntu 分卷
- Jsp到数据库中文乱码解决方法
- js如何判断客户端类型
- springmvc mybatis 基于全注解事务配置注意事项
- 并不能ac jsoi2009
- 算法:特殊二维数组查询key值是否存在
- VARCHAR2的简单说明
- PXC在线增加从库
- Spring的PropertyPlaceholderConfigurer应用
- 1099. Build A Binary Search Tree (30)
- js如何判断客户端类型
- Android support library支持包常用控件介绍(二)
- 高德地图获取开发所需要的key