七曜圣贤

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的更多相关文章

随机推荐

  1. 监控提示message

    见文件 监控提示message.rar ---可作时时监控提示功能

  2. varnish HTTP头

    Cache-Control:指定了缓存如何处理内容.varnish关心max-age参数,并用它来计算对象的TTL.“Cache-Control:no-cache”是被忽略的.Age:varnish添 ...

  3. 9. Java分支语句之if...else

    if...else条件语句 一个if语句包含一个布尔表达式和一条或者多条语句. 语法运用有三种 //第一种 if(布尔表达式){ //如果布尔表达式为true将执行的语句 } //第二种 if(布尔表 ...

  4. Spark机器学习API之特征处理(一)

    Spark机器学习库中包含了两种实现方式,一种是spark.mllib,这种是基础的API,基于RDDs之上构建,另一种是spark.ml,这种是higher-level API,基于DataFram ...

  5. UML中的类图

    模型 类 接口 关系 关联关系 描述了类的结构之间的关系.具有方向.名字.角色和多重性等信息.一般的关联关系语义较弱.也有两种语义较强,分别是聚合与组合 聚合 特殊关联关系,指明一个聚集(整体)和组成 ...

  6. 微信小程序转发事件

    和生命周期是同级,在.js文件里面设置 // 分享按钮 onShareAppMessage: function () { return { title: '前端伪大叔', path: "/p ...

  7. vue 项目文件流数据格式转blob图片预览展示

    为了图片安全性,有时候上传图片后后台不会直接返回图片地址,会返回文件流的数据格式,这种格式需要处理下才能展示在页面上   // 使用axios请求上传接口 axios({ method: 'get', ...

  8. (二十四)Ubuntu16.04配置ADB调试环境

    一.安装adb 1.可以通过 apt-get install android-tools-adb 来安装adb sudo add-apt-repository ppa:nilarimogard/web ...

  9. (十四)Linux kernel mmc 框架说明,包括mmc_test使用方法

    1.Linux 总线模型         Linux下的任何驱动在内核中最终都抽象为bus, driver以及device三者间的相互作用. 总线是处理器和一个或多个设备之间的通道,在设备模型中,所有 ...

  10. C# Winfrom TabControl美化

    实例一: using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; na ...