[考试反思]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. 都不用粘人名就知道我是哪一个吧... 因为图片不能太长,所以就不 ...
随机推荐
- 【Nodejs】326- 从零开发一个node命令行工具
本文由 IMWeb 社区授权转载自腾讯内部 KM 论坛.点击阅读原文查看 IMWeb 社区更多精彩文章. 什么是命令行工具? 命令行工具(Cmmand Line Interface)简称cli,顾名思 ...
- Sample Preparation by Easy Extraction and Digestion (SPEED) - A Universal, Rapid, and Detergent-free Protocol for Proteomics based on Acid Extraction(一种使用强酸的蛋白质提取方法SPEED,普适,快速,无需去垢剂)-解读人:李思奇
期刊名:Mol Cell Proteomics 发表时间:(2019年12月) IF:4.828 单位:德国Robert Koch 研究所 物种:多种 技术:新蛋白提取和酶解方法 一. 概述: 本文设 ...
- wxxcx_learn独立验证与REST
模块,控制器,方法 validate 接口参数校验 独立验证(验证器对独立验证做了更好的封装) $date = [ 'name' => '111', 'email' => '123@qq ...
- 分析比较 opacity: 0、visibility: hidden、display: none 优劣和适用场景
总结: 结构: display:none: 会让元素完全从渲染树中消失,渲染的时候不占据任何空间, 不能点击, visibility: hidden:不会让元素从渲染树消失,渲染元素继续占据空间,只是 ...
- 区块链学习——HyperLedger-Fabric v0.6环境搭建详细教程
v0.6 的架构相对简单,适合作为实验或学习来使用. 一.环境准备 一台云服务器(笔者使用的是阿里云的1核-2GB内存) Go语言环境 Docker安装 docker-compose安装 二.环境搭建 ...
- ORACLE存储过程详解
1.定义 所谓存储过程(Stored Procedure),就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中.在使用时候,用户通过指定已经定义的存储过程名字并给 ...
- java面试题干货126-170
这部分主要是开源Java EE框架方面的内容,包括Hibernate.MyBatis.Spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题, ...
- re常用模块
re模块:从字符串里面找到特定的字符串 re的基本语法(匹配规则) import re s = '王大炮打炮被大炮打死了 王大炮打炮被大炮打死了' ^:开头 print(re.findall('^王大 ...
- Linux防火墙的相关资料
1.查看防火墙状态 [root@localhost ~]# service iptables status 2.编辑/etc/sysconfig/iptables文件.我们实例中要打开8080端口和9 ...
- HttpRunner学习5--使用variables声明变量
前言 在HttpRunner中,如果需要声明变量,可以通过关键字 variables 来完成,要引用声明的变量,则是通过 $+变量名 (如 $token )来实现.variables 可以在 conf ...