这次的题目都是什么鬼?

玄学乱搞+肉眼看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. 检查xml文件

    #coding=utf- import os import time def verify(filePath): print("verify--" + filePath) list ...

  2. (个人记录)Python2 与Python3的版本区别

    现在还有些开源模块还没有更新到python3 ,不了解版本区别,无法对不合适的地方进行更改. 由于只追求向Python3靠近,所以对于python2的特别用法不探究. 此文不补全所有版本区别,仅作档案 ...

  3. 适用于 Windows 的自定义脚本扩展

    自定义脚本扩展在 Azure 虚拟机上下载并执行脚本. 此扩展适用于部署后配置.软件安装或其他任何配置/管理任务. 可以从 Azure 存储或 GitHub 下载脚本,或者在扩展运行时将脚本提供给 A ...

  4. Sqlserver数据库中的临时表详解

    临时表在Sqlserver数据库中,是非常重要的,下面就详细介绍SQL数据库中临时表的特点及其使用,仅供参考. 临时表与永久表相似,但临时表存储在tempdb中,当不再使用时会自动删除.临时表有两种类 ...

  5. 自己实现more命令

    #include <stdio.h> #include <stdlib.h> #define PAGELEN 24 #define LINELEN 512 int see_mo ...

  6. vs 2012/2013 等工具中,使用正则表达式,查找、替换

    有这样一个需求,就是一个文本中,需要找出指定格式的字符串进行指定的替换,当前我的真实需求是,一个sql创建触发器的文本,我需要将所有的 包含 TB_SYS 的表名后面添加一个 “_NEW”字符串! 例 ...

  7. 【MySQL运维实践】

    什么是日志 日志(log)是一种顺序记录事件流水的文件 记录计算机程序运行过程中发生了什么 多种多样的用途  帮助分析程序问题 分析服务请求的特征.流量等 判断工作是否成功执行 等等…… MySQL日 ...

  8. 【待补充】[Spark Core] Spark 实现标签生成

    0. 说明 在 IDEA 中编写 Spark 代码实现将 JSON 数据转换成标签,分别用 Scala & Java 两种代码实现. 1. 准备 1.1 pom.xml  <depend ...

  9. Linux运维之shell脚本基础知识

    1.bash中的算术运算 let运算符 [root@:vg_adn_tidbCkhsTest ~/tidb-bench/sysbench]#echo $i [root@:vg_adn_tidbCkhs ...

  10. 【项目 · Wonderland】UML设计

    团队作业---UML设计 Part 0 · 简要目录 Part 1 · 团队分工 Part 2 · UML Part 3 · 工具选择 Part 1 · 团队分工 Part 2 · UML 描述信息: ...