最近总是好一场烂一场的。没有连续两场排名波动小于20的。。。

没人管。反正大脸一点脸没有就又AK了。

但是T3爆零这种事情吧。。。

爆搜不是很难打,但是想优化想了半天剩的时间不够结果赶忙打出来了,然后就挂了。

合理安排时间,要把码暴力的时间也考虑到,要检查。

T1T2仍然挂上了对拍,所以没有全盘爆炸。

总体来说是相对简单的一套题。

T1:嘟嘟噜

我的思路不太一样。但是复杂度是相似的。

$O(m+log_{\frac{m}{m-1}}\frac{n}{m})$

因为题面里说开无限栈了,然后我就想到了递归打法。

int winner(int n)函数处理剩下n个人时最终胜者的目前编号。

那么如果剩余人数n>m,那么你就可以把n/m个人同时干掉,从第n/m*m+1个人开始数来计算胜者

如果n<=m的话,那就干掉一个人然后继续递归,和约瑟夫一样。

这样的话每次递归,人数会在$-1$和$\times \frac{m-1}{m}$里选一个来 让它快速减小,可以得到上面的复杂度。

据$o0O$打表证明,使n为1e9,当m取到大约1e6时函数的增长速度达到峰值,再之后的增长速度大约为线性。

而本题数据范围1e5时的函数值仅仅是1e5多一点。

总之O(可过)。

 #include<cstdio>
int m,n,t;
int winner(int n){
if(n==)return n;
if(n<m)return (winner(n-)+m-)%n+;
int N=n/m,w=winner(n-N);
if(N*m+w<=n)return N*m+w;
w-=n-N*m;return (w-)/(m-)*m+(w-)%(m-)+;
}
main(){
scanf("%d",&t);
while(t--)scanf("%d%d",&n,&m),printf("%d\n",winner(n));
}

T2:天才绅士少女助手克里斯蒂娜

这道题是放假前让zkq出数据的那道题(这数据不是现成的嘛,还白给他送了个AC)

化式子,拆平方,最后发现要求的就是$\sum\limits_{i=l}^r \sum\limits_{j=l}^r x_i^2 y_j^2 - x_i y_i x_j y_j$

乘法分配律,得到的就是区间$(\sum\limits_{i=l}^{r}x_i^2)\times(\sum\limits_{i=l}^{r}y_i^2) - (\sum\limits_{i=l}^{r}x_iy_i)^2$

线段树或树状数组维护区间$x^2,y^2,xy$的和即可。注意常数。

 #include<cstdio>
#define mod 20170927
int cl[],cr[],x2[],y2[],xy[],x[],y[],XY,X2,Y2;
int read(){
register int p=;register char ch=getchar();
while(ch<''||ch>'')ch=getchar();
while(ch>=''&&ch<='')p=(p<<)+(p<<)+ch-,ch=getchar();
return p;
}
#define lc p<<1
#define rc p<<1|1
int Mod(int p){return p>=mod?p-mod:p;}
void up(int p){x2[p]=Mod(x2[lc]+x2[rc]);y2[p]=Mod(y2[lc]+y2[rc]);xy[p]=Mod(xy[lc]+xy[rc]);}
void build(int p,int l,int r){
cl[p]=l;cr[p]=r;
if(l==r){long long x=read(),y=read();x2[p]=x*x%mod;y2[p]=y*y%mod;xy[p]=x*y%mod;return;}
build(lc,l,l+r>>);build(rc,(l+r>>)+,r);up(p);
}
void chg(int p,int pos){
if(cl[p]==cr[p]){long long x=read(),y=read();x2[p]=x*x%mod;y2[p]=y*y%mod;xy[p]=x*y%mod;return;}
chg(cr[lc]>=pos?lc:rc,pos);up(p);
}
void ask(int p,int l,int r){
if(l<=cl[p]&&cr[p]<=r){XY=Mod(XY+xy[p]);X2=Mod(X2+x2[p]);Y2=Mod(Y2+y2[p]);return;}
if(l<=cr[lc])ask(lc,l,r);if(r>=cl[rc])ask(rc,l,r);
}
main(){
int n=read(),m=read(),opt,p;
build(,,n);
while(m--){opt=read();p=read();
if(opt==)chg(,p);
else XY=X2=Y2=,ask(,p,read()),printf("%d\n",Mod((1ll*X2*Y2-1ll*XY*XY)%mod+mod));
}
}

T3:凤凰院凶真

没想到。《算法竞赛进阶指南》上的原题竟然也不会做了。

想的是三维,表示a串到了i位,b串到了j位,匹配的最大值是k的最大值。

然而最后一维可以压掉,可以发现最后一维与前两维有关。

我们只要强制b串的第j位必选就行了,这样就能得知最后一个选的是几,即最大值是几。

简单的n3枚举。

 #include<cstdio>
int n,m,x[],y[],fr[][],sta[],top;
short dp[][];
void upd(int i,int j,int li,int lj,int w){
if(dp[i][j]>dp[li][lj]+)return;
dp[i][j]=dp[li][lj]+w;
fr[i][j]=lj;
}
void get_back(int i,int j){if(i==||j==)return;
int lj=fr[i][j];
if(j!=lj)sta[++top]=y[j];
get_back(i-,lj);
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;++i)scanf("%d",&x[i]);
scanf("%d",&m);
for(int i=;i<=m;++i)scanf("%d",&y[i]);
for(int i=;i<=n;++i)for(int j=;j<=m;++j)
if(x[i]==y[j]){for(int k=;k<j;++k)if(y[k]<x[i])upd(i,j,i-,k,);}
else upd(i,j,i-,j,);
int M=;for(int i=;i<=m;++i)if(dp[n][i]>dp[n][M])M=i;
printf("%d\n",dp[n][M]);
get_back(n,M);
for(int i=top;i;--i)printf("%d ",sta[i]);puts("");
}

优化,边扫边记录上一层的最优决策。n2

 #include<cstdio>
int n,m,x[],y[],fr[][],sta[],top;
short dp[][];
void upd(int i,int j,int li,int lj,int w){
if(dp[i][j]>dp[li][lj]+)return;
dp[i][j]=dp[li][lj]+w;
fr[i][j]=lj;
}
void get_back(int i,int j){if(i==||j==)return;
int lj=fr[i][j];
if(j!=lj)sta[++top]=y[j];
get_back(i-,lj);
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;++i)scanf("%d",&x[i]);
scanf("%d",&m);
for(int i=;i<=m;++i)scanf("%d",&y[i]);
for(int i=;i<=n;++i){
int bst=,bp=;
for(int j=;j<=m;++j){
if(x[i]==y[j])upd(i,j,i-,bp,);
else upd(i,j,i-,j,);
if(y[j]<x[i]&&dp[i-][j]>bst)bst=dp[i-][j],bp=j;
}
}
int M=;for(int i=;i<=m;++i)if(dp[n][i]>dp[n][M])M=i;
printf("%d\n",dp[n][M]);
get_back(n,M);
for(int i=top;i;--i)printf("%d ",sta[i]);puts("");
}

回溯统计答案没什么好说的。

思路积累:

  • 当dp维数过多导致复杂度高时,要考虑每维之间是否有联系,能否用一维表示另外一维。

[考试反思]1005csp-s模拟测试60:招魂的更多相关文章

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

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

  2. csp-s模拟测试60

    csp-s模拟测试60       2019-10-05 RT. 又颓又垃圾. 状态低迷,题都交不上去. 交了也是爆零,垃圾玩家没有什么可说的,就是垃圾. A. 嘟嘟噜 $mlogn$的毒瘤做法. 贴 ...

  3. [CSP-S模拟测试60]题解

    回去要补一下命运石之门了…… A.嘟嘟噜 给定报数次数的约瑟夫,递推式为$ans=(ans+m)\% i$. 考虑优化,中间很多次$+m$后是不用取模的,这种情况就可以把加法变乘法了.问题在于如何找到 ...

  4. csps-s模拟测试60嘟嘟噜,天才绅士少女助手克里斯蒂娜,凤凰院凶真题解

    题面:https://www.cnblogs.com/Juve/articles/11625190.html 嘟嘟噜: 约瑟夫问题 第一种递归的容易re,但复杂度较有保证 第二种适用与n大于m的情况 ...

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

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

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

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

  7. [考试反思]0719NOIP模拟测试6 + 0722NOIP模拟测试7

    连续爆炸,颇为愉快. 第6次:Rank #4 第7次:Rank #9 对于第6次考试,个人比较满意,因为T1只是差了一个卡常. 因为在考试前两天刚讲了矩阵,满脑子都是矩阵,还想到了循环矩阵优化. 整个 ...

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

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

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

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

随机推荐

  1. 快学Scala 第十四课 (读取行,读取字符, 控制台读取)

    读取行: import scala.io.Source object FileReader { def main(args: Array[String]): Unit = { val source = ...

  2. .netCore+Vue 搭建的简捷开发框架 (4)--NetCore 基础 -2

    上节中,我们初步的介绍了一下NetCore的一些基础知识,为了控制篇幅(其实也是因为偷懒),我将NetCore 基础分为两部分来写. 0.WebAPI 项目的建立 1..NetCore 项目执行(加载 ...

  3. Proving Equivalences UVA - 12167

    题文:https://vjudge.net/problem/UVA-12167 题解: 很明显,先要缩点.然后画一下图就会发现是入度为0的点和出度为0的点取max. 代码: #include < ...

  4. The Largest Clique UVA - 11324

    题文:https://vjudge.net/problem/UVA-11324 题解: 这个题目首先可以发现,只要是一个强连通分量,要么都选,要么都不选,将点权看成强连通分量的点数,所以这个题目就转化 ...

  5. 分享:JS视频在线视频教程

    作者说明 (1)JS说明 JS是非常重要的一门语言,但是,我们对JS的认识似乎仍然停留在“hello word”或者“alert”的观念上.其实,JS发展到现在已经非常的成熟,功能也非常的强大,因此, ...

  6. 一次SSM项目记录

    1.控制台输入 mvn archetype:generate -DgroupId=com.yjdev -DartifactId=myzone -DarchetypeArtifactId=maven-a ...

  7. CS231n:Python Numpy教程

    Python 基本数据类型 容器 列表 字典 集合 元组 函数 类 Numpy 数组 访问数组 数据类型 数组计算 广播 SciPy 图像操作 MATLAB文件 点之间的距离 Matplotlib 绘 ...

  8. Kubernetes网络插件Flannel的三种工作模式

    跨主机通信的一个解决方案是Flannel,由CoreOS推出,支持3种实现:UDP.VXLAN.host-gw 一.UDP模式(性能差) 核心就是通过TUN设备flannel0实现(TUN设备是工作在 ...

  9. [Luogu3065][USACO12DEC]第一!First!

    题目描述 Bessie has been playing with strings again. She found that by changing the order of the alphabe ...

  10. xml 文件操作

      'XML添加   Public Sub Add(ID As String, RFSerialnumber As String, Mood As Integer)     If reatch(RFS ...