[考试反思]0920csp-s模拟测试48:弱小
注:T1全场46个人里42个AC了。
%%%zkt也AK了呢越来越强啊
我是真的越来越弱了吗?
我到底在干什么。。。
在难度递增的题里分数递增。。。
考试过程大体还好,但是如此快速地WA掉T1也真是蠢得不行了。
T2没想到bitset,对1500这种数据范围还是不敏感。
T3想出来还是挺快的,注意观察数据范围就万事大吉。(二进制相关的题我的得分平时都不太低,是撞大运了?)
然后给T2和T3都上了个对拍,T3出锅了剩30分幸亏改过来了。
然而感觉T1实在太傻逼了暴力和正解是一个复杂度的就没打,手模几个样例就结束了。
题目的样例和手模的样例都在字串和子序列下答案相同。。。
但是这次不是看错题了,我也知道是子串,但是打到一半没过脑子就飘移到子序列上了。(因为原来做过一个那个题)
我,傻子,太弱了。
不要轻视最简单的题,你A不掉的!该打对拍还是要对拍。
bitset是出题人很喜欢的一个考点,1500的数据范围可能指向n3/32
T1:String Master
简单dp或硬匹配。
自行找不同?EXP++
#include<cstdio>
#include<iostream>
using namespace std;
char a[],b[];int n,k,dp[][][];
int main(){
scanf("%d%d%s%s",&n,&k,a+,b+);
for(int i=;i<=n;++i)for(int j=;j<=n;++j)for(int l=;l<=k;++l){
if(a[i]==b[j])dp[i][j][l]=max(dp[i][j][l],dp[i-][j-][l]+);
if(l)dp[i][j][l]=max(dp[i][j][l],dp[i-][j-][l-]+);
dp[i][j][l]=max(dp[i][j][l],max(dp[i-][j][l],dp[i][j-][l]));
}printf("%d\n",dp[n][n][k]);
}
10分的子序列版本
#include<cstdio>
#include<iostream>
using namespace std;
char a[],b[];int n,k,dp[][][],ans;
int main(){
scanf("%d%d%s%s",&n,&k,a+,b+);
for(int i=;i<=n;++i)for(int j=;j<=n;++j)for(int l=;l<=k;++l){
if(a[i]==b[j])dp[i][j][l]=max(dp[i][j][l],dp[i-][j-][l]+);
if(l)dp[i][j][l]=max(dp[i][j][l],dp[i-][j-][l-]+);
ans=max(dp[i][j][l],ans);
}printf("%d\n",ans);
}
100分的子串版本
思路积累:
- 细致。
T2:Tourist Attaction
容斥。所有路径-第1,3个点相同的路径-第2,4个点相同的路径+第13和24分别相同的路径-三元环数×6。
#include<cstdio>
int n,d[];long long dp[][],ans;char s[][];
int main(){
scanf("%d",&n);
for(int i=;i<=n;++i)scanf("%s",s[i]+);
for(int i=;i<=n;++i)dp[][i]=;
for(int i=;i<=n;++i)for(int j=;j<=n;++j)if(s[i][j]=='')d[i]++;
for(int t=;t<=;++t)for(int i=;i<=n;++i)for(int j=;j<=n;++j)if(s[i][j]=='')dp[t][i]+=dp[t-][j];
for(int i=;i<=n;++i)ans+=dp[][i];
for(int i=;i<=n;++i)ans-=d[i]*d[i]*;
for(int i=;i<=n;++i)for(int j=;j<=n;++j)if(s[i][j]=='')ans++;
for(int i=;i<=n;++i)for(int j=i+;j<=n;++j)if(s[i][j]=='')
for(int k=j+;k<=n;++k)if(s[i][k]==''&&s[j][k]=='')ans-=;
printf("%lld\n",ans);
}
暴力
#include<cstdio>
#include<bitset>
using namespace std;
bitset<>b[];
int n,d[];long long dp[][],ans;char s[][];
int main(){
scanf("%d",&n);
for(int i=;i<=n;++i)scanf("%s",s[i]+);
for(int i=;i<=n;++i)dp[][i]=;
for(int i=;i<=n;++i)for(int j=;j<=n;++j)if(s[i][j]=='')d[i]++;
for(int t=;t<=;++t)for(int i=;i<=n;++i)for(int j=;j<=n;++j)if(s[i][j]=='')dp[t][i]+=dp[t-][j];
for(int i=;i<=n;++i)ans+=dp[][i];
for(int i=;i<=n;++i)ans-=d[i]*d[i]*;
for(int i=;i<=n;++i)for(int j=;j<=n;++j)if(s[i][j]=='')ans++;
for(int i=;i<=n;++i)for(int j=;j<=n;++j)if(s[i][j]=='')b[i][j]=;
for(int i=;i<=n;++i)for(int j=i+;j<=n;++j)if(b[i][j])ans-=(b[i]&b[j]).count()*;
printf("%lld\n",ans);
}
bitset优化后就是正解
思路积累:
- STL bitset。32这个数字在复杂度里不可忽视!!
T3:Walk
观察数据范围,权值小于220,大约是1048576。既然没有出到230显然复杂度与之有关。
题目里有特殊性质,边权都是1,那么就是一个BFS而不是Dijkstra。(然而并没有卡Dijkstra的log复杂度)
那么每一个点只会被更新一次,那1048576也只会各被更新一次。
存进vector里面用dfs更新即可。
#include<cstdio>
#include<vector>
using namespace std;
vector<int>v[];
int n,val[],dt[],m,fir[],l[],to[],cnt,al[];
int q[],qt;
void link(int a,int b){l[++cnt]=fir[a];fir[a]=cnt;to[cnt]=b;}
inline void read(register int &p,register char ch=getchar()){p=;
while(ch<''||ch>'')ch=getchar();
while(ch>=''&&ch<='')p=(p<<)+(p<<)+ch-,ch=getchar();
}
void update(register const int num,register const int d){
al[num]=;
for(register int i=;i<v[num].size();++i)if(dt[v[num][i]]>d)dt[v[num][i]]=d,q[++qt]=v[num][i];
for(register int j=num;j;j-=j&-j)if(!al[num^(j&-j)])update(num^(j&-j),d);
}
int main(){//freopen("t3.in","r",stdin);freopen("t3.out","w",stdout);
read(n);read(m);
for(int i=;i<=n;++i)read(val[i]),v[val[i]].push_back(i);
for(int i=,x,y;i<=m;++i)read(x),read(y),link(x,y);
for(int i=;i<=n;++i)dt[i]=;
q[qt=]=;
for(int qh=;qh<=qt;++qh){
for(int i=fir[q[qh]];i;i=l[i])if(dt[to[i]]>dt[q[qh]]+)dt[to[i]]=dt[q[qh]]+,q[++qt]=to[i];
if(!al[val[q[qh]]])update(val[q[qh]],dt[q[qh]]+);
}
for(int i=;i<=n;++i)printf("%d\n",dt[i]==?-:dt[i]);
}
思路积累:
- 边权为1的图指向BFS。
- 二进制的子集枚举:去掉其中一位再迭代搜索(有重复,但是在每个点全场只需更新1次时复杂度是对的)
[考试反思]0920csp-s模拟测试48:弱小的更多相关文章
- [考试反思]0718 NOIP模拟测试5
最后一个是我...rank#11 rank#1和rank#2被外校大佬包揽了. 啊...考的太烂说话底气不足... 我考场上在干些什么啊!!! 20分钟“切”掉T2,又27分钟“切”掉T1 切什么切, ...
- [CSP-S模拟测试48]反思+题解
状态很垃圾的一场考试.感觉“这么多分就够了”的心态很是在给自己拖后腿. 打开题面,第一页赫然写着:$Claris' Contest$. 吓得我差点手一抖关掉.不过后来想想似乎强到变态的人出的题都不是很 ...
- 2019.9.20 csp-s模拟测试48 反思总结
头疼,不说废话了,祝大家rp++. T1: 暴力枚举,n3. 枚举两个串开始匹配的位置,每一次尽量修改. #include<iostream> #include<cstdio> ...
- [考试反思]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:沉淀
稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...
随机推荐
- A-05 前向选择法和前向梯度法
目录 前向选择法和前向梯度法 一.前向选择法 1.1 余弦相似度求投影 1.2 举例 1.3 前向选择法优缺点 1.3.1 优点 1.3.2 缺点 二.前向梯度法 2.1 举例 2.2 前向梯度法优缺 ...
- e课表项目第二次冲刺周期第四天
昨天干了什么? 昨天,我在网上搜集了相关的资料,即连接安卓自带的数据库,查询了连接的方法,然后在电脑上,做了简单的练习,发现可以用,所以对我们的软件进行数据库的连接,设置了完成按钮的活动,即先保存到数 ...
- Java字符串课后作业
[实验任务] 1.实验题目:字串加密 2.实验内容:古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:
- Java动手动脑第四讲课堂作业
动手动脑1 完全“手写代码实现”随机数生成 纯随机数发生器
- 最强最全的Java后端知识体系
目录 最全的Java后端知识体系 Java基础 算法和数据结构 Spring相关 数据库相关 方法论 工具清单 文档 @(最强最全的Java后端知识体系) 最全的Java后端知识体系 最全的Java后 ...
- Uber Go 语言编程规范
目录 Uber Go 语言编程规范 1. 介绍 2. 编程指南 3. 性能相关 4. 编程风格 5. 编程模式(Patterns) 6. 总结 Uber Go 语言编程规范 相信很多人前两天都看到 U ...
- Microsoft Word 2019 mac破解版下载
Microsoft Word 2019 Mac版是大名鼎鼎的Office办公软件组件之一,能帮助你进行文字排版,可方便的进行创作项目.作业.信件.博客.剧本.笔记.评论文章或简历. Microsoft ...
- 高通电源管理函数的power_supply的调用关系
以msm8909为例,高通的主要文件有几个: qpnp-linear-charger.c(线性充电器) qpnp-vm-bms.c(BMS管理) power_supply_core.c(power_s ...
- 浅谈爬虫 《一》 ===python
浅谈爬虫 <一> ===python ‘’正文之前先啰嗦一下,准确来说,在下还只是一个刚入门IT世界的菜鸟,工作近两年了,之前做前端的时候就想写博客来着,现在都转做python了,如果还 ...
- 21.Linux系统服务之大坑
1.CentOS6启动流程 2.CentOS7启动流程 3.C6和C7的区别 4.运行级别C6&C7 0 关机 1 单用户模式 (超级权限 必须面对实体硬件) 2 暂未使用 3 字符界面(黑框 ...