loj541
sol:我标算还没写过,似乎分块就可以过(因为数据是随机的),我写个set可以有70~80分
//C++
#include<bits/stdc++.h> using namespace std; namespace IO
{
int c;
unsigned int seed;
unsigned int randnum()
{
seed^=seed<<;
seed^=seed>>;
seed^=seed<<;
return seed;
} inline int read(int &x)
{
scanf("%d",&x);
return x;
}
inline void init_case(int &m,int &a,int &b,int &d,int p[])
{
scanf("%d%u%d%d%d%d",&m,&seed,&a,&b,&c,&d);
for(int i=; i<=m; i++)
{
if(randnum()%c==)p[i]=-;
else p[i]=randnum()%b;
}
} inline void update_ans(unsigned int &ans_sum,unsigned int cur_ans,int no)
{
// cout << no << ' ' << cur_ans << endl;
const static unsigned int mod=;
ans_sum^=(long long)no*(no+)%mod*cur_ans%mod;
}
}
using IO::read;
using IO::init_case;
using IO::update_ans;
/*
Ò»¿ªÊ¼Çëµ÷ÓÃread(T)¶ÁÈëÊý¾Ý×éÊýT
½ÓÏÂÀ´Ã¿×éÊý¾Ý¿ªÊ¼Ê±Çëµ÷ÓÃinit_case(m,a,b,d,p)¶ÁÈëm,a,b,d,p[]
ÿ×éÊý¾Ý¿ªÊ¼Ê±ÇëÓÃÒ»¸ö³õʼ»¯Îª0µÄ32λÎÞ·ûºÅÕûÐαäÁ¿ans_sum´æ´¢´ð°¸£¬È»ºó¶ÔÓÚÿ¸öi£¬
ÓÃ32λÎÞ·ûºÅÕûÐαäÁ¿cur_ans´æ´¢µÚi´Î´ð°¸£¬²¢µ÷ÓÃupdate_ans(ans_sum,cur_ans,i)¸üС£×îºóÊä³öans_sum¼´¿É¡£
*/ //ʾÀý´úÂ룺
const int N=;
int m,a,b,d;
int p[N];
bool Bo[N];
bool Used[N];
deque<int>dq;
set<int>mex;
set<int>::iterator it;
unsigned int ans_sum=,cur_ans=; inline void setSolve(int i)
{
if((p[i]==-)&&d)
{
if(dq.empty()) return;
int tmp=dq.front(); dq.pop_front(); Bo[tmp]=;
mex.erase(tmp);
// it=mex.lower_bound(tmp); mex.erase(it);
}
else if((Bo[p[i]])&&d)
{
dq.push_back(p[i]); Bo[p[i]]=;
mex.insert(p[i]);
}
else if((!Bo[p[i]])&&(!Used[p[i]]))
{
Used[p[i]]=; Bo[p[i]]=;
mex.erase(p[i]);
// it=mex.lower_bound(p[i]); mex.erase(it);
}
else if(d)
{
if(dq.empty()) return;
int tmp=dq.front(); dq.pop_front(); Bo[tmp]=;
mex.erase(tmp);
// it=mex.lower_bound(tmp); mex.erase(it);
}
cur_ans=*mex.begin();
update_ans(ans_sum,cur_ans,i);
}
inline void playset()
{
int i;
for(i=;i<=a;i++) Bo[i]=Used[i]=;
mex.clear(); for(i=a+;i<=max(b,a+);i++) Bo[i]=Used[i]=,mex.insert(i);
dq.clear();
for(i=;i+<=m;i+=)
{
setSolve(i); setSolve(i+); setSolve(i+); setSolve(i+); setSolve(i+);
setSolve(i+); setSolve(i+); setSolve(i+); setSolve(i+); setSolve(i+);
}
for(;i<=m;i++) setSolve(i);
printf("%u\n",ans_sum);
}
int main()
{
freopen("mex.in","r",stdin);
freopen("mex.out","w",stdout);
int T,i;
read(T);
while(T--)
{
ans_sum=cur_ans=;
init_case(m,a,b,d,p); d^=;
playset();
}
return ;
}
/*
input
1
100000 866153523 100000 10 2 0
output
892635735
*/
set
loj541的更多相关文章
随机推荐
- k8s之dashboard认证、资源需求、资源限制及HeapSter
1.部署dashboard kubernetes-dashboard运行时需要有sa账号提供权限 Dashboard官方地址:https://github.com/kubernetes/dashboa ...
- 12-MySQL DBA笔记-MySQL复制
第12章 MySQL复制 本章将为读者讲述MySQL的复制技术,首先,介绍最基础的主从复制,它是其他所有复制技术的基础,接着再为读者讲述各种复制架构的搭建,最后,列举了一些常见的复制问题及处理方式.复 ...
- springboot+mybatis调用oracle存储过程
1 存储过程参数为VARCHAR 代码逻辑:controller层定义实体类对象entity,并entity.set给存储过程的输入参数赋值,把赋值后的实体类通过service层传到dao层,然后通过 ...
- .net core 根据数据库生成实体类
微软最近几年在跨平台上不断发力,很多.net程序员也摩拳擦掌,对微软寄以厚望.就在最近,微软还推出了asp .net core2.0预览版. 通过对.net core的简单尝试,我发现以往我们开发MV ...
- 【原创】大叔问题定位分享(36)openresty(nginx+lua)中获取不到post数据,ngx.req.get_body_data返回nil
openresty(nginx+lua)中获取不到post数据,ngx.req.get_body_data返回nil This function returns nil if the request ...
- 张小龙用这8句话表达了NB产品的一切(转)
1.一个好的产品应该是用完即走 真正好的产品,应该是让用户提高效率而不是消磨时光.但现在大部分用户使用微信的时间让我们很担忧. 包括我们自己的同事,在开会的时候,有同事隔两分钟就看一下手机,我觉得他们 ...
- 10.Spring整合Hibernate_3_HibernateTemplate
将sessionFactory 注入给 hibernateTemplate,让hibernateTemplate帮我们完成一些模板代码 <!-- 使用HibernateTemplate --&g ...
- 一秒钟教会你如何 使用jfreechart制作图表,扇形图,柱形图,线型图,时序图,附上详细代码,直接看效果
今天有小伙伴问到我怎么使用jfreeChat生成图标,去年就有一个这方便的的总结,今天再遇到,就总结出来,供大家参考: 第一个: 创建柱状图,效果图如下: 柱状图代码如下: package cn.xf ...
- 如何处理不能新建word、excel、PPT的情况?
Office系列办公软件是大家都非常喜欢使用的软件,但是有些朋友反映在使用电脑时,在桌面右键菜单新建选项里没有Word.Excel或PPT,非常的耽误工作. 下面就为大家介绍一下桌面右键菜单新建选项里 ...
- 每日命令:(7)mv
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 1.命令格式: mv [选项] 源文件或目 ...