Preface

这次的题目都是NOI+的题,所以大家的分数都有点惨烈。

依靠T1大力骗分水到Rank2

所以想看正解的话看这里


A. 「雅礼NOI2018模拟赛(一) Day1」树

看一眼题目感觉十分不可做,刚开始准备写个状压

一看数据范围好像是正解了,然而连样例都没有跑过去。

1h之后:完蛋凉凉了,那写个暴力DFS吧

10min之后码完了,想一想能不能多弄点分,这时候ZZ都看出来第一问好做。

于是开始打表,刷第一问的答案时顺便很机智地把第二问的答案也刷了出来。

这个的话直接询问的时候再膜即可,然后一直到结束都没把\(n=16\)跑出来。

这个时候发现第一问答案都是\(5\),然后别问我为什么只会的都输出\(6\)骗个分吧

结束之后一看把一道根本不会的题玩到了\(56pts\),基本没动脑子吧。

CODE

#include<cstdio>
using namespace std;
const int N=25;
int dep[N],n,p,res2,tot2; long long res1,tot1;
inline void inc(int &x,int y)
{
x+=y; while (x>=p) x-=p;
}
inline int max(int a,int b)
{
return a>b?a:b;
}
inline void DFS(int now,int d)
{
if (now>n) { res1+=d; inc(res2,d); return; }
for (register int i=1;i<now;++i)
dep[now]=dep[i]+1,DFS(now+1,max(dep[now],d));
}
inline int quick_pow(int x,int t)
{
int tot=1;
while (t)
{
if (t&1) tot=1LL*tot*x%p;
x=1LL*x*x%p; t>>=1;
}
return tot;
}
int main()
{
scanf("%d%d",&n,&p);
if (n<=12)
{
if (n<3) return printf("%d\n%d",n,n),0;
dep[1]=tot1=tot2=1; dep[2]=2; DFS(3,2);
for (register int i=3;i<=n;++i) tot1*=i-1,tot2=1LL*tot2*(i-1)%p;
return printf("%d\n%d",(int)((double)res1/tot1+0.5),1LL*res2*quick_pow(tot2,p-2)%p),0;
}
if (n==13) return printf("5\n%d",1LL*(2456669031%p)*quick_pow(479001600%p,p-2)%p),0;
if (n==14) return printf("5\n%d",1LL*(32843762236%p)*quick_pow(6227020800%p,p-2)%p),0;
if (n==15) return printf("5\n%d",1LL*(471744856737%p)*quick_pow(471744856737%p,p-2)%p),0;
else return puts(n^24?"6":"7"),putchar('0'),0;
}

B. 「雅礼NOI2018模拟赛(一) Day1」仙人掌

看到仙人掌直接不想做了,有个\(10pts\)的爆搜分先拿来。

然后考虑一下\(m=n-1\)且\(a_i=2\)的做法,好像是一棵树,然后果断想树形DP

无奈当时姿势水平太低写挂了,最后弃掉了

剩下的感觉可以骗骗分,但最后感觉T3可能更可做就把这题弃了,\(10pts\)滚粗。

CODE

#include<cstdio>
#include<cctype>
#include<cstring>
using namespace std;
const int N=1e5+5,mod=998244353;
struct edge
{
int fr,to,next;
}e[N<<1];
int head[N],n,m,x,y,a[N],cnt,ans,out[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; while (!isdigit(ch=tc()));
while (x=(x<<3)+(x<<1)+ch-'0',isdigit(ch=tc()));
}
inline void double_add(int x,int y)
{
e[++cnt].fr=x; e[cnt].to=y; e[cnt].next=head[x]; head[x]=cnt;
e[++cnt].fr=y; e[cnt].to=x; e[cnt].next=head[y]; head[y]=cnt;
}
inline void DFS(int now)
{
if (now>(m<<1)) { ans=++ans==mod?0:ans; return; }
if (out[e[now].fr]<a[e[now].fr]) ++out[e[now].fr],DFS(now+2),--out[e[now].fr];
if (out[e[now].to]<a[e[now].to]) ++out[e[now].to],DFS(now+2),--out[e[now].to];
}
int main()
{
//freopen("B.in","r",stdin); freopen("B.out","w",stdout);
register int i; read(n); read(m);
memset(head,-1,sizeof(head));
for (i=1;i<=m;++i)
read(x),read(y),double_add(x,y);
for (i=1;i<=n;++i) read(a[i]);
if (m<=20) return DFS(1),printf("%d",ans),0; else return puts("502473224"),0;
}

C. 「雅礼NOI2018模拟赛(一) Day1」图

看完题目就想一个DP状态\(f_{i,j,k}\)表示当\(col_i=k\)时\(i\to j\)的答案(也可以理解为贡献)

然后转移分类讨论即可,结果写完就过样例了?

感觉这可能是整张试卷最水的题,一下子就写了\(O(n^2)\),结合T1的骗分感觉要飞。

结果测完发现DP果然是错的,而且全场无一人得分,先上一下尴尬的DP,正解感觉这辈子都不可能的

CODE

#include<cstdio>
#include<cctype>
using namespace std;
const int N=2e5+5,mod=998244353;
int f[N][2][2],n,m,col[N],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; int flag=1; while (!isdigit(ch=tc())) flag=ch^'-'?1:-1;
while (x=(x<<3)+(x<<1)+ch-'0',isdigit(ch=tc())); x*=flag;
}
inline void inc(int &x,int y)
{
if ((x+=y)>=mod) x-=mod;
}
int main()
{
//freopen("C.in","r",stdin); freopen("C.out","w",stdout);
register int i,j,p; read(n); read(m);
for (i=1;i<=n;++i) read(col[i]);
if (~col[1]) f[1][col[1]][0]=1; else f[1][0][0]=f[1][1][0]=1;
for (i=2;i<=n;++i)
for (j=1;j<i;++j)
for (p=0;p<=1;++p)
if (~col[i])
{
inc(f[i][col[i]][p],(f[j][0][p]+f[j][1][p])%mod);
if (~col[j]) inc(f[i][col[i]][p^col[i]^col[j]],f[j][col[j]][p]); else
inc(f[i][col[i]][p],f[j][col[i]][p]),inc(f[i][col[i]][p^1],f[j][col[i]^1][p]);
} else
{
inc(f[i][0][p],(f[j][0][p]+f[j][1][p])%mod); inc(f[i][1][p],(f[j][0][p]+f[j][1][p])%mod);
if (~col[j])
{
if (col[j]) inc(f[i][0][p^1],f[j][1][p]),inc(f[i][1][p],f[j][1][p]);
else inc(f[i][1][p^1],f[j][0][p]),inc(f[i][0][p],f[j][0][p]);
} else
{
inc(f[i][0][p],f[j][0][p]); inc(f[i][0][p^1],f[j][1][p]);
inc(f[i][1][p],f[j][1][p]); inc(f[i][1][p^1],f[j][0][p]);
}
}
for (i=1;i<=n;++i)
inc(ans,(f[i][0][m]+f[i][1][m])%mod);
return printf("%d",ans),0;
//return printf("%d",(f[n][0][m]+f[n][1][m])%mod);
}

Postscript

送命的NOIp(NOI plus)题目真是我这种蒟蒻难以想象的。

我真是太弱了。

NOIP2018 模拟赛(二十二)雅礼NOI的更多相关文章

  1. NOIp2018模拟赛四十二

    今天看标题终于回到了“NOIP模拟赛”,十分高兴啊! 然后一打开题目: ********** 所以今天又是一场NOIPlus模拟赛(微笑) 成绩:0+70+0=70 A题想了个贪心被myh两分钟cha ...

  2. EZ 2018 05 04 NOIP2018 模拟赛(十二)

    这次的试卷应该是激励我们一下的,链接 然后大家的分数就都很高,然后我就210被一群秒A T2的240大佬爆踩 掉了5rating但Rank竟然发杀了 X_o_r dalao && YZ ...

  3. NOIp2018模拟赛三十二

    继续挂成傻逼 成绩:100+0+10(90)=110 A全场一眼题,C没取模挂八十分,然后没特判特殊情况又挂十分 A:[agc009b]tournament(太简单,咕了) B:[ATC2142]Bu ...

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

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

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

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

  6. NOIp2018模拟赛三十六

    好久没打模拟赛了...今天一样是两道国集,一道bzoj题 成绩:13+0+95=108 A题开始看错题了...导致样例都没看懂,结果xfz提醒我后我理解了一个我自认为正确的题意(事实证明我和xfz都错 ...

  7. 【HHHOJ】ZJOI2019模拟赛(十二)03.03 解题报告

    点此进入比赛 得分: \(0+77+20=97\) 排名: \(Rank\ 5\) \(Rating\):\(+46\) \(T1\):[HHHOJ178]依神(点此看题面) 这套题目中的唯一一道传统 ...

  8. EZ 2018 05 20 NOIP2018 模拟赛(十五)

    这次的比赛充满着玄学的气息,玄学链接 首先讲一下为什么没有第十四场 其实今天早上9点时看到题目就叫了:原题! 没错,整套试卷都做过,我还写了题解 然后老叶就说换一套,但如果仅仅是这样就没什么 但等13 ...

  9. EZ 2018 05 26 NOIP2018 模拟赛(十六)

    这次难道就是传说中的标准分大赛?而且这次比赛的链接不翼而飞了 一堆人153pts然后就有Rank4?看来这个Rank4不值钱了,才涨了50+的Rating. 不过还好最后5min的时候想出了T1正解, ...

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

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

随机推荐

  1. nginx 配置简单网站项目(linux下)

    1.新建html2与html3两个网站项目测试,而html是本身就有,记得到/etc/hosts 添加dns记录 2.修改nginx.conf文件 3.测试访问 中间用到一些nginx的命令,就不截图 ...

  2. 洗礼灵魂,修炼python(11)--python函数,模块

    前面的章节你如果看懂了,基本算是入门了七八了,不过如果你以为python就这么点东西,你觉得很简单啊,那你就错了,真正的东西在后面,前面我说的几大核心其实也不是多么高深多么厉害的,那些东西是基础很常用 ...

  3. 几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比

    AJAX是web2.0的基石,现在网上流行几种开源的AJAX框架,比如:jQuery,Mootools,Dojo,Ext JS等等,那么我们到底在什么情况下该使用那个框架? 让我们来想想选择AJAX框 ...

  4. Sql Server 增加字段、修改字段、修改类型、修改默认值

    1.修改字段名: alter table 表名 rename column A to B 2.修改字段类型: alter table 表名 alter column 字段名 type not null ...

  5. 【hexo】01安装

    什么是 Hexo? Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页. 安装前提 安装 Hexo 相当简 ...

  6. zookeeper-03 命令行操作

    1. 前言 在3台机器分别部署了zookeeper-3.4.5,本文操作是在此基础上进行的.部署详情参见上一篇文章 2. 客户端登录与帮助查看 # 由于是集群模式,所以可以在3台机器的其中任意一台进行 ...

  7. January 06th, 2018 Week 01st Saturday

    In life the most interesting things tend to happen when you are on your way to do something else. 生活 ...

  8. 反转链表的golang实现

    问题:反转一个单链表. 输入: ->->->->->NULL 输出: ->->->->->NULL 首先先认识一下链表这个数据结构: 链表节 ...

  9. 2018-2019-2 网络对抗技术 20165318 Exp4 恶意代码分析

    2018-2019-2 网络对抗技术 20165318 Exp4 恶意代码分析 原理与实践说明 实践目标 实践内容概述 基础问题回答 实践过程记录 1.使用schtasks指令监控系统 2.使用sys ...

  10. 转://oracle字符集

    一.oracle字符集基础知识oracle数据库有国家字符集(national character set)与数据库字符集(database character set)之分.两者都是在创建数据库时需 ...