最近总是好一场烂一场的。没有连续两场排名波动小于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. mac下ip地址重定向

    在终端临时使用最高权限用vim编辑/etc下的hosts文件,若提示Password: 输入开机登录密码并回车: yanguobindeMacBook-Pro:~ yanguobin$ sudo vi ...

  2. github基本使用---从零开始

    1.使用之前首先得有账号(附链接):https://github.com/ 2.注册帐号之后得有方便上传项目的工具git bash下载安装 https://gitforwindows.org/ 3.启 ...

  3. java集合类之ArrayList详解

    一.ArrayList源码分析 1.全局变量 (1)默认容量(主要是通过无参构造函数创建ArrayList时第一次add执行扩容操作时指定的elementData的数组容量为10) private s ...

  4. python+selenium自动化框架

    ---恢复内容开始--- 主要使用的模块: selenium/webdriver模块(须准备Chrome驱动),主要用于调用浏览器实现自动点击. unittest模块,主要用于整合测试用例. xlrd ...

  5. 最全最强 Java 8 - 函数编程(lambda表达式)

    Java 8 - 函数编程(lambda表达式) 我们关心的是如何写出好代码,而不是符合函数编程风格的代码. @pdai Java 8 - 函数编程(lambda表达式) 简介 lambda表达式 分 ...

  6. Android仿美团地址选择

    最近做了这个功能,分享一下,用的是百度地图api,和美团外卖的地址选择界面差不多,也就是可以搜索或者滑动地图展示地址列表给用户选择,看下效果图先. 文章重点 1.展示地图并定位到“我”的位置2.滑动地 ...

  7. 算法学习之剑指offer(五)

    题目1 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. public class Solution ...

  8. 面试必备:高频算法题终章「图文解析 + 范例代码」之 矩阵 二进制 + 位运算 + LRU 合集

    Attention 秋招接近尾声,我总结了 牛客.WanAndroid 上,有关笔试面经的帖子中出现的算法题,结合往年考题写了这一系列文章,所有文章均与 LeetCode 进行核对.测试.欢迎食用 本 ...

  9. 网络编程之winInet

    InternetGetConnectedState() 简介: 功能:检索本地系统的网络连接状态. 函数原型:BOOLAPI InternetGetConnectedState(            ...

  10. [Quarks PwDump]Hash dump神器

    好不好用就不用说了哈  记录下使用方式 也支持导出本地哈希.域控哈希等.配合hashcat神器 奇效. 它目前可以导出 : – Local accounts NT/LM hashes +history ...