鉴于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[],inv[],facinv[],ans;
ll C(ll x,ll y)
{
if(y>x) return ;
return fac[x]*facinv[y]%mod*facinv[x-y]%mod;
}
int main()
{
scanf("%lld%lld%lld",&n,&m,&k);
if(n>m){
puts("");
return ;
}
fac[]=;facinv[]=;inv[]=;
for(int i=;i<=max(n,m);i++){
if(i!=) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
fac[i]=fac[i-]*i%mod;
facinv[i]=facinv[i-]*inv[i]%mod;
}
for(int i=;i<=n;i++){
if(i&) ans=(ans+C(n,i)*C(m-i*k-,n-))%mod;
else ans=(ans-C(n,i)*C(m-i*k-,n-)+mod)%mod;
}
printf("%lld\n",(C(m-,n-)-ans+mod)%mod);
return ;
}

city

T2 轰炸行动(bomb)

考场好多看错题的,但是我没看错也没做出来(就是个废物)

移动是只要是有路径能到达就可以,那么我们tarjan缩点,缩完点后建新图,找最长链,每个点的深度应是父节点深度+点的size(几个点缩在一起),topu或dfs求最长链(但dfs好像容易T)。

#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
struct node
{
int to,nxt;
}h[],hh[];
int n,m,nxt[],tot,tet,cnt,dfn[],low[],s[];
int top,num,whos[],sz[],du[],dep[],ans,nx[];
bool is[];
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]=;
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(){
int tmp=s[top--];
is[tmp]=;
whos[tmp]=num;
sz[num]++;
if(x==tmp) break;
}
}
}
void topu()
{
queue<int>q;
for(int i=;i<=num;i++)
if(du[i]==) 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=;i<=m;i++){
scanf("%d%d",&u,&v);
add(u,v);
}
for(int i=;i<=n;i++)
if(!dfn[i]) tarjan(i);
for(int i=;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)

8.9 NOIP模拟测试15 建设城市(city)+轰炸行动(bomb)+石头剪刀布(rps)的更多相关文章

  1. 2019.8.9 NOIP模拟测试15 反思总结

    日常爆炸,考得一次比一次差XD 可能还是被身体拖慢了学习的进度吧,虽然按理来说没有影响.大家听的我也听过,大家学的我也没有缺勤多少次. 那么果然还是能力问题吗……? 虽然不愿意承认,但显然就是这样.对 ...

  2. NOIP模拟测试15「建造城市city(插板法)·轰炸·石头剪刀布」

    建造城市 题解 先思考一个简单问题 10个$toot$ 放进5间房屋,每个房屋至少有1个$toot$,方案数 思考:插板法,$10$个$toot$有$9$个缝隙,$5$间房屋转化为$4$个挡板,放在t ...

  3. 「题解」NOIP模拟测试题解乱写II(36)

    毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...

  4. 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组

    2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...

  5. 2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色

    2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 数据结构学傻的做法: 对每种颜色开动态开点线段树直接维 ...

  6. 2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci)

    2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci) 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 找规律 找两个节点的lca,需 ...

  7. NOIP模拟测试17&18

    NOIP模拟测试17&18 17-T1 给定一个序列,选取其中一个闭区间,使得其中每个元素可以在重新排列后成为一个等比数列的子序列,问区间最长是? 特判比值为1的情况,预处理比值2~1000的 ...

  8. NOIP模拟测试1(2017081501)

    好,今天是cgg第一次举行模拟测试,希望各位支持. 时间限制:2小时 题目链接: 题目一:水得都没名字了 题目二:车站 题目三:选数 不要觉得2小时太少,我的题目很良心,都很简单. 答案可以在模拟测试 ...

  9. NOIP模拟测试23

    这次考试又一次暴露了我很大的问题. 首先做的比较好的是这几次考试一分没挂, 但是,这也体现了更大的问题,那就是我的实力似乎也仅限于此了. 考试先拿满了暴力分(100+0+50),然后看了看T2没看懂, ...

随机推荐

  1. 【django json.dumps 报错】 datetime.datetime is not JSON serializable

    django 中,json.dumps 无法直接转译 datetime 类型的值. 找了无数方法,找到一个最优.最简洁的解决办法: json.dumps(results, indent=4, sort ...

  2. python中count和index

    str = [1,2,3,4,5] #定义一个列表 str = 3 #列表3 str [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5] str.count(1 ...

  3. pymysql 读取大数据内存卡死的解决方案

    背景:目前表中只有5G(后期持续增长),但是其中一个字段(以下称为detail字段)存了2M(不一定2M,部分为0,平均下来就是2M),字段中存的是一个数组,数组中存N个json数据.这个字段如下: ...

  4. Mongodb--内存管理MMAP

    MongoDB使用的是内存映射存储引擎,即Memory Mapped Storage Engine,简称MMAP. MMAP可以把磁盘文件的一部分或全部内容直接映射到内存,这样文件中的信息位置就会在内 ...

  5. RESTful及API设计(原)

    RESTful是一种架构风格,是由Fielding博士在自己的博士论文中提出并详细论述的. 它是用于指导web系统设计的,而指导API设计只是它的一小部分功能而已,如果只用它指导API设计就太大材小用 ...

  6. kali渗透综合靶机(六)--FristiLeaks靶机

    kali渗透综合靶机(六)--FristiLeaks靶机 靶机地址下载:https://download.vulnhub.com/fristileaks/FristiLeaks_1.3.ova 一.主 ...

  7. Visual Studio 项目在修改项目版本时,使用 * 通配符报错

    CS8357  C# The specified version string contains wildcards, which are not compatible with determinis ...

  8. SQL中的视图(极客时间)

    视图 视图也就是虚拟表, 本身不具备数据, 是SQL中的一个变红要概念. 如图 视图可以帮助我们使用表的一部分, 而不是所有的表, 另一方面可以针对不同的用户制定不同的查询视图. 创建, 更新与删除视 ...

  9. GCN实现3

    参考 : 首先看两篇论文,大概了解一下原理性的东西: GRAPH CONVOLUTIONAL NETWORKS THOMAS KIPF, 30 SEPTEMBER 2016 http://tkipf. ...

  10. Java后端面经总结:拿下蚂蚁金服美团头条 offer 秘诀

    笔者在面过 猿辅导,去哪儿,旷视, 陌陌,头条, 阿里, 快手, 美团, 腾讯之后,除了收获一大堆面试问题,还思考到如何成为面试官眼中的”爱技术,爱思考,靠谱,有潜力候选人的”一些”套路”. 面试问题 ...