打的big出了点小问题,maxx初值我设的0然后少了10分 第二题暴力打炸 第一题剪了一些没用的枝依然40分 总分70 这是一次失败的考试 string 想到和序列那个题很像,但我没做序列,考场回忆学长讲课,打不出来.最后我口胡了一个CDQ分治,大概能减很多枝比如之前5 6 修改,之后4 6修改,那么其实你5 6不用改. 秉承这个思路,我随意打了一个分治,然后依然40分. 题解 我们可以维护每一段区间字母个数,维护一个桶,每次询问先把桶求出来,按照顺序排序时我们可以顺序枚举26个字母,进行区间修…
旋转子段 连60分都没想,考试一直肝t3,t2,没想到t1最简单 我一直以为t1很难,看了题解发现也就那样 题解 性质1 一个包含a[i]旋转区间值域范围最多为min(a[i],i)----max(a[i],i) 感性理解 举个例子,例如3 7 1 4 5 6 2 这个子段包含a[2]的最大为值域范围2----7 具体证明我不会 性质2 翻转后满足固定点对的点满足 a[i]+i==a[j]+j 证明 因为翻转之前a[i]==j&&a[j]==i才满足翻转之后都构成点对 移项得到a[i]+i…
星际旅行 0分 瞬间爆炸. 考试的时候觉得这个题怎么这么难, 打个dp,可以被儿子贡献,可以被父亲贡献,还有自环,叶子节点连边可以贡献,非叶子也可以贡献,自环可以跑一回,自环可以跑两回, 关键是同一子树会贡献,不同子树也会贡献. 这还不是欧拉图欧拉路问题,awsl 然后我就放弃了这个题 考完试看题解,tm一个大水题 虽然好像不算水, 思考两个点之间因为连接的是无向边,所以所有点入度出度都为2. 先不考虑自环 如果把两个点之间无向边拆成两个有向边,那么问题就变成去掉两个边使原图存在欧拉路. 于是乎…
延迟了一天来补一个反思总结 急匆匆赶回来考试,我们这边大家的状态都稍微有一点差,不过最后的成绩总体来看好像还不错XD 其实这次拿分的大都是暴力[?],除了某些专注于某道题的人以及远程爆踩我们的某学车神犇 大约不粘题面也是可以的[越来越懒] T1: 当时我甚至完全没有正解的思路,最后sort骗了四十分跑路 [某种意义上还挺友好的?送你四十分] 然后接下来的六十分,出题人:想都别想 看看正解,线段树分别维护区间里26个字母出现的数量,每次操作变成查询26次[或者一次查询统计26个],然后修改最多26…
反思: 我考得最炸的一次 怎么说呢?简单的两个题0分,稍难(我还不敢说难,肯定又有人喷我)42分 前10分钟看T1,不会,觉得不可做,完全不可做,把它跳了 最后10分钟看T1,发现一个有点用的性质,仍然认为不可实现 0分 所以T1是什么样的难题呢 即使暴力也有60分,但我楞没想出来暴力怎么打 然后我就挂掉了 t2又是什么样难题 大多数人秒切一个小时切两道, 但这次考试给了我很大启迪,也正是这次考试我才开始使劲刚T1 其实大多数T1都是比较简单的,并没有想象中那么难,这次考试对我来说意义很大 (就…
折纸 题解 考试时无限接近正解,然而最终也只是接近而已了 考虑模拟会爆炸,拿手折纸条试一试,很简单 考你动手能力 代码 #include<bits/stdc++.h> using namespace std; #define ll long long #define A 3100000 ll cj[A],questions[A]; ll len,l,r,n,QAQ; int main(){ scanf("%lld%lld",&len,&QAQ); l=0,r…
入阵曲 题解 应用了一种美妙移项思想, 我们先考虑在一维上的做法 维护前缀和$(sum[r]-sum[l-1])\%k==0$可以转化为 $sum[r]\% k==sum[l-1]\%k$开个桶维护一下即可 然后拓展到二维上 把两行之间所有行拍扁看作一维上的区间, 我们枚举两行和行之间所有列开个桶维护 $n^2 m$复杂度 for(ll i=1;i<=n;i++) for(ll j=1;j<=i;j++){ flag[0]=1; for(ll q=1;q<=m;q++){ t[q]=(s…
矩阵游戏 考试时思路一度和正解一样,考试到最后还是打了80分思路,结果80分打炸了只得了40分暴力分 题解 算出来第一列的总值,每次通过加每两列之间的差值得出下一列的总值 算第一列我们只需要让当前点*行增倍的数量就行了 for(ll i=1;i<=n;i++){ nowlie=(nowlie+elephant(i,1)*hang[i])%mod; sum=(sum+hang[i]); } 算其他列 nowlie=(nowlie+sum)%mod; 可能这一列会加倍只需乘上就行了 ans=(ans…
这次考试T1想到了正解没有去实现,然后就死了,不过我估计就算想到正解也会挂(26^2和暴力一个分),肝了两个小时T2屁都没蹦出来,T3没有搞清那个式子的含义. (不过一分没挂) T1:string 开26棵线段树维护,还有一种更快的方法:对于每个树上的节点,只有左右儿子字符相同时才更新,不然不更新,这种打法将26换成了较小的常数,并且不需要memset,真是出家旅行必备骗分之良器 #include <bits/stdc++.h> typedef long long LL; inline int…
A.string 和河北的一道省选题很像.考场上写的暴力桶排,正解其实就是优化一下这个思路. 开线段树维护字符串中每个字母出现的次数.对于每条询问,区间查询.区间赋值维护即可. 另外,本题卡常严重,正解能被卡到40到90不等.所以直接循环展开乱搞一波? 暴力40分代码: #include<cstdio> #include<iostream> #include<cstring> using namespace std; ; ],n,m; char str[N]; int…