神志不清:

回去休息(x)继续考试(√)

非常爆炸的一次考试。看错题码完T1回去再看发现自己过于幼稚,T2读完题看着16mb的空间秒出正解然后逻辑出现致命失误100pts->0pts,T3看了一会题直接放弃,10pts最后有时间再说->没时间,下一个。

还有什么好说的呢,略略。

T1:Set

曾经学完鸽巢原理【抽屉原理】以后还想过怎么考这个知识点的问题,最后没想出个所以然,断定一定是看不出来考点的考法。然后我真没看出来…一开始还读错题。T2打了个自以为的正解以后看了一会儿T3翻回来检查这道题,推翻了重新想。

大约想了一个小时?对 非常睿智。之后整个转换了思路才终于想到DP。半小时紧急打个DP然后瞎调一通,居然有50pts。

最后考完听别人一说才恍然大悟,这不是背包吗…

正解则完全不一样,是上面所说的鸽巢原理。余数有一个性质,n的余数不超过n种。对于给出的数列取模做个前缀和,从S0到Sn一共有n+1种余数,那么一定存在余数相同的两个S,把这两个位置中间的一段输出,它们的和一定被n整除。

非常巧妙的一道题。

#include<iostream>
#include<cstdio>
using namespace std;
int n;
int s[],v[];
int main()
{
scanf("%d",&n);
v[]=;
for(int i=,x;i<=n;i++){
scanf("%d",&x);
s[i]=(s[i-]+x)%n;
if(!v[s[i]]&&s[i]!=)v[s[i]]=i;
else{
printf("%d\n",i-v[s[i]]);
for(int j=v[s[i]]+;j<=i;j++)printf("%d ",j);
return ;
}
}
printf("-1");
return ;
}

T2:Read

16mb,读入又很麻烦,显然是一边读入一边处理答案的类型。

看题发现要先求出众数,再加上边读入边处理,自然想到了摩尔投票法。摩尔投票法还是当时准备给大家讲平衡树的时候在一道题里用到过,我引给大家的算法……结果这次四个人里只有我wa了……

wa的原因是处理完众数以后,摩尔投票法剩下的那个次数我直接用来求答案了。实际上最后存下的那个“众数”不一定是真正的众数,有可能恰巧是剩下的数字,并不多于所有数的一半。应该再扫一遍看是否大于(n+1)/2,然后大于的话再减去合适的数量。(n+1)/2和之后的那个数量都可以列出式子来移项得到。

足以说明我当时多么睿智…虽然现在也好不到哪去。

#include<iostream>
#include<cstdio>
using namespace std;
long long X,Y;
int sum,cnt,m,k,count[],x[],y[],z[];
int main()
{
scanf("%d%d",&m,&k);
for(int i=;i<=m;i++)scanf("%d",&count[i]);
for(int i=;i<=m;i++)scanf("%d",&x[i]);
for(int i=;i<=m;i++)scanf("%d",&y[i]);
for(int i=;i<=m;i++)scanf("%d",&z[i]);
int N=,S=(<<k)-;
for(int i=;i<=m;i++){
X=x[i];
if(X==Y)cnt++;
else{
cnt--;
if(cnt<){
cnt=;
Y=X;
}
}
long long lst=x[i];
// printf("%d ",X);
for(int j=;j<count[i];j++){
lst=(lst*y[i]+z[i])&S;
X=lst;
if(X==Y)cnt++;
else{
cnt--;
if(cnt<){
cnt=;
Y=X;
}
}
// printf("%d ",X);
}
}
for(int i=;i<=m;i++){
N++;
X=x[i];
if(X==Y)sum++;
long long lst=x[i];
// printf("%d ",X);
for(int j=;j<count[i];j++){
lst=(lst*y[i]+z[i])&S;
N++;
X=lst;
if(X==Y)sum++;
// printf("%d ",X);
}
}
if(sum>(N+)/)printf("%d",sum*-N-);
// printf("\n");
else printf("");
return ;
}

T3:Race

看了一眼题,想了会儿,直接扔了。

最后看正解果然是我的思路盲区…

x2的实质:比当前选手排名高的人任取两个组成的有序数对的个数,数对中的两个数可以重复。

在2m天中同样的数对可能多次出现,那么可以考虑这个数对出现了多少次,进一步转化成每个数对于同一选手的贡献。

对于一位选手,因为所有人的能力值均不相同,其他人一定可以根据能力值二进制第一位和他不同的位数分成至多m组。可以用01trie数记录下所有能力值并存一个size,对于每个运动员都在树上查一次,记录下第一位和他不同的数的个数。每个与他不同的数,排名大于他的次数都是总次数的二分之一,那么一个有序数对就是四分之一即2m-2次*2【因为数对有序所以*2】。

#include<iostream>
#include<cstdio>
using namespace std;
int n,m;
long long ans;
const long long mod=;
int a[],tree[][],tot=,sum[][],f[];
void ins(int x){
int now=;
for(int i=m-;i>=;i--){
if(!tree[now][(x>>i)&])tree[now][(x>>i)&]=++tot;
sum[now][(x>>i)&]++;
now=tree[now][(x>>i)&];
}
}
void work(int x){
int now=;
for(int i=m-;i>=;i--){
f[i]=sum[now][((x>>i)&)^];
now=tree[now][(x>>i)&];
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
ins(a[i]);
}
for(int i=;i<=n;i++){
work(a[i]);
long long num=;
for(int j=;j<m;j++){
for(int k=j;k<m;k++){
num=(num+(2ll*f[j]*f[k]%mod*(<<(m-))%mod))%mod;
}
}
ans^=num;
}
printf("%lld",ans);
return ;
}

马上考试,祝大家rp++。

2019.9.18 csp-s模拟测试46 反思总结的更多相关文章

  1. 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组

    2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...

  2. 2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色

    2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 数据结构学傻的做法: 对每种颜色开动态开点线段树直接维 ...

  3. 2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci)

    2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci) 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 找规律 找两个节点的lca,需 ...

  4. 2019.8.14 NOIP模拟测试21 反思总结

    模拟测试20的还没改完先咕着 各种细节问题=错失190pts T1大约三分钟搞出了式子,迅速码完,T2写了一半的时候怕最后被卡评测滚去交了,然后右端点没有初始化为n…但是这样还有80pts,而我后来还 ...

  5. 2019.8.9 NOIP模拟测试15 反思总结

    日常爆炸,考得一次比一次差XD 可能还是被身体拖慢了学习的进度吧,虽然按理来说没有影响.大家听的我也听过,大家学的我也没有缺勤多少次. 那么果然还是能力问题吗……? 虽然不愿意承认,但显然就是这样.对 ...

  6. 2019.8.1 NOIP模拟测试11 反思总结

    延迟了一天来补一个反思总结 急匆匆赶回来考试,我们这边大家的状态都稍微有一点差,不过最后的成绩总体来看好像还不错XD 其实这次拿分的大都是暴力[?],除了某些专注于某道题的人以及远程爆踩我们的某学车神 ...

  7. 2019.8.3 NOIP模拟测试12 反思总结【P3938 斐波那契,P3939 数颜色,P3940 分组】

    [题解在下面] 早上5:50,Gekoo同学来到机房并表态:“打暴力,打暴力就对了,打出来我就赢了.” 我:深以为然. (这是个伏笔) 据说hzoi的人还差两次考试[现在是一次了]就要重新分配机房,不 ...

  8. 2019.10.30 csp-s模拟测试94 反思总结

    头一次做图巨的模拟题OWO 自从上一次听图巨讲课然后骗了小礼物以后一直对图巨印象挺好的233 T1: 对于XY取对数=Y*log(x) 对于Y!取对数=log(1*2*3*...*Y)=log1+lo ...

  9. 2019.9.28 csp-s模拟测试54 反思总结

    咕咕咕的冲动如此强烈x T1x: 看完题目想了想,感觉把gcd不为1的强行放在一组,看作一个连通块,最后考虑连通块之间的组合方式就可以了. 然后维护这个连通块可以写并查集可以连边跑dfs怎么着都行… ...

随机推荐

  1. HDU - 6128

    题意略: 题解:二次剩余板子题 //#pragma GCC optimize(2) //#pragma GCC optimize(3) //#pragma GCC optimize(4) //#pra ...

  2. position:fixed失效问题

    fixed定位的元素,如果父级有transform样式,值不为none,那么fixed定位就会失效. 解决方法:使用transform样式的元素,不要包含fixed定位的子元素.

  3. 为WCF增加UDP绑定(实践篇)

    这两天忙着系统其它功能的开发,没顾上写日志.本篇所述皆围绕为WCF增加UDP绑定(储备篇)中讲到的微软示例,该示例我已上传到网盘. 上篇说道,绑定是由若干绑定元素有序组成,为WCF增加UDP绑定其实就 ...

  4. 【breathandlife】气势磅礴、比较好听的旋律有哪些?

    [breathandlife]气势磅礴.比较好听的旋律有哪些? 分享:yunbest作者:来源:2015-10-26 专题:breathandlife [breathandlife]气势磅礴.比较好听 ...

  5. centos 以太坊多节点私链搭建

    环境  centos 7   搭建 3 个节点的 私链. 第一步 安装 一些依赖的 工具 yum update -y && yum install git wget bzip2 vim ...

  6. 《DSP using MATLAB》Problem 8.13

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  7. Struts2接受请求参数三种常用方法

    一 接受请求参数主要有三种:属性驱动 对象驱动 模型驱动<model Driven> 方式1:在Action中接收请求参数不需要使用request对象,在Action中定义与请求参数相同名 ...

  8. vue页面刷新数据丢失问题

    参考: https://blog.csdn.net/aliven1/article/details/80743470          https://blog.csdn.net/liang37712 ...

  9. 04.Hibernate常用的接口和类---SessionFactory类和作用

    是一个生成Session的工厂类 特点: 1.由Configuration通过加载配置文件创建该对象. SessionFactory factory = config.buildSessionFact ...

  10. 刷屏的海底捞超级APP究竟是怎样与阿里云合作的

    海底捞正式发布了千人千面超级App已有两月,这家餐饮企业总能带给人们不一样的创新能力.谁能想到25年前从四川起家的火锅店,现在门店遍布国内近100座城市,已开门店超400家,海外门店也有50多家,全球 ...