NOIP2018 模拟赛(二十二)雅礼NOI
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的更多相关文章
- NOIp2018模拟赛四十二
今天看标题终于回到了“NOIP模拟赛”,十分高兴啊! 然后一打开题目: ********** 所以今天又是一场NOIPlus模拟赛(微笑) 成绩:0+70+0=70 A题想了个贪心被myh两分钟cha ...
- EZ 2018 05 04 NOIP2018 模拟赛(十二)
这次的试卷应该是激励我们一下的,链接 然后大家的分数就都很高,然后我就210被一群秒A T2的240大佬爆踩 掉了5rating但Rank竟然发杀了 X_o_r dalao && YZ ...
- NOIp2018模拟赛三十二
继续挂成傻逼 成绩:100+0+10(90)=110 A全场一眼题,C没取模挂八十分,然后没特判特殊情况又挂十分 A:[agc009b]tournament(太简单,咕了) B:[ATC2142]Bu ...
- EZ 2018 06 17 NOIP2018 模拟赛(十九)
这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...
- EZ 2018 06 10 NOIP2018 模拟赛(十八)
好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...
- NOIp2018模拟赛三十六
好久没打模拟赛了...今天一样是两道国集,一道bzoj题 成绩:13+0+95=108 A题开始看错题了...导致样例都没看懂,结果xfz提醒我后我理解了一个我自认为正确的题意(事实证明我和xfz都错 ...
- 【HHHOJ】ZJOI2019模拟赛(十二)03.03 解题报告
点此进入比赛 得分: \(0+77+20=97\) 排名: \(Rank\ 5\) \(Rating\):\(+46\) \(T1\):[HHHOJ178]依神(点此看题面) 这套题目中的唯一一道传统 ...
- 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分 ...
随机推荐
- Ubuntu切换root身份,命令行以中文显示
很多VPS商给的默认用户名并不是root,用以下命令处理即可: 1.修改root密码 sudo passwd root 输入密码,回车,再确认一次即可 2.更改密码后切换root身份 su root ...
- [20170622]传输表空间与dblink.txt
[20170622]传输表空间与dblink.txt --//测试看看使用dblink+传输表空间的情况.写的情况相对复杂一点,具体看测试: 1.环境:--//2个数据库版本一致.实际上在1台主机上. ...
- 4.7 Sublime Text3 中配置 Python环境 --之上安装Sublime 3
返回总目录 目录: 1.展示效果: 2.缺优分析: 3.下载Sublime Text3 (一)展示效果: 1.能够交互式编写Python代码: 2.可以编写文件式Python代码: 3.能够自动补齐代 ...
- ELK-kibana-6.3.2部署
1. 生产实践 .每个ES上面都启动一个Kibana .Kibana都连自己的ES .前端Nginx负载均衡.ip_hash + 验证 + ACL 2. kibana部署 2.1. 软件部署 [yun ...
- 使用Maven分环境打包:dev sit uat prod
使用Maven管理的项目,经常需要根据不同的环境打不同的包,因为环境不同,所需要的配置文件不同,比如database的连接信息,相关属性等等. 在Maven中,我们可以通过P参数和profiles元素 ...
- 软工实践作业2:个人项目实战之Sudoku
Github:Sudoku 项目相关要求 项目需求 利用程序随机构造出N个已解答的数独棋盘 . 输入 数独棋盘题目个数N(0<N<=1000000). 输出 随机生成N个不重复的已解答完毕 ...
- Unity3D中自带事件函数的执行顺序
在Unity3D脚本中,有几个Unity3D自带的事件函数按照预定的顺序执行作为脚本执行.其执行顺序如下: 编辑器(Editor) Reset:Reset函数被调用来初始化脚本属性当脚本第一次被附到对 ...
- Codeforces gym 101343 A. On The Way to Lucky Plaza【概率+逆元+精度问题】
2017 JUST Programming Contest 2.0 题目链接:http://codeforces.com/gym/101343/problem/A A. On The Way to ...
- php递归无限级
function getTree($data, $pId) { $tree = ''; foreach($data as $k => $v) { if($v['cate_ParentId'] = ...
- 关于PHP中浏览器禁止Cookie后,Session能使用吗?
sessionid是存储在cookie中的,解决方案如下: Session URL重写,保证在客户端禁用或不支持COOKIE时,仍然可以使用Session session机制.session机制是一种 ...