8.9 NOIP模拟测试15 建设城市(city)+轰炸行动(bomb)+石头剪刀布(rps)
鉴于T3的惨烈程度,我决定先来颓篇题解。
T1 建设城市(city)
挡板法+容斥
m个建设队分成n组,每组必须有一个,先不考虑上限,共有 C(m-1,n-1)种方案。
有i个组是超过k个的,容斥掉 C(n,i)*C(m-i*k-1,n-1) 相当于把i×k个建设队拿出来,把剩下的m-i*k个建设队分成n组并且保证每个组都至少有一个且不考虑上界,再把这i个k放进n个分组里,就至少有i个组是大于k的。
#include<iostream> #include<cstring> #include<cstdio> #define mod 998244353 #define ll long long using namespace std; ll n,m,k,fac[10001000],inv[10001000],facinv[10001000],ans; ll C(ll x,ll y) {if(y>x) return 0;return fac[x]*facinv[y]%mod*facinv[x-y]%mod; } int main() {scanf("%lld%lld%lld",&n,&m,&k);if(n>m){puts("0");return 0;}fac[0]=1;facinv[0]=1;inv[1]=1;for(int i=1;i<=max(n,m);i++){if(i!=1) inv[i]=(mod-mod/i)*inv[mod%i]%mod;fac[i]=fac[i-1]*i%mod;facinv[i]=facinv[i-1]*inv[i]%mod;}for(int i=1;i<=n;i++){if(i&1) ans=(ans+C(n,i)*C(m-i*k-1,n-1))%mod;else ans=(ans-C(n,i)*C(m-i*k-1,n-1)+mod)%mod;}printf("%lld\n",(C(m-1,n-1)-ans+mod)%mod);return 0; }
city
T2 轰炸行动(bomb)
考场好多看错题的,但是我没看错也没做出来(就是个废物)
移动是只要是有路径能到达就可以,那么我们tarjan缩点,缩完点后建新图,找最长链,每个点的深度应是父节点深度+点的size(几个点缩在一起),topu或dfs求最长链(但dfs好像容易T)。
#include<iostream> #include<cstdio> #include<queue> using namespace std; struct node {int to,nxt; }h[4001000],hh[4001000]; int n,m,nxt[4001000],tot,tet,cnt,dfn[1001000],low[1001000],s[1001000]; int top,num,whos[1001000],sz[1001000],du[1001000],dep[1001000],ans,nx[4001000]; bool is[1001000]; int max(int x,int y) {return x>y?x:y; } void add(int x,int y) {h[++tot].to=y;h[tot].nxt=nxt[x];nxt[x]=tot; } void ad(int x,int y) {hh[++tet].to=y;hh[tet].nxt=nx[x];nx[x]=tet; } void tarjan(int x) {dfn[x]=low[x]=++cnt;s[++top]=x;is[x]=1;for(int i=nxt[x];i;i=h[i].nxt){int y=h[i].to;if(!dfn[y]){tarjan(y);low[x]=min(low[x],low[y]);}else if(is[y]) low[x]=min(low[x],dfn[y]);} if(dfn[x]==low[x]){num++;while(1){int tmp=s[top--];is[tmp]=0;whos[tmp]=num;sz[num]++;if(x==tmp) break;}} } void topu() {queue<int>q;for(int i=1;i<=num;i++)if(du[i]==0) q.push(i),dep[i]=sz[i],ans=max(ans,dep[i]);while(q.size()){int x=q.front();q.pop();for(int i=nx[x];i;i=hh[i].nxt){int y=hh[i].to;du[y]--;dep[y]=max(dep[y],dep[x]+sz[y]);ans=max(ans,dep[y]);if(!du[y]) q.push(y);}} } int main() {scanf("%d%d",&n,&m);int u,v;for(int i=1;i<=m;i++){scanf("%d%d",&u,&v);add(u,v);}for(int i=1;i<=n;i++)if(!dfn[i]) tarjan(i);for(int i=1;i<=n;i++){for(int j=nxt[i];j;j=h[j].nxt){int y=h[j].to;if(whos[i]!=whos[y]){ad(whos[i],whos[y]);du[whos[y]]++;}}}topu();printf("%d\n",ans); }
bomb
T3 石头剪刀布(rps)
转载于:https://www.cnblogs.com/jrf123/p/11328044.html
8.9 NOIP模拟测试15 建设城市(city)+轰炸行动(bomb)+石头剪刀布(rps)相关推荐
- NOIP模拟测试15「建造城市city(插板法)·轰炸·石头剪刀布」
建造城市 题解 先思考一个简单问题 10个$toot$ 放进5间房屋,每个房屋至少有1个$toot$,方案数 思考:插板法,$10$个$toot$有$9$个缝隙,$5$间房屋转化为$4$个挡板,放在t ...
- NOIP模拟测试19「count·dinner·chess」
反思: 我考得最炸的一次 怎么说呢?简单的两个题0分,稍难(我还不敢说难,肯定又有人喷我)42分 前10分钟看T1,不会,觉得不可做,完全不可做,把它跳了 最后10分钟看T1,发现一个有点用的性质,仍 ...
- NOIP模拟测试49·50「养花·折射·画作·施工·蔬菜·联盟」
一套题 养花 题解 分块\主席树 这里我用的是主席树 查询分段$1-(k-1)$找最大的,能向右找就向右找 for(ll nowl=1,nowr=k-1;nowl<=maxx;nowl+=k,n ...
- NOIP模拟测试39,思维禁锢专场「工业题·玄学题·卡常题」
工业题 题解 抱歉,题解没时间写了 代码 #include<bits/stdc++.h> using namespace std; #define ll long long #define ...
- NOIP模拟测试「简单的区间·简单的玄学·简单的填数·简单的序列」
简单的区间 $update$ 终于$AC$了 找到$(sum[r]+sum[l](sum表示以中间点为基准的sum)-mx)\%k==0$的点 注意这里$sum$表示是以$mid$为基准点,(即$su ...
- NOIP模拟测试21「折纸·不等式」
折纸 题解 考试时无限接近正解,然而最终也只是接近而已了 考虑模拟会爆炸,拿手折纸条试一试,很简单 考你动手能力 代码 #include<bits/stdc++.h> using name ...
- NOIP模拟测试18「引子·可爱宝贝精灵·相互再归的鹅妈妈」
待补 引子 题解 大模拟,注意细节 代码1 #include<bits/stdc++.h> using namespace std; int n,m;char a[1005][1005]; ...
- NOIP模拟测试10「大佬·辣鸡·模板」
大佬 显然假期望 我奇思妙想出了一个式子$f[i]=f[i-1]+\sum\limits_{j=1}^{j<=m} C_{k \times j}^{k}\times w[j]$ 然后一想不对得容 ...
- NOIP模拟测试25
这次考试后面心态爆炸了...发现刚了2h的T2是假的之后就扔掉了,草率地打了个骗分 T1只会搜索和m=0 最先做的T3,主要是发现部分分很多,当时第一眼看上去有87分(眼瞎了). 后来想了想,感觉一条 ...
最新文章
- 3:添加一个slave到已有的复制环境(基于二进制日志文件位置)
- 如何在移动设备上调试html5开发的网页
- 19.jsp生命周期
- Android 用户界面---样式和主题(Styles and Themes)(二)
- python列表存储字符串_Python 基础知识全篇-字符串列表
- 如何使用websocket实现前后端通信
- spring多线程获取不到bean_刚面完的字节跳动java研发面试题整理(含答案):线程+MySQL+Spring+JVM...
- android数据线接口分类,安卓手机数据线接口类型
- 手把手教你如何生成自己的二维码
- 漫步数理统计二十五——正态分布
- 傻瓜教程:手把手教你解决多个应用实例(附代码、手绘图)
- 直流有刷电机及Matlab/Simulink驱动仿真
- php文件怎么打开? 教你用什么软件打开php文件
- Three.js物理引擎与物体的相互作用——关联材质对摩擦力弹性影响、物体运动方式、作用力相关
- c语言工资对比java工资_三位同学历、同教龄、不同职称教师的工资对比
- 4. 写第一篇博客,最好的时间是今日,今时,今刻
- layui表格展示图片
- JavaScript的入门篇
- 大鼠半月板撕裂模型动物模型 用于评估潜在药物的疗效的有效模型
- 圈复杂度Cyclomatic complexity
热门文章
- JSON.parse 和 JSON.stringify
- 2016/11/14
- Operation not permitted - /usr/bin/xcodeproj
- Android 5.0 Screen pinning 屏幕固定功能
- MySQL安装编译时,/bin/rm: cannot remove `libtoolT': No such file or directory
- qt 实现拖动矩形角度_Qt 绘图之图形视图框架
- 世上可有后悔药?服务器里建快照
- 第六课:GNN的可解释性
- GRT上线Bancor提案已通过
- 介绍一份数据分析报告