考得还算可以,T3还有提升空间(没看清题&&样例没过 拿了4分)。

期望得分:80+40+0=120

实际得分:80+85+4=169

一脸黑线。。。。。是数据比较水的原因,T2分都比较高

反正先把暴力分拿满就对了。

T1 矩阵游戏

水题吗?我觉得不是,n,m 1e9! 23333不过好像沿用二营长的思路也可以过,总而言之是我太菜了,菜是原罪嘛。

首先易推出式子 ans=ΣH[i]*ΣL[j]*(m*(i-1)+j) (1<=i<=n,1<=j<=m)

考虑展开化简   ans=ΣH[i]*ΣL[j]*m*(i-1)+L[j]*j

发现ΣL[j]*j可以处理出来

而ΣL[j]*m*(i-1)可以递推出来

然后就。。。AC了

 #include<bits/stdc++.h>
#define MAXN 1000005
#define int long long
using namespace std;
const int mod=;
int h[MAXN],l[MAXN];
signed main()
{
int n,m,k,tot=,base=,now=,ans=;
scanf("%lld%lld%lld",&n,&m,&k);
for(int i=;i<=n;i++)h[i]=;
for(int i=;i<=m;i++)l[i]=;
while(k--)
{
char opt;cin>>opt;
int x,y;
scanf("%lld%lld",&x,&y);
if(opt=='R')(h[x]*=y)%=mod;
else (l[x]*=y)%=mod;
}
for(int i=;i<=m;i++)(tot+=l[i]*i)%=mod,(base+=l[i])%=mod;
for(int i=;i<=n;i++)
{
(ans+=h[i]*(now+tot)%mod)%=mod;
(now+=base*m)%=mod;
}
cout<<ans<<endl;
return ;
}

AC代码

T2 跳房子

我还没A,85分暴力很不错。

主要是如何优化模拟blablabla

T3 优美序列

ST表可以维护权值,分块是优化的极好方式。

看题目的时候一定要认真。

这个题首先可以用ST表维护,即对于当前区间求出最大最小值,在利用维护的权值ST表搞出目标位置,利用目标位置更新当前max和min

但这种做法会被卡,可以用分块优化。

引理:

对于一个区间R,它的子区间的最优答案一定是它的最优答案的子区间。

利用这个我们可以先分块,(设块数为k)再处理出这k^2个块之间的答案,跑的飞快。

 #include<bits/stdc++.h>
#define MAXN 100005
#define min(a,b) ((a<b)?(a):(b))
#define max(a,b) ((a>b)?(a):(b))
using namespace std;
int mn[][MAXN],mx[][MAXN],mh[MAXN],a[MAXN],n,mnpos[][MAXN],mxpos[][MAXN],ans1[][],ans2[][],t;
int bl[MAXN];
vector<int>ld;
void pre()
{
for(int i=;i<=n;i++)
for(int j=;j>=;j--)
if(i>=(<<j))
{
mh[i]=j;
break;
}
for(int i=;i<=;++i)
for(int j=;j<=n;++j)
{
mn[i][j]=min(mn[i-][j],mn[i-][j+(<<(i-))]);
mx[i][j]=max(mx[i-][j],mx[i-][j+(<<(i-))]);
mnpos[i][j]=min(mnpos[i-][j],mnpos[i-][j+(<<(i-))]);
mxpos[i][j]=max(mxpos[i-][j],mxpos[i-][j+(<<(i-))]);
}
return ;
}
inline int Rd()
{
int x=;char c=getchar();
while(c>''||c<'')c=getchar();
while(c>=''&&c<=''){x=x*+c-;c=getchar();}
return x;
}
inline int gmax(int l,int r)
{
return max(mx[mh[r-l+]][l],mx[mh[r-l+]][r-(<<mh[r-l+])+]);
}
inline int gmin(int l,int r)
{
return min(mn[mh[r-l+]][l],mn[mh[r-l+]][r-(<<mh[r-l+])+]);
}
inline int qmax(int l,int r)
{
return max(mxpos[mh[r-l+]][l],mxpos[mh[r-l+]][r-(<<mh[r-l+])+]);
}
inline int qmin(int l,int r)
{
return min(mnpos[mh[r-l+]][l],mnpos[mh[r-l+]][r-(<<mh[r-l+])+]);
}
int main()
{
n=Rd();
t=pow(n,0.7);
for(int i=;i<=n;i++)
{
a[i]=Rd();
mn[][i]=mx[][i]=a[i];
mnpos[][a[i]]=mxpos[][a[i]]=i;
}
int p=,tot=;
while(p<n)
{
ld.push_back(p+);
for(int i=;i<=t;i++)bl[p+i]=tot;
p+=t;
tot++;
}
pre();
memset(ans1,0x3f,sizeof(ans1));
memset(ans2,-0x3f,sizeof(ans2));
for(int i=;i<ld.size();i++)
for(int j=i;j<ld.size();j++)
{
int l,r;
l=ld[i];
r=ld[j];
int nowmin=gmin(l,r),nowmax=gmax(l,r);
int pl=qmin(nowmin,nowmax),pr=qmax(nowmin,nowmax);
while(l>pl||r<pr)
{
if(l>pl)
{
nowmin=min(nowmin,gmin(pl,l));
nowmax=max(nowmax,gmax(pl,l));
l=pl;
}
if(r<pr)
{
nowmin=min(nowmin,gmin(r,pr));
nowmax=max(nowmax,gmax(r,pr));
r=pr;
}
pl=qmin(nowmin,nowmax);pr=qmax(nowmin,nowmax);
}
ans1[i][j]=l;ans2[i][j]=r;
}
int Q;
Q=Rd();
while(Q--)
{
register int l,r,ll,rr;
l=Rd();r=Rd();
ll=bl[l]+;rr=bl[r]-;
int nowmin=gmin(l,r),nowmax=gmax(l,r);
int pl=qmin(nowmin,nowmax),pr=qmax(nowmin,nowmax);
while(l>pl||r<pr)
{
ll=bl[l]+;rr=bl[r]-;
if(l>pl)
{
nowmin=min(nowmin,gmin(pl,l));
nowmax=max(nowmax,gmax(pl,l));
l=pl;
l=min(l,ans1[ll][rr]);//答案是要动态更新,注意这句话不能写到前面,不然会出错
}
if(r<pr)
{
nowmin=min(nowmin,gmin(r,pr));
nowmax=max(nowmax,gmax(r,pr));
r=pr;
r=max(r,ans2[ll][rr]);
}
pl=qmin(nowmin,nowmax);pr=qmax(nowmin,nowmax);
}
printf("%d %d\n",l,r);
}
return ;
}

(%%%%%%znsbc)

下次加油,注重分析题目关键性质

考试要综合各种方法骗分

NOIP模拟测试13的更多相关文章

  1. 8.5 NOIP 模拟测试 13

    今天的考试说实话T1很简单没A,我是傻X.T2T3难得一批,但是暴力的分还是拿了! 总结一下就是:骗分过样例,暴力出奇迹!只要瞎搞就行了! 话说现在终于不像之前那么傻了,终于知道打暴力了,因为之前暴力 ...

  2. 2019.8.5 NOIP模拟测试13 反思总结【已更新完毕】

    还没改完题,先留个坑. 放一下AC了的代码,其他东西之后说… 改完了 快下课了先扔代码 跑了跑了 思路慢慢写 来补完了[x 刚刚才发现自己打错了标题 这次考试挺爆炸的XD除了T3老老实实打暴力拿了52 ...

  3. 8.5 NOIP模拟测试13 矩阵游戏+跳房子+优美序列

    T1矩阵游戏 数学题.首先这一列这一行先乘还是后乘对最后答案没有影响.a[i][j]表示矩阵中原始的值,h[i]表示i行的累乘,l[i]表示i列的累乘.易得ans=Σa[i][j]*h[i]*l[i] ...

  4. NOIP模拟测试13「矩阵游戏&#183;跳房子&#183;优美序列」

    矩阵游戏 考试时思路一度和正解一样,考试到最后还是打了80分思路,结果80分打炸了只得了40分暴力分 题解 算出来第一列的总值,每次通过加每两列之间的差值得出下一列的总值 算第一列我们只需要让当前点* ...

  5. 2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci)

    2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci) 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 找规律 找两个节点的lca,需 ...

  6. 「题解」NOIP模拟测试题解乱写II(36)

    毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...

  7. 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组

    2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...

  8. 2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色

    2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 数据结构学傻的做法: 对每种颜色开动态开点线段树直接维 ...

  9. NOIP模拟测试17&18

    NOIP模拟测试17&18 17-T1 给定一个序列,选取其中一个闭区间,使得其中每个元素可以在重新排列后成为一个等比数列的子序列,问区间最长是? 特判比值为1的情况,预处理比值2~1000的 ...

随机推荐

  1. Hexo 博客快速整合公众号导流工具,不用互推也能实现粉丝躺增!

    readmore 插件简介 Hexo 整合 OpenWrite 平台的 readmore 插件,实现博客的每一篇文章自动增加阅读更多效果,关注公众号后方可解锁全站文章,从而实现博客流量导流到微信公众号 ...

  2. iOS渠道分包2种模式之包内注入文件分包

    解决问题:商业模式中会存在这样的形式1款app需要不同的运用团队(工会)去分包推广,谁推广的包下载的人数都会在服务器记录,不同渠道的标示唯一来区分. iOS渠道分包模式有两种 一.IDFA模式 IDF ...

  3. nginx(tengine)访问日志分片

    说明 nginx日志按天分片是运维的基本要求,不仅可以减小文件大小,方便检索关键数据,也可以定时删除过期的日志.可是nginx和tengine默认并不支持文件分片,因此需要额外处理. 另外,日志分片需 ...

  4. 二次函数,为什么a>0就可以知道开口向上.

    最近自考. 学习高等数学. 学习高等数学过程中发现高中数学不会,,于是乎开始补高中数学. 学习高中数学过程中又发现初中数学有的不会,,于是乎开始补初中数学.. 可怕(→_→). 今天遇到一个二次函数, ...

  5. 算法学习之剑指offer(六)

    题目1 题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. import java.util.*; public cl ...

  6. XSS扫盲到漏洞挖掘上手

    复习xss ,也总结一下XSS基础的点到进阶的知识  目录 0x01 XSS扫盲入门 0x02 XSS payload构造 0x03 XSS payload变形进阶   0x01 XSS扫盲入门 XS ...

  7. window下 phpstorm 打不开

    如果 window 上不能执行 strace 命令, 安装 Git Bash 工具. 切换到 phpstorm 安装的 bin 目录: D 盘的相关文件昨天被我删了!奇怪这文件怎么放到那里了? 换个路 ...

  8. 【Python秘籍】十进制整数与二进制数的转换

    最近在用Python写遗传算法时,发现需要将十进制的整数转换成二进制数,那么怎么来转换呢?当然如果你学过进制转换的有关计算方法,你可以手动编写一些函数来实现,不过总体来说还是比较麻烦的,这里介绍Pyt ...

  9. 如何通过 Docker 部署 Logstash 同步 Mysql 数据库数据到 ElasticSearch

    在开发过程中,我们经常会遇到对业务数据进行模糊搜索的需求,例如电商网站对于商品的搜索,以及内容网站对于内容的关键字检索等等.对于这些高级的搜索功能,显然数据库的 Like 是不合适的,通常我们采用 E ...

  10. Uipath 浏览器页面最大化和最小化

    文章来源东京IT青年前线http://www.rpatokyo.com/ Uipath 浏览器页面最大化和最小化   浏览器在关闭时会自动记忆上次浏览器关闭时窗口的小,下次再次会以同样的大小打开.机器 ...