[考试反思]1110csp-s模拟测试108:消遣

是套废题。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:消遣的更多相关文章
- [考试反思]0718 NOIP模拟测试5
最后一个是我...rank#11 rank#1和rank#2被外校大佬包揽了. 啊...考的太烂说话底气不足... 我考场上在干些什么啊!!! 20分钟“切”掉T2,又27分钟“切”掉T1 切什么切, ...
- [考试反思]0814NOIP模拟测试21
前两名是外校的240.220.kx和skyh拿到了190的[暴力打满]的好成绩. 我第5是170分,然而160分就是第19了. 在前一晚上刚刚爆炸完毕后,心态格外平稳. 想想前一天晚上的挣扎: 啊啊啊 ...
- [考试反思]1109csp-s模拟测试106:撞词
(撞哈希了用了模拟测试28的词,所以这次就叫撞词吧) 蓝色的0... 蓝色的0... 都该联赛了还能CE呢... 考试结束前15分钟左右,期望得分300 然后对拍发现T2伪了写了一个能拿90分的垃圾随 ...
- [考试反思]0909csp-s模拟测试41:反典
说在前面:我是反面典型!!!不要学我!!! 说在前面:向rank1某脸学习,不管是什么题都在考试反思后面稍微写一下题解. 这次是真的真的运气好... 这次知识点上还可以,但是答题策略出了问题... 幸 ...
- [考试反思]0729NOIP模拟测试10
安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...
- [考试反思]0714/0716,NOIP模拟测试3/4
这几天时间比较紧啊(其实只是我效率有点低我在考虑要不要坐到后面去吹空调) 但是不管怎么说,考试反思还是要写的吧. 第三次考试反思没写总感觉缺了点什么,但是题都刷不完... 一进图论看他们刷题好快啊为什 ...
- [考试反思]1003csp-s模拟测试58:沉淀
稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...
- [考试反思]0816NOIP模拟测试23
210 210 210 170 还可以.暴力打满就rk4了? 但不管怎么说,总算是在改完题之后理直气壮的写考试反思了. T1是个dp,说水也不太水.(当然某脸只要A掉了一道题就要说那是水题) 我的思路 ...
- [考试反思]0801NOIP模拟测试11
8月开门红. 放假回来果然像是神志不清一样. 但还是要接受这个事实. 嗯,说好听点,并列rank#7. 说难听点,垃圾rank#18. 都不用粘人名就知道我是哪一个吧... 因为图片不能太长,所以就不 ...
随机推荐
- kubernetes-部署harbor
Habor是由VMWare中国团队开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于 ...
- Unity学习路线
转载请标明原文地址:http://www.cnblogs.com/zhangyukof/p/7068615.html 1.Unity下载安装和破解方法: http://blog.sina.com.cn ...
- vue之新手使用
vue中文网站:https://cn.vuejs.org/v2/guide/installation.html 包含了安装.使用.api.视频. 一. 什么是 Vue Vue 是一个前端框架,特点是 ...
- Git详细教程之创建本地仓库和连接Github仓库
首先要知道不只有代码,任何类型的文件都可以进行版本控制,版本控制很重要的一个特性就是你可以随时修改,比如git会记录你的任何操作,如果你想要回退到任何一个历史操作,你可以通过git轻松达到. 本地仓库 ...
- Python基础-day02-2
运算符 目标 算数运算符 比较(关系)运算符 逻辑运算符 赋值运算符 运算符的优先级 数学符号表链接:https://zh.wikipedia.org/wiki/数学符号表 01. 算数运算符 是完成 ...
- JS Math对象、日期对象、函数、定时器
Math对象 开平方:sqrt 绝对值:abs π:PI x的y次方:pow 四舍五入取整:round 向下取整:floor 向上取整:ceil 最大值:max 最小值: min 随机数:random ...
- 参加杭州 2019 AI Bootcamp有感与总结(1)
上周末参加了微软人工智能的活动,感慨多多. 感谢活动主讲和主办方. 通过参加活动,对微软认知服务和ML.NET的现状与发展有了更多的认识.文章不是活动内容的堆叠,总结少点,更多的大概是感慨. 微软认知 ...
- vue组件常用声明方式
一.前言 这是自己重新写的一个,感觉以前的太写了很多不必要的方式 实际当中基本不会用的 所以自己写了一个常用的组件什么方式 更加的通俗易懂 二.代码如下 <!DOCTYPE html> & ...
- 带你自行搭建虚拟机和Redis集群环境,值得收藏!
前言: 我们看到分析 Redis 使用或原理的文章不少,但是完整搭建一套独立的 redis 集群环境的介绍,并不是很多或者说还不够详细. 那么,本文会手把手带着大家搭建一套 Redis 集群环境,Re ...
- wpf 模拟抖音很火的罗盘时钟,附源码,下载就能跑
wpf 模拟抖音很火的罗盘时钟,附源码 前端时间突然发现,抖音火了个壁纸,就是黑底蕾丝~~~ 错错错,黑底白字的罗盘时钟! 作为程序员的我,也觉得很新颖,所以想空了研究下,这不,空下来了就用wpf, ...