神志不清:

回去休息(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. webpack静态资源拷贝插件

    处理不需要使用webpack统一打包处理或webpack不支持的文件 安装 npm install copy-webpack-plugin --save-dev 配置 const copyWebpac ...

  2. 移动端自定义键盘的vue组件 ----keyboard

    <style scoped lang="less"> .keyboard { /* height: 250px; */ width: 100%; position: f ...

  3. SPSS科普 | 统计描述

    SPSS科普 | 统计描述 统计描述的目的就是了解数据的基本特征和分布规律,为进一步合理地选择统计方法提供依据.常用的有Frequencies.Descriptives 和Explore过程. 一.F ...

  4. Ubuntu+Ruby+MySQL+Nginx+Redmine部署记录

    (2019年2月19日注:这篇文章原先发在自己github那边的博客,时间是2016年7月26日) 周五的时候老大布置了一个任务下来,要部署一个Redmine用于研发部,同时升级工作室的Redmine ...

  5. Axure教程:如何使用动态面板?动态面板功能详解

    写了几个Axure教程之后发现,可能教程的起点有些高了,过分的去讲效果的实现,而忽略了axure功能以及基础元件的使用,那么从这个教程开始,把这些逐渐的展开讲解. 关于Axure动态面板 动态面板是a ...

  6. java编程题古典算法之兔子问题

    1.题目如下. 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 分析每个月的兔子对数: 1---- ...

  7. adb的安装及配置

    1.下载adb的安装包进行下载 2.将安装报进行解压 3.配置环境变量,将adb的根目录添加到path环境变量中 4.在终端命令行中输入adb  servion命令,检查是否安装成功,如显示版本号则安 ...

  8. Liunx常用命令行(Ubuntu)

    关闭防火墙的命令行: 1. 永久性生效 开启:chkconfig iptables on 关闭:chkconfig iptables off 2. 即时生效,重启后失效 开启:service ipta ...

  9. JPA、Hibernate、Spring data jpa之间的关系

    什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述[对象-关系表]之间的映射关系,并将实体对象持久化到数据库中. 为我们提供了: 1)ORM映射元数据:JPA支 ...

  10. [Swoole系列入门教程 4] 定时器与心跳demo