是套废题。T1题面错了,T2细节多而暴力>部分分,T3题目错了。

T1:打表

题面应该是输出差值期望而不是答案值期望。

看到题目,果断打表。

答案就是所有值差之和除2的k次方。

 #include<cstdio>
int k,a[];long long ans;
int main(){
freopen("table.in","r",stdin);freopen("table.out","w",stdout);
scanf("%d%lld",&k,&ans);
for(int i=;i<<<k;++i)scanf("%d",&a[i]);
ans=a[ans];
for(int i=;i<<<k;++i)a[i]-=ans;
for(int i=;i<<<k;++i)if(a[i]<)a[i]*=-;ans=;
for(int i=;i<<<k;++i)ans+=a[i];ans%=;
for(int i=;i<=k;++i)ans=ans*%;
printf("%lld\n",ans);
}

T2:蛇

蛇的路径一定是先走一个左括号形,再曲折右走,再走一个右括号。

Hash。处理左括号右括号。

dp。处理曲折前行。

左括号的预处理答案作为dp数组的初值。

细节很多,注意单独一个左括号/右括号的情况。

注意长度为1的括号不算括号,但是长度为0的算。

调4个小时就能AC了。

 #include<bits/stdc++.h>
using namespace std;
#define ul unsigned long long
const int mod=1e9+;
int ans,n,l,dp[][][],DP[][][],ok=;
char s[][],S[];ul hsh[][],ihsh[][],shsh[],pw[];
ul Hsh(int opt,int l,int r){return hsh[opt][r]-hsh[opt][l-]*pw[r-l+];}
ul Ihsh(int opt,int r,int l){return ihsh[opt][l]-ihsh[opt][r+]*pw[r-l+];}
ul Shsh(int l,int r){return shsh[r]-shsh[l-]*pw[r-l+];}
int main(){
freopen("snake.in","r",stdin);freopen("snake.out","w",stdout);
scanf("%s%s%s",s[]+,s[]+,S+);
while(s[][n+])n++;while(S[l+])l++;bg:
if(l==){for(int i=;i<;++i)for(int j=;j<=n;++j)if(s[i][j]==S[])ans++;cout<<ans<<endl;return ;}
if(l==){
for(int i=;i<;++i)for(int j=;j<n;++j)if(s[i][j]==S[]&&s[i][j+]==S[])ans++;
for(int j=;j<=n;++j)if(s[][j]==S[]&&s[][j]==S[])ans++;
for(int i=;i<;++i)for(int j=;j<=n;++j)if(s[i][j]==S[]&&s[i][j-]==S[])ans++;
for(int j=;j<=n;++j)if(s[][j]==S[]&&s[][j]==S[])ans++;
cout<<ans<<endl;return ;
}
for(int i=;i<;++i)for(int j=;j<=n;++j)hsh[i][j]=hsh[i][j-]*+s[i][j]-'a';
for(int i=;i<;++i)for(int j=n;j;--j)ihsh[i][j]=ihsh[i][j+]*+s[i][j]-'a';
pw[]=;for(int i=;i<=n;++i)pw[i]=pw[i-]*;
for(int i=;i<=l;++i)shsh[i]=shsh[i-]*+S[i]-'a';
for(int i=;i<=n;++i)for(int j=;j<=i&&j<<<=l;++j)for(int k=;k<;++k)
if(Hsh(k,i-j+,i)==Shsh(j+,j<<)&&Ihsh(k^,i,i-j+)==Shsh(,j))
dp[k][i+][j<<|]+=s[k][i+]==S[j<<|],ans+=(j<<==l)*ok;
for(int i=;i<=n+;++i)for(int j=;j<<<=l&&i+j-<=n;++j)for(int k=;k<;++k)
if(Hsh(k,i,i+j-)==Shsh(l-j-j+,l-j)&&Ihsh(k^,i+j-,i)==Shsh(l-j+,l))
DP[k][i][l-j-j+]+=(s[k][i]==S[l-j-j+]||j==),ans+=((j<<)==l)*ok;
for(int k=;k<;++k)for(int i=;i<=n+;++i)dp[k][i][]=DP[k][i][l-]=;
for(int i=;i<n;++i)for(int j=;j<l;++j)for(int k=;k<;++k)ans+=dp[k][i][j]*DP[k][i][j];
for(int k=;k<;++k)for(int i=;i<=n;++i)if(s[k][i]==S[])dp[k][i][]=;
for(int i=;i<=n;++i){
for(int j=l;j>;--j)for(int k=;k<;++k)if(i&&s[k][i]==S[j])dp[k][i][j]=(dp[k][i][j]+dp[k][i-][j-])%mod;
for(int j=l;j>;--j)for(int k=;k<;++k)if(i&&s[k][i]==S[j])dp[k][i][j]=(dp[k][i][j]+dp[k^][i][j-])%mod;
for(int j=l;~j;--j)for(int k=;k<;++k)ans=(ans+1ll*dp[k][i][j]*DP[k][i+][j+])%mod;
}
// for(int k=0;k<=1+l;++k,puts(""))for(int i=0;i<2;++i,puts(""))for(int j=1;j<=n+1;++j)printf("%d/%d ",dp[i][j][k],DP[i][j][k]);
if(ok){reverse(S+,S+l+);memset(dp,,sizeof dp);memset(DP,,sizeof DP);ok=;goto bg;}
cout<<ans<<endl;
}

T3:题目

废题。

[考试反思]1110csp-s模拟测试108:消遣的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. [考试反思]0801NOIP模拟测试11

    8月开门红. 放假回来果然像是神志不清一样. 但还是要接受这个事实. 嗯,说好听点,并列rank#7. 说难听点,垃圾rank#18. 都不用粘人名就知道我是哪一个吧... 因为图片不能太长,所以就不 ...

随机推荐

  1. 修改element-ui默认属性

    修改element ui默认的样式 如果要组件内全局修改 首先在浏览器里F12找到element默认的UI类名 找到要修改的默认类名以后 在文件中修改代码,重写属性 <style> .el ...

  2. JS内置对象-Array之forEach()、map()、every()、some()、filter()的用法

    简述forEach().map().every().some()和filter()的用法 在文章开头,先问大家一个问题: 在Javascript中,如何处理数组中的每一项数据? 有人可能会说,这还不简 ...

  3. Weed3 for java 新的微型ORM框架

    Weed3,微型ORM框架(支持:java sql,xml sql,annotation sql:存储过程:事务:缓存:监听:等...) 05年时开发了第一代: 08年时开发了第二代,那时候进入互联网 ...

  4. RocketMQ 整合 DLedger(多副本)即主从切换实现平滑升级的设计技巧

    目录 1.阅读源码之前的思考 2.从 Broker 启动流程看 DLedger 2.1 构建 DefaultMessageStore 2.2 增加节点状态变更事件监听器 2.3 调用 DefaultM ...

  5. 《Java基础知识》Java常量的申明和使用

    常量就是从程序开始运行到结束都不变的量.在 Java 程序设计中,使用关键字“final”来声明一个常量,例如下面的程序代码. 这里的 x 是一个常量,但是是在某个方法内的常量,也可以称为成员常量(作 ...

  6. VScode安装golang插件详细教程

    可能是由于非科班自学编程,所以在安装插件的时候虽然参考了很多人写的教程,但是总安装不成功,在综合各位大牛的教程之后进行总结,并且亲自实践安装成功,希望能给初学编程的人一些帮助,如果有不对的地方还希望大 ...

  7. 一种分片更新ubi卷的方式(基于ubiupdatevol,拓展fifo支持)

    ubi卷的更新方式 对于ubi卷,不能像普通块设备一样进行随机读写.每次更新需要从头写入. 具体的,需要在打开对应的设备之后,先执行一个ioctl UBI_IOCVOLUP,同时传入要更新的数据大小. ...

  8. Vue学习笔记:提升开发效率和体验的常用工具

    Vetur 用途: 语法高亮 标签补全,模板生成 Lint检查 格式化 vs code环境配置文件 文件-->首选项-->搜索veture(找不到需要自行安装)-->在setting ...

  9. 远程桌面MATLAB启动失败问题解决

    博客:博客园 | CSDN | blog 远程桌面打开MATLAB会报错,解决办法,打开matlab的licenses路径,如matlab/R2017b/licenses/,路径下存有license文 ...

  10. 1、看源码MVC如何实例化控制器?

    我们知道MVC请求进来,然后路由匹配,然后找到控制器和Action,最后会调用Action方法,但是大家想想控制器是个普通的类,Action是个普通的实例方法,要想调用Action必须先实例化控制器, ...