我。。。

行吧大概说说。

T1打的n2dp,什么随机化什么改变读入顺序都能AC。

没想优化。打了个链表优化dp。不知为何WA了。

T2读错题,死了。

T3的50分暴力没来得及优化感觉思路很神仙(然而并没有特别神仙)

打了3个对拍,T1还是一个spj对拍。然后各种AC。。。

T2读错了题对拍显然也是错的。。

呃啊。。。

T2子任务测试点放错了,然后这次要重测。

每次重测的题我都爆零(3次了),每次数据出锅导致我丢AC的都没有重测(2次)。

Update:这次重测我的0分读错题代码变成了10分!!!

T1:Set

我曾经在想鸽巢原理会怎么考。

这题挺好的,出题人的想法很好,但是他并没有尝试去卡那些乱搞的人。

为什么模数是n呢。。。肯定有值得利用的地方。

因为一共有n+1个位置的前缀和的值,而只有n种不同的取值。

那么一定有重复的值,那么对应的两个位置做差就能被整除,所以这一段区间就是合法的。

思路很棒!

 #include<cstdio>
int n,x[],lst[],sum;
int main(){
scanf("%d",&n);
for(int i=;i<=n;++i)scanf("%d",&x[i]);
lst[]=;
for(int i=;i<=n;++i){
sum=(sum+x[i])%n;
if(lst[sum]){printf("%d\n",i-lst[sum]+);for(int j=lst[sum];j<=i;++j)printf("%d ",j);return ;}
lst[sum]=i+;
}
}

思路积累:

  • 鸽巢原理
  • 前缀和同余等价于区间和整除

T2:Read

书是可以换顺序的啊。。。。

卡空间的情况下求众数出现次数是否大于一半。

先求出现最多的数。

那么出现这个数就是目前位置次数最多的就cnt++,否则--,cnt=0时更新这个值。

这样的话如果它的数量超过一半的话就一定会有盈余。

所以你最后记录下的数要么就是出现了超过一半次数的数(众数),要么就是一个没有意义的数。

再跑一遍,判断这个数出现了几次就好了。

 #include<cstdio>
int m,k,c[],X[],Y[],Z[],ans,id=,cnt,tms,N;long long lst;
int main(){
scanf("%d%d",&m,&k);const int K=(<<k)-;
for(int i=;i<=m;++i)scanf("%d",&c[i]),N+=c[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]);
for(int i=;i<=m;++i){
lst=X[i];
if(!cnt)id=lst,cnt++;else if(lst==id)cnt++;else cnt--;
for(int j=;j<=c[i];++j){
lst=(lst*Y[i]+Z[i])&K;
if(!cnt)id=lst,cnt++;else if(lst==id)cnt++;else cnt--;
}
}
for(int i=;i<=m;++i){
lst=X[i];tms+=lst==id;
for(int j=;j<=c[i];++j)lst=(lst*Y[i]+Z[i])&K,tms+=lst==id;
}
if(tms>N-tms-)printf("%d\n",tms-(N-tms)-);else puts("");
}

思路积累:

  • 模拟法求众数?
  • hash_map。(非正解)

T3:Race

遇到异或容易想到trie。

可以发现,建出trie后,对于一个特定的数,我们把它的路径上的兄弟节点(m个)的权值记下来。

设为st数组,那么其含义就是在一半的场次中,有st[i]个人的数同时比他大。(研究一下二进制然后看看trie就明白了)

而st的每一位是自由组合的。

暴力就是跑一边背包,记录每种排名的方案数,st就相当与物品,最后把排名与最终得分相乘。

但是我们并没有利用题目中平方的性质。

那个式子其实就是$ \sum (st[i]+st[j]+st[k]+...+st[p])^2 $

st在一半的情况中会出现在和式里。

那么对于特定的i在一半的和式里会出现项$ st[i]^2 $

对于特定的i和j,在一半的一半即1/4的情况里会同时在和式里出现,它们的贡献就是$ 2\times st[i] \times st[j] $

可以再合并合并式子也可以就此打住。

反正把上面的答案加起来(可以m2枚举,也可以前缀和优化到m)之后乘上总方案数就是了。

总方案数不要用快速幂,kxT90了(我也感觉不正常),直接左移就行了啊。。。

代码实现极其简单。

 #include<cstdio>
#define mod 1000000007
int t[][],w[],n,cnt,st[],m,x[],rt,tot;
void insert(int &p,int num,int al){
if(!p)p=++cnt;
w[p]++;
if(al==-)return;
insert(t[p][(num&<<al)?:],num,al-);
}
void ask(int p,int num,int al){
if(al==-)return;
st[al]=w[t[p][(num&<<al)?:]];
ask(t[p][(num&<<al)?:],num,al-);
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i)scanf("%d",&x[i]),insert(rt,x[i],m-);
for(int i=;i<=n;++i){
ask(rt,x[i],m-);
long long ans=;
for(int i=;i<m;++i)for(int j=i;j<m;++j)ans=(ans+1ll*st[i]*st[j])%mod;
(ans<<=m-)%=mod;
tot^=ans;
}printf("%d\n",tot);
}

思路积累:

  • 二进制与trie
  • 平方式的特点:拆开后每一项都是2次所以枚举是n2
  • 卡常是一种习惯:用位运算

[考试反思]0918csp-s模拟测试46:残存的更多相关文章

  1. [考试反思]0718 NOIP模拟测试5

    最后一个是我...rank#11 rank#1和rank#2被外校大佬包揽了. 啊...考的太烂说话底气不足... 我考场上在干些什么啊!!! 20分钟“切”掉T2,又27分钟“切”掉T1 切什么切, ...

  2. 2019.9.18 csp-s模拟测试46 反思总结

    神志不清: 回去休息(x)继续考试(√) 非常爆炸的一次考试.看错题码完T1回去再看发现自己过于幼稚,T2读完题看着16mb的空间秒出正解然后逻辑出现致命失误100pts->0pts,T3看了一 ...

  3. [考试反思]0814NOIP模拟测试21

    前两名是外校的240.220.kx和skyh拿到了190的[暴力打满]的好成绩. 我第5是170分,然而160分就是第19了. 在前一晚上刚刚爆炸完毕后,心态格外平稳. 想想前一天晚上的挣扎: 啊啊啊 ...

  4. [考试反思]1109csp-s模拟测试106:撞词

    (撞哈希了用了模拟测试28的词,所以这次就叫撞词吧) 蓝色的0... 蓝色的0... 都该联赛了还能CE呢... 考试结束前15分钟左右,期望得分300 然后对拍发现T2伪了写了一个能拿90分的垃圾随 ...

  5. [考试反思]0909csp-s模拟测试41:反典

    说在前面:我是反面典型!!!不要学我!!! 说在前面:向rank1某脸学习,不管是什么题都在考试反思后面稍微写一下题解. 这次是真的真的运气好... 这次知识点上还可以,但是答题策略出了问题... 幸 ...

  6. [考试反思]0729NOIP模拟测试10

    安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...

  7. [考试反思]0714/0716,NOIP模拟测试3/4

    这几天时间比较紧啊(其实只是我效率有点低我在考虑要不要坐到后面去吹空调) 但是不管怎么说,考试反思还是要写的吧. 第三次考试反思没写总感觉缺了点什么,但是题都刷不完... 一进图论看他们刷题好快啊为什 ...

  8. [考试反思]1003csp-s模拟测试58:沉淀

    稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...

  9. [考试反思]0816NOIP模拟测试23

    210 210 210 170 还可以.暴力打满就rk4了? 但不管怎么说,总算是在改完题之后理直气壮的写考试反思了. T1是个dp,说水也不太水.(当然某脸只要A掉了一道题就要说那是水题) 我的思路 ...

随机推荐

  1. [Note] CentOS 命令

    1. uninstall software install by yum install yum install -y [package-name] //无-y则交互式安装 yum remove [p ...

  2. mydumper 介绍及使用

    1 Mydumper 介绍 Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具. Mydumper主要特性: 轻量级C语言写的 多线程备份,备份后会生成多个备份文件 事务 ...

  3. KEIL软件中编译时出现的Error L6200E: symbol multiply defined ...的解决方法

    原因:如LCD.C文件使用了bmp.h中的image[ ]变量,那么就不能将#include"bmp.h"放在LCD.H中,要将#include"bmp.h"放 ...

  4. 秘制CSP模板

    不定期更细中...... 声明1:由于js的问题导致VIEW CODE按钮只能点"I"附近才能展开代码 声明2:为了排版的美观,所有的解释以及需要留意的地方我都放在代码中了 声明3 ...

  5. C、C++的Makefile模板

    目录 Makefile模板 用法 编译C程序 编译C++程序 其他 Tips Makefile模板 CC = gcc LD = $(CC) TARGET = $(notdir $(CURDIR)) S ...

  6. Web安全之爆破中的验证码识别~

    写爆破靶场的时候发现对于爆破有验证码的有点意思~这里简单总结下我们爆破有验证码的场景中几种有效的方法~~~ 0x01 使用现成工具 这里有pkav团队的神器PKAV HTTP Fuzzer 1.5.6 ...

  7. 内网渗透bypassuac和smb溢出

    对内网渗透需要渗透的目标主机处于跨网段和uac限制的情况做一个渗透记录 环境大致如下 拥有shell权限的win7(有uac限制,处于双网段) 和同win7同一网段下暂时无权限的靶机xp 先对有权限的 ...

  8. [51nod1670] 打怪兽

    lyk在玩一个叫做“打怪兽”的游戏.游戏的规则是这样的.lyk一开始会有一个初始的能量值.每次遇到一个怪兽,若lyk的能量值>=怪兽的能量值,那么怪兽将会被打败,lyk的能量值增加1,否则lyk ...

  9. 如何巧妙地在基于 TCP Socket 的应用中实现用户注册功能?

    通常,在基于TCP的应用中(比如我开源的GGTalk即时通信系统),当TCP连接建立之后,第一个请求就是登录请求,只有登录成功以后,服务器才会允许客户端进行其它性质的业务请求.但是,注册用户这个功能比 ...

  10. window下设置定时任务及基本配置

    ### window下设置定时任务及基本配置 轉載請註明出處: https://www.cnblogs.com/funnyzpc/p/11746439.html |****************** ...