这次的题目都是什么鬼?

玄学乱搞+肉眼看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. ie8 透明背景不能点击问题

    最近开发网站,需求是三个一屏,1和3只能看见一半,2显示在中间,无箭头按钮. 因为之前写过一个有前后按钮的插件,想着怎么就在这上面改造,故把前后按钮去掉背景,定位在了1和3的位置上来实现点击前后, 发 ...

  2. Java中的StringTokenizer类的使用方法

    StringTokenizer是字符串分隔解析类型,属于:java.util包. 1.StringTokenizer的构造函数 StringTokenizer(String str):构造一个用来解析 ...

  3. Prometheus Node_exporter 之 System Detail

    System Detail 1. Context Switches / Interrupts type: GraphUnit: shortLabel: CounterContext switches ...

  4. 转:在网站开发中很有用的8个 jQuery 效果【附源码】

    原文地址:http://www.cnblogs.com/lhb25/p/amazing-jquery-effects.html jQuery 作为最优秀 JavaScript 库之一,改变了很多人编写 ...

  5. linux stat 简单介绍

    stat 命令查看文件或文件系统的状态时间等属性 用法:stat [参数]... 文件... 简单的介绍一下stat命令显示出来的文件其他信息: - File:显示文件名 - Size:显示文件大小 ...

  6. [Spark SQL_1] Spark SQL 配置

    0. 说明 Spark SQL 的配置基于 Spark 集群搭建  && Hive 的安装&配置 1. 简介 Spark SQL 是构建在 Spark Core 模块之上的四大 ...

  7. Windows XP添加硬盘后系统不能识别(没有任何反应)

    解决方法: 1.右键我的电脑--管理--设备管理器--IDE ATA/ATAPI控制器,启用次要IDE通道和主要IDE通道,打开属性,在高级设置里,将设备类型设置为自动检测,重启. 2.硬盘格式为GP ...

  8. nginx 添加虚拟主机 支持php 伪静态

    1添加虚拟主机 进入 /usr/local/nginx/conf/vhost 目录, 创建虚拟主机配置文件 demo.neoease.com.conf ({域名}.conf). 2. 打开配置文件, ...

  9. react native环境搭建(含错误处理)

    1.  Python 2  注意,不要选择3.0及以上的,还不成熟 安装过程中一直 next就可以了,但是注意下图,勾选添加到系统环境变量 安装完之后cmd输入 python 查看是否安装成功. 补充 ...

  10. 旋转的地球css3

    css3果然博大精深: 1.代码里面还有用box-shadow制作椭圆形阴影的效果,厉害了!之前找了好久都没找到,今天给找到了 html: <section class="stage& ...