EZ 2018 06 24 NOIP2018 模拟赛(二十)
很久之前写的一套题了,由于今天的时间太多了,所以记起来就写掉算了。
这一场尽管T2写炸了,但也莫名Rank4涨了Rating。不过还是自己太菜。
A. 环游世界
首先我们先排个序,想一下如果不用走回来那么直接相邻的两个直接走就可以了。
那么我们要走回来呢,很简单,手动为回来留一条路径即可。还是一样的贪心方法,这次我们一般间隔两个。为什么是一般呢,其实也是对于边界的不同讨论了。
比如对于这样的一种情况,我们可以这样走:
其中红色表示走过去的边,绿色表示走回来的边。
CODE
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1e5+5;
int w[N],n;
long long 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 long long power(int x)
{
return (long long)x*x*x;
}
inline void solve1(void)
{
register int i;
for (i=1;i+2<=n;i+=2)
ans+=power(w[i+2]-w[i]);
for (i=2;i+2<=n-1;i+=2)
ans+=power(w[i+2]-w[i]);
ans+=power(w[2]-w[1])+power(w[n]-w[n-1]);
printf("%lld",ans);
}
inline void solve2(void)
{
register int i;
for (i=1;i+2<=n-1;i+=2)
ans+=power(w[i+2]-w[i]);
for (i=2;i+2<=n;i+=2)
ans+=power(w[i+2]-w[i]);
ans+=power(w[2]-w[1])+power(w[n]-w[n-1]);
printf("%lld",ans);
}
int main()
{
//freopen("A.in","r",stdin); freopen("A.out","w",stdout);
register int i; read(n);
for (i=1;i<=n;++i)
read(w[i]); sort(w+1,w+n+1);
if (n&1) solve1(); else solve2();
return 0;
}
B. 献礼
一道比较显然的Dsu on tree(树上启发式合并)
题意大概就是在一个人的所有孩子中,找的所有开心的孩子中出现的颜色最多的一个。
如果最多的颜色的个数小于一个给定的值,那么这个人就会不开心。
其实像这种没有修改的题目写dsu还是很方便的。
记一下每个点出现颜色的最多的次数\(mx\)和颜色\(mc\)。然后还是先更新轻儿子,在算上重儿子并把轻儿子累加。还是一样的策略。
具体实现看CODE吧
#include<cstdio>
#include<cstring>
using namespace std;
const int N=2e5+5;
struct edge
{
int to,next;
}e[N];
struct data
{
int x,c;
}ans[N];
int head[N],s[N],id[N],size[N],son[N],t[N],col[N],w[N],cnt,tot,n,x,rt,mx,mc;
bool hap[N];
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 void write(int x)
{
if (x>9) write(x/10);
putchar(x%10+'0');
}
inline void add(int x,int y)
{
e[++cnt].to=y; e[cnt].next=head[x]; head[x]=cnt;
}
inline void DFS(int now)
{
size[now]=1; id[now]=++tot; s[tot]=now; int res=-1;
for (register int i=head[now];i!=-1;i=e[i].next)
{
DFS(e[i].to);
size[now]+=size[e[i].to];
if (size[e[i].to]>res) res=size[e[i].to],son[now]=e[i].to;
}
}
inline void ins(int now)
{
if (!hap[now]) return;
if (++t[col[now]]>mx||(t[col[now]]==mx&&col[now]<mc)) mx=t[col[now]],mc=col[now];
}
inline void del(int now)
{
t[col[now]]=0;
}
inline void dsu(int now)
{
if (!son[now]) { if (!w[now]) hap[now]=1,ins(now); return; }
register int i,j;
for (i=head[now];i!=-1;i=e[i].next)
if (e[i].to!=son[now])
{
dsu(e[i].to);
for (j=id[e[i].to];j<=id[e[i].to]+size[e[i].to]-1;++j)
del(s[j]); mx=mc=0;
}
if (son[now]) dsu(son[now]);
for (i=head[now];i!=-1;i=e[i].next)
if (e[i].to!=son[now])
{
for (j=id[e[i].to];j<=id[e[i].to]+size[e[i].to]-1;++j)
ins(s[j]);
}
if (mx>=w[now])
{
ans[now].x=mx; ans[now].c=mc;
hap[now]=1; ins(now);
}
}
int main()
{
//freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);
register int i; read(n);
memset(head,-1,sizeof(head));
memset(e,-1,sizeof(e));
for (i=1;i<=n;++i)
read(col[i]);
for (i=1;i<=n;++i)
{
read(x); add(x,i);
if (!x) rt=i;
}
for (i=1;i<=n;++i)
read(w[i]);
DFS(rt); dsu(rt);
for (i=1;i<=n;++i)
if (hap[i]) write(ans[i].x),putchar(' '),write(ans[i].c),putchar('\n');
else puts("oioi");
return 0;
}
C. 幻想王国
作为一道斐波那契数列性质+矩阵快速幂的挺神仙的题目,还是有点超出范围了。
留着待坑吧
EZ 2018 06 24 NOIP2018 模拟赛(二十)的更多相关文章
- EZ 2018 06 17 NOIP2018 模拟赛(十九)
这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...
- EZ 2018 06 10 NOIP2018 模拟赛(十八)
好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...
- EZ 2018 05 04 NOIP2018 模拟赛(十二)
这次的试卷应该是激励我们一下的,链接 然后大家的分数就都很高,然后我就210被一群秒A T2的240大佬爆踩 掉了5rating但Rank竟然发杀了 X_o_r dalao && YZ ...
- EZ 2018 06 02 NOIP2018 模拟赛(十七)
这次的比赛是真心比较狗,我TM的写了30min的树剖ZZ地直接memset超时了 话说我既然想到差分就应该去写差分的啊! 好了不过这次Rank还挺高的,终于要打进前10了当然是假的了. 好了下面开始讲 ...
- EZ 2018 05 20 NOIP2018 模拟赛(十五)
这次的比赛充满着玄学的气息,玄学链接 首先讲一下为什么没有第十四场 其实今天早上9点时看到题目就叫了:原题! 没错,整套试卷都做过,我还写了题解 然后老叶就说换一套,但如果仅仅是这样就没什么 但等13 ...
- EZ 2018 05 26 NOIP2018 模拟赛(十六)
这次难道就是传说中的标准分大赛?而且这次比赛的链接不翼而飞了 一堆人153pts然后就有Rank4?看来这个Rank4不值钱了,才涨了50+的Rating. 不过还好最后5min的时候想出了T1正解, ...
- EZ 2018 04 21 NOIP2018 模拟赛(十) -LoliconAutomaton的退役赛
难得的一次Unrated,避免了重回1500的尴尬 其实题目都还可以,但只不过所有人T1都炸了,可能是数据的锅(假的) 而且我因为T1SB的把T2弃了,没想到是千年水题 T3莫名爆炸,然后TM的40分 ...
- EZ 2018 02 28 NOIP2018 模拟赛(二)
我TM的终于改完了(其实都是SB题) 题目链接:http://211.140.156.254:2333/contest/53 T1送分,T2前40%送分,还有骗分机制在里面,T3暴力50 所以200应 ...
- EZ 2018 02 26 NOIP2018 模拟赛(一)
这次是校内OJ(HHHOJ)线上比赛,网址:http://211.140.156.254:2333/contest/51 (我去刚刚快写完了手贱关掉了) 这次总体难度也不高,T1&&T ...
随机推荐
- .NetCore(四) 在Nginx部署
本篇主要体验一下Nginx的使用,之前只接触过IIS. 一.Nginxa) ASP.NET Core内置了Kestrel服务器,但功能简单,主要用于SelfHost,正式运行还是要依赖IIS.Apa ...
- CSS网页菜单
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserContro ...
- EntityFramework Code-First 简易教程(七)-------领域类配置之Fluent API
Fluent API配置: 前面我们已经了解到使用DataAnotations特性来覆写Code-First默认约定,现在我们来学习Fluent API. Fluent API是另一种配置领域类的方法 ...
- Hacker News API
Hacker News API中的URI和版本 API都由https://hacker-news.firebaseio.com提供. 单个条目信息 故事,评论,招聘,问答,以及投票都叫做条目.它们有各 ...
- Beta冲刺! Day4 - 砍柴
Beta冲刺! Day4 - 砍柴 今日已完成 晨瑶:追进度 昭锡:改主页UI(还在 永盛:完成大部分接口和接口文档,上线代码 立强:文章去广告,适配手机屏幕.第三方编辑器整合到记录模块. 炜鸿:完成 ...
- cenos下安装MySQL最新版(5.7.18)记录。附卸载老版本过程
首先说明:老版本数据库没有数据,所以无数据备份过程.如果你在升级数据库过程里,需要备份数据,请另外自行处理. 1.下载最新版MySQL.解压待用 wget https://dev.mysql.com/ ...
- php单例模式实现对象只被创建一次
这是我在php面试题中遇到的一道试题,单例模式按字面来看就是某一个类只有一个实例,这样做的好处还是很大的,比如说数据库的连接,我们只需要实例化一次,不需要每次都去new了,这样极大的降低了资源的耗费. ...
- Blinker 后台数据分析
如何解析出后台服务器认证信息,供自己的设备连接. 测试程序 天气 增加了 Debug输出信息功能 1手机APP添加控件信息 2硬件烧录程序 #define BLINKER_PRINT Serial ...
- Arduino IDE for ESP8266 项目(2)wifi扫描
#include "ESP8266WiFi.h" void setup() { Serial.begin(115200); //设定WiFi为STA模式,如果先前已连接上AP,则与 ...
- Echo团队Alpha冲刺随笔 - 第一天
项目冲刺情况 进展 每个人开始搭建自己要用的各种框架.库,基本实现了登录功能 问题 除了框架使用问题外,暂未遇到其他疑难杂症 心得 今天有一个还可以的开头,相信后续会挺顺利的 今日会议内容 黄少勇 今 ...