神志不清:

回去休息(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. 报javax.servlet.ServletException: Servlet.init() for servlet [springmvc] threw exception的解决记录

    1.异常详情: 2.异常分析: 从异常的详情中看出:companyService未找到,出现这种情况的愿意可能是companyServiceImpl类没有交给IOC容器管理,但是经过我已经在该类上打了 ...

  2. IDEA修改git账号密码

    wiin10:控制面板-凭据管理器-Windows凭据-普通凭据-git

  3. mysql 一次性插入的数据量过大报错max_allowed_packet解决方法

    查询: show VARIABLES like ‘%max_allowed_packet%‘; 记录下数字(默认是一个7位) 执行语句: ; 重启服务 再查询 该数字 ,如果没变,则修改mysql的m ...

  4. 用maven创建Spring MVC项目

    用maven创建Spring MVC项目 mvn archetype:generate -DgroupId=fry-arthur -DartifactId=spring-mvc-study -Darc ...

  5. 郝斌–SQL Server2005学习笔记

    数据库(Database)狭义上是指存储数据的仓库,广义上包含对数据进行存储和管理的软件(DBMS)和数据本身.数据库由表.关系和操作组成. 一.数据库简介 1.为什么需要数据库 数据库简化了对数据的 ...

  6. Python-pip更改国内源

    windows方式: 1.打开任意文件夹,在上方地址栏中输入%appdata% 2.在此目录里新建文件夹pip 3.在pip文件夹里新建文件名:pip.ini 4.把以下内容复制到pip.ini中,保 ...

  7. css 实现头像周围光圈动态效果

    效果: html文件: <img class="userHead" src="xx/user.jpg"> css文件: .userHead{ wid ...

  8. vue 路由跳转记住滚动位置,返回时回到上次滚动位置

    参考:https://blog.csdn.net/qq_40204835/article/details/79853685 方法一: 利用Keep-Alive和监听器 1.首先在路由中引入需要的模块 ...

  9. java 模拟简单搜索

    Java 模拟简单搜索 实体类 package org.dennisit.entity; /** * * * @version : 1.0 * * @author : 苏若年 <a href=& ...

  10. sql草稿

    参考:MySQL 内连接.外连接.左连接.右连接.全连接 SELECT count(*) FROM `t_product_base` select m_name from t_medicinal_in ...