太弱。还是太弱。

拉不开分差,离第一机房分数线估计还是300多分。

但是,还是要骂:XX出题人。

部分分非常少且没有意义,T1基本只有0/纯暴力20/100三个档,

T2正解是n2但是n3一分不给,还要卡n2的空间,T3的n5有51分但没有任何提示,除了送了与正解根本就无关的7分。

而且造的数据还出了锅,这个出题人啊。。。

出题人是有多痛恨人类。

开考看题。

T1上来先看错了题以为是xor,然后就是trie裸题了,然后直接开始打。

很快地打出来发现过不了样例,然后发现是mod。

重新看题,全不会,傻眼了。

想再找一道最简单的题先做稳住,但是无从下手。

刚开始T2有一个n3的思路,发现没有设分,就绝望了。

想了一个半小时多吧,想出了n2,然后发现卡空间。

太弱了没有直接想到正解,zkt就知道直接按x排序,我和脸和toot都是按y排的。

然后大脸秒掉了空间优化,toot放弃了空间优化拿80分走了。

我以为只有50分于是不想放弃,但是剩下两题还没有打,于是走了。

回去弄了一个T1的随机化+测试点分治暴力,然后忘记取模,本来40分的代码炸成0了。

因为没有打正解所以就没有打对拍。。。

然后T3顺手把特殊性质7分拿下,直接放弃。

回T2,对拍,然后空间优化。

思路还可以,可以节约25%的空间,但是忘了vector会翻倍导致空间浪费,于是结果就是和toot没优化一样,80分。

暴力也要打对拍。

对于卡空间的题要精打细算,注意vector的2倍空间。

get黑科技:resize。

还是没有能把所有能拿下的分拿下,还是弱啊。。。

T1:养花

分块。预处理块中对于100001的所有询问的最大答案。

预处理的方法类似于lower_bound但是可以记在数组上就去掉了不必要的log。

开数组lst[i]记录下这个块里小于等于i的值里的最大值。

那么对于每一个询问就可以搞了:mod k的最大值就是max(lst[k-1],lst[2k-1]-k,lst[3k-1]-2k...)

而计算这个式子的复杂度是调和级数$\sum\limits_{i=1}^{n} \frac{n}{i} = ln n$

所以总的复杂度就是$O(\sqrt{n} \times 100001 \times ln 100001 + m \sqrt{n})$

然而其实不是$\sqrt{n}$,会T的,块要开的稍大一点(1300左右)跑的能快一些

 #include<cstdio>
#include<iostream>
using namespace std;
#define S 1234
#define N 100001
int lst[],n,m,x[],Ans[][],bl[];
int main(){
scanf("%d%d",&n,&m);
const int bs=(n-)/S+;
for(int i=;i<=n;++i)scanf("%d",&x[i]);
for(int i=;i<=bs;++i){
for(int j=;j<=N;++j)lst[j]=;
for(int j=(i-)*S+;j<=i*S&&j<=n;++j)lst[x[j]]=x[j],bl[j]=i;
for(int j=;j<=N;++j)lst[j]=max(lst[j-],lst[j]);
for(int j=;j<=N;++j)for(int k=j;;k+=j){
if(k>N){Ans[i][j]=max(Ans[i][j],lst[N]%j);break;}
Ans[i][j]=max(Ans[i][j],lst[k-]%j);
}
}
for(int t=,l,r,q;t<=m;++t){
scanf("%d%d%d",&l,&r,&q);int ans=;
if(bl[l]==bl[r])for(int i=l;i<=r;++i)ans=max(ans,x[i]%q);
else{
for(int i=l;i<=bl[l]*S;++i)ans=max(ans,x[i]%q);
for(int i=(bl[r]-)*S+;i<=r;++i)ans=max(ans,x[i]%q);
for(int i=bl[l]+;i<bl[r];++i)ans=max(ans,Ans[i][q]);
}printf("%d\n",ans);
}
}

思路积累:

  • 分块不一定都是暴力。
  • 预处理所有询问。

T2:折射

dp式子都不一样。我说我的按y排序后的n2空间的了。(因为另一种我并想不到)

先把x离散化,然后按y排序。我是dp[i][j]表示选到了第i个装置,上上个选的装置的x是j。

先考虑n3,emm还是不说了吧真的是暴力啊,加个if就行。

然后其实我们发现是一个区间加,那么前缀和一下复杂度就对了。

这时候的dp[i][x[j]]+=dp[j][x[i]];

我们发现对于每一个i只从前面的i-1项转移而来,那么总的就是1/2 n2而不是n2

那么我们把要加的项目提前放进vector里,把dp数组滚动,就不会再炸空间了。

 #include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
vector<int>num[];
vector<short>pos[];
int mod(int p){return p>=?p-:p;}
struct ps{int x,y;friend bool operator<(ps a,ps b){return a.y>b.y;}}p[];
bool com(ps a,ps b){return a.x<b.x;}
int dp[],n,ans;
int main(){
scanf("%d",&n);
for(int i=;i<=n;++i)scanf("%d%d",&p[i].x,&p[i].y);
sort(p+,p++n,com);
for(int i=;i<=n;++i)p[i].x=i;
sort(p+,p++n);
for(int i=;i<=n;++i) num[i].resize(i-),pos[i].resize(i-);
for(int i=;i<=n;++i){
for(int j=;j<=n;++j)dp[j]=;
for(int j=;j<num[i].size();++j)dp[pos[i][j]]=mod(dp[pos[i][j]]+num[i][j]);
num[i].clear();pos[i].clear();
for(int j=;j<i;++j)dp[p[j].x]++;
for(int j=;j<p[i].x;++j)dp[j]=mod(dp[j]+dp[j-]);
for(int j=n;j>p[i].x;--j)dp[j]=mod(dp[j]+dp[j+]);
ans=mod(ans+mod(dp[p[i].x-]+dp[p[i].x+]));
for(int j=i+;j<=n;++j)num[j][j-i-]=dp[p[j].x],pos[j][j-i-]=p[i].x;
}
printf("%d\n",mod(ans+n));
}

思路积累:

  • resize
  • 前缀和

T3:画作

大神题。

有一个结论就是最优方案中一定有一种的所有操作的交集不是空集。

那么我们只要抓住某一个点向四周扩展,把所有同色区域取反就好了,知道全部区域都是白色。

复杂度$O(n^5)$

同色区域被多次扩展了,我们只在乎最远的点几次能扩展几次。

同色连0边,异色连1边,跑bfs即可。

因为懒得打双端队列所以开了100个队列。。。(因为曼哈顿距离不会超过100)

 #include<cstdio>
#include<iostream>
using namespace std;
const int xx[]={,,,-},yy[]={,,-,};
#define tx X+xx[p]
#define ty Y+yy[p]
char s[][];int o[][],n,m,dt[][],qx[][],qy[][],qh[],qt[],ans=;
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i)scanf("%s",s[i]+);
for(int x=;x<=n;++x)for(int y=;y<=m;++y)dt[x][y]=;
for(int i=;i<=n;++i)for(int j=;j<=m;++j)o[i][j]=s[i][j]-'';
for(int i=;i<=n;++i)for(int j=;j<=m;++j){
dt[i][j]=;qh[]=qt[]=;qx[][]=i;qy[][]=j;
for(int k=;k<=;++k)qh[k]=,qt[k]=;
for(int k=;k<=;++k)for(int l=qh[k];l<=qt[k];++l){
int X=qx[k][l],Y=qy[k][l];
for(int p=;p<=;++p)if(dt[tx][ty]>dt[X][Y]+(o[X][Y]^o[tx][ty]))
dt[tx][ty]=dt[X][Y]+(o[X][Y]^o[tx][ty]),
qx[dt[tx][ty]][++qt[dt[tx][ty]]]=tx,
qy[dt[tx][ty]][qt[dt[tx][ty]]]=ty;
}
int mx=;
for(int x=;x<=n;++x)for(int y=;y<=m;++y)mx=max(mx,dt[x][y]),dt[x][y]=;
mx+=mx&^o[i][j];
ans=min(ans,mx);
}printf("%d\n",ans);
}

[考试反思]0921csp-s模拟测试49:困顿的更多相关文章

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

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

  2. 2019.9.21 csp-s模拟测试49 反思总结

    没赶上昨天的考试,不过我这种人考不考都没有多少提升吧. 挺服气的一场考试,有生以来参加的最让人想笑的考试. T1:养花 取模,区间询问最大值,有点套路化的预处理答案…难点也在预处理上.容易想到分块然后 ...

  3. csp-s模拟测试49(9.22)养花(分块/主席树)·折射(神仙DP)·画作

    最近有点头晕........... T1 养花 考场我没想到正解,后来打的主席树,对于每个摸数查找1-(k-1),k-(2k-1)...的最大值,事实上还是很容易被卡的但是没有数据好像还比较友善, 对 ...

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 新手学分布式-动态修改Nginx配置的一些想法

    本人是分布式的新手,在实际工作中遇到了需要动态修改nginx的需求,因此写下实现过程中的想法.Nginx功能强大且灵活,所以这些权当抛砖引玉,希望可以得到大家的讨论和指点.(具体代码在 https:/ ...

  2. 洛谷 P4170 [CQOI2007]涂色

    题目描述 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字符串表示这个目标:RGBGR. 每次你可以把一段连续的木版涂成一个 ...

  3. 落谷P3941 入阵曲

    题目背景 pdf题面和大样例链接:http://pan.baidu.com/s/1cawM7c 密码:xgxv 丹青千秋酿,一醉解愁肠. 无悔少年枉,只愿壮志狂. 题目描述 小 F 很喜欢数学,但是到 ...

  4. COGS 2095. 不平凡的引线

    2095. 不平凡的引线 ★☆   输入文件:firelead.in   输出文件:firelead.out   简单对比 时间限制:1 s   内存限制:256 MB [题目描述] 这里说的引线是炮 ...

  5. 微信小程序路由跳转

    微信小程序路由跳转 1.wx.switchTab(Object object) 这里的tabBar是底下的导航栏指定的页面, 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 参数 O ...

  6. Kali升级2018&&2019

    0X01修改更新源 vim /etc/apt/sources.list #中科大 deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-f ...

  7. 掌握git基本功

    前言 最近想把代码传到GitHub上,结果我发现的demo的npm全是本地安装,上穿到GitHub要死要死,几百M,然后我就搜了下怎么不上传node_modules弄了半天也没成功,于是准备静下心学一 ...

  8. DM7经常使用的命令汇总

    由于DM7兼容oracle ,所以当你不知道某个命令时,大抵就是可以参照oracle的命令及语法,当然有极少的情况会不一样.常用命令如下: 1.连接登录 disql SYSDBA/SYSDBA@223 ...

  9. [NOIp2009] luogu P1072 Hankson 的趣味题

    把 c 改成 d 下了两个点. 题目描述 已知正整数 a0,a1,b0,b1a_0,a_1,b_0,b_1a0​,a1​,b0​,b1​,设某未知正整数 xxx 满足: xxx 和 a0a_0a0​ ...

  10. python学习-面向对象(六)

    1.类中的实例方法 self参数最大的作用是引用当前方法的调用者 类调用实例方法,python不会位为一个参数绑定调用者(因为实例方法的调用者应该是对象,而此时是类) 2.类方法与静态方法