这次的题目都是什么鬼?

玄学乱搞+肉眼看CODE+倒着搜索?

好吧是我ZZ了

链接在此

T1 玄学乱搞

由于考场上写的部分分做法忘记讨论n<=2000时的情况,少得了30pts

很容易得到一个基于排序的算法:

  • 记录每个数的值以及编号

  • 按编号将原数组从大到小排序

  • 对于每一个数,用在它之前的编号最大和最小的分别更新ans

对于这个算法的正确性显然。因为之前所有点的值都比它大,所以可以稳定确立下min(h[i],h[j])的值,然后记录编号的方式就OK了

但是这里的数据是1e7,快拍时间复杂度为O(n log2 n)要GG的

所以很自然地联想到基数排序,由于我姿势水平有限,像LowestJN dalao那样高级的基排,所以只会按位比较的那种

极限复杂度为:O(n log10 max{a[i]})

当n=1e7,max{a[i]}=1e9时,总操作数为9e7≈1e8

理论上机子快一点,常数小一点就可以卡过去了

然而我太蒟了所以被卡

这里贴一下Radix_sort的CODE以供参考:

#include<cstdio>
#include<cstring>
const int N=1e7+5;
using namespace std;
typedef long long LL;
struct data
{
int x,id;
}a[N],temp[N];
int cnt[15],n,d,MIN,MAX;
LL ans=-1;
inline char tc(void)
{
static char fl[100000],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,1,100000,stdin),A==B)?EOF:*A++;
}
inline void read(int &x)
{
x=0; char ch=tc();
while (ch<'0'||ch>'9') ch=tc();
while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=tc();
}
inline int int_max(int a,int b)
{
return a>b?a:b;
}
inline int int_min(int a,int b)
{
return a<b?a:b;
}
inline int abs(int x)
{
return x>0?x:-x;
}
inline LL LL_max(LL a,LL b)
{
return a>b?a:b;
}
inline int getbit(int x)
{
int tot=0;
if (!x) return 1;
while (x) ++tot,x/=10;
return tot;
}
inline void radix_sort(int n)
{
register int i,j;
int radix=1;
for (i=1;i<=d;++i,radix*=10)
{
memset(cnt,0,sizeof(cnt));
for (j=1;j<=n;++j)
++cnt[(a[j].x/radix)%10];
for (j=8;j>=0;--j)
cnt[j]+=cnt[j+1];
for (j=n;j>=1;--j)
temp[cnt[(a[j].x/radix)%10]--]=a[j];
memcpy(a,temp,sizeof(a));
}
}
int main()
{
register int i;
//freopen("A.in","r",stdin); freopen("A.out","w",stdout);
for (read(n),i=1;i<=n;++i)
read(a[i].x),a[i].id=i,d=int_max(d,getbit(a[i].x));
radix_sort(n);
for (MIN=MAX=a[1].id,i=2;i<=n;++i)
ans=LL_max(ans,(LL)int_max(abs(a[i].id-MIN),abs(a[i].id-MAX))*a[i].x),MIN=int_min(MIN,a[i].id),MAX=int_max(MAX,a[i].id);
printf("%lld",ans);
return 0;
}

好吧我们来看标算:

由于我们发现从左往右这种传统的扫描方式难以得出答案,所以我们考虑从两边向中间寻找

设立l,r表示目前两端的区间范围,所以我们可以用:

ans=max(ans,(r-l)*min(h[l],h[r]))

来更新ans

由于min这个操作,为了贪心我们把大的那个数留下来到下一次,即

if (h[l]<h[r]) ++l; else --r;

这样就实现了O(n)的复杂度

CODE

#include<cstdio>
using namespace std;
typedef long long LL;
const int N=1e7+5;
int a[N],l,r,n;
LL ans;
inline char tc(void)
{
static char fl[100000],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,1,100000,stdin),A==B)?EOF:*A++;
}
inline void read(int &x)
{
x=0; char ch=tc();
while (ch<'0'||ch>'9') ch=tc();
while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=tc();
}
inline LL max(LL a,LL b)
{
return a>b?a:b;
}
inline int min(int a,int b)
{
return a<b?a:b;
}
int main()
{
register int i;
//freopen("A.in","r",stdin); freopen("A.out","w",stdout);
for (read(n),i=1;i<=n;++i)
read(a[i]);
l=1; r=n;
while (l<r)
{
ans=max(ans,(long long)(r-l)*min(a[l],a[r]));
if (a[l]<a[r]) ++l; else --r;
}
printf("%lld",ans);
return 0;
}

T2 肉眼看CODE

我是真的蒙蔽了

首先%%%XZTdalao肉眼看拿了70+pts

还有一群初三dalao直接A了此题(据说有人花了2H在看这个)

不过不知道标算是什么

听他们说有一个比较可行的算法,就是先rand()一组方案,然后看一下得分。然后根据得分来修改算法

不过可能要惊人的脚本使用技术耐心

话说我只认出了姜度dalao的代码,有些人还认出了楼神Manchery

实为佩服,只能说我输了

T3 倒着搜索

这道题其实真的很简单。

我们先写好DFS爆搜,然后剪剪枝

接下来开始打表

然后把枚举的顺序由从小到大改为从大到小即可成功A掉此题(快得飞起)

这也是什么搜索技巧吗?

正解:Dancing Link O(n)找规律

爆搜CODE

#include<cstdio>
#include<cstdlib>
using namespace std;
int num[55],n,m;
inline void print(void)
{
for (register int i=1;i<=m;++i)
if (!num[i]) putchar('-'); else putchar(num[i]+'A'-1);
exit(0);
}
inline void DFS(int now)
{
if (!now) print();
for (register int i=1;i<=m;++i)
if (!num[i])
{
num[i]=now;
if (i+now+1<=m&&!num[i+now+1]) num[i+now+1]=now,DFS(now-1),num[i+now+1]=0;
if (i-now-1>=1&&!num[i-now-1]) num[i-now-1]=now,DFS(now-1),num[i-now-1]=0;
num[i]=0;
}
}
int main()
{
scanf("%d",&n); m=n<<1|1;
DFS(n);
return 0;
}

EZ 2018 04 13 NOIP2018 模拟赛(八)的更多相关文章

  1. EZ 2018 05 13 NOIP2018 模拟赛(十三)

    这次的比赛真心水,考时估分240,然后各种悠闲乱逛 然后测完T1数组开小了炸成40,T2,T3都没开long long,T2炸成20,T3爆0 掉回1600+的深渊,但是还有CJJ dalao比我更惨 ...

  2. EZ 2018 04 21 NOIP2018 模拟赛(十) -LoliconAutomaton的退役赛

    难得的一次Unrated,避免了重回1500的尴尬 其实题目都还可以,但只不过所有人T1都炸了,可能是数据的锅(假的) 而且我因为T1SB的把T2弃了,没想到是千年水题 T3莫名爆炸,然后TM的40分 ...

  3. EZ 2018 04 21 NOIP2018 模拟赛(九)

    终于停止了掉Rating的浪潮! 猥琐的链接 这次200分才Rank10,而且很多人并列 庆幸T2最后20分钟发现期望的算法打错了,然后拿到了50pts,250收场 T1 水题*1 这道题不仅做过,而 ...

  4. EZ 2018 04 06 NOIP2018 模拟赛(七)

    我是链接 这次是真的惨,码了将近2hours的可持久化线段树炸掉了! 而且本地拍了一万年也没发现哪里炸了. T1 压位的入门题,话说这道题能拿个99分就可以了(100分要FFT) 对于暴力,就是暴力找 ...

  5. EZ 2018 06 10 NOIP2018 模拟赛(十八)

    好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...

  6. EZ 2018 06 17 NOIP2018 模拟赛(十九)

    这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...

  7. EZ 2018 04 01 ZJOI2018模拟赛04.01

    现在开始填以前的坑 这次老叶强制我们打一下这次省选题,然后我已经做好了掉Rating到死的准备 然后考完--莫名涨了 Orz 题目链接 由于很多东西我都不会,所以详细请看:dalao的题解 T1 我T ...

  8. EZ 2018 06 24 NOIP2018 模拟赛(二十)

    很久之前写的一套题了,由于今天的时间太多了,所以记起来就写掉算了. 这一场尽管T2写炸了,但也莫名Rank4涨了Rating.不过还是自己太菜. A. 环游世界 首先我们先排个序,想一下如果不用走回来 ...

  9. EZ 2018 06 02 NOIP2018 模拟赛(十七)

    这次的比赛是真心比较狗,我TM的写了30min的树剖ZZ地直接memset超时了 话说我既然想到差分就应该去写差分的啊! 好了不过这次Rank还挺高的,终于要打进前10了当然是假的了. 好了下面开始讲 ...

随机推荐

  1. ESLint 使用方法

    一.全局安装 npm install -g eslint 二.生成配置文件 在项目根目录执行init,生成.eslintrc文件.在init时,要求根目录存在package.json.当然也可以直接复 ...

  2. Android--自定义弹出框-自定义dialog

    项目要用到弹出框,还要和苹果的样式一样(Android真是没地位),所以就自己定义了一个,不是很像(主要是没图),但是也还可以. 废话不多说了,直接上代码 1.先看布局文件 <?xml vers ...

  3. python turtle 例子 海归绘图

          太阳花 1 # coding=utf-8 2 import turtle 3 import time 4   5 # 同时设置pencolor="red", fillc ...

  4. EL表达式和标签

    1.什么是EL expression language 表达式语言 特点: 语言简单,使用方便 .${表达式}. 提供自动类型转换的功能 如果返回结果为null时 String -- ”” Numbe ...

  5. CPU IO MEM NETWork 监控命令

    性能优化中CPU.内存.磁盘IO.网络性能的依赖(上) 性能优化中CPU.内存.磁盘IO.网络性能的依赖(下)

  6. GridBagLayout布局管理器应用详解

    http://www.cnblogs.com/kungfupanda/p/7220217.html GridBagLayout布局管理器应用详解 很多情况下,我们已经不需要通过编写代码来实现一个应用程 ...

  7. 【爬坑】Vim 文档加密 & 解密

    0. 说明 在 Vim 使用过程中,最后保存的时候输入了 :X  ,提示输入密码,输完密码发现以前没遇到类似情况. 有时候最后保存那会儿默认大写. 在网上一查发现原来给文件加密了,就顺带搜索怎么取消密 ...

  8. [python]python官方原版编码规范路径

    1.进入python官方主页:https://www.python.org/ 2.按如下图进入PEP Index ​ 3.选择第8个,即为python的规范 ​

  9. 有意思的flex 色子布局

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  10. day4-课堂代码

    # ---------------------------------------------------------------------- # def my_function1(name, ad ...