• 题目链接:

    连我们都只有纸质题目...话说雅礼集训都是这样的吗...

  • 大意

    0维基本图形是一个点

    1维基本图形是一条线段

    2维基本图形是一个正方形

    3维基本图形是一个正方体

    4维基本图形是...

    求\(n\)维基础图形中有多少个\(m\)维基础图形\((n>=m)\)并对\(998244353\)取模

  • 分析

    手玩样例打表吼啊

    当然还是要暗中观察一下啦

    线段变成正方形,点数变为原来两边,边数除了变为原来两倍之外还要加上原来点数所对应连起来的边

    正方形变正方体也类似

    于是我就yy出一个递推式\(num[x][m]=num[x-1][m]*2+num[x-1][m-1]\)

    \(num[x][m]\)表示\(x\)维基础图形中含有\(m\)维基础图形的数量

    然后我们可以打一张表

    然后就有dalao发现了规律(我比较傻考场上都手玩出每一项能整除2的幂都没发现规律)

    \(num[n][m]/2^{n-m}=C^n_m\)

    然后就ok了

  • 注意

    在订正这道题时发现几个值得注意的地方

    • 线性求逆元时我原来的方法不行

      原来我这么线性求逆元

inv[i]=(-(p/i)*inv[p%i]%p);

```

结果我发现数字一大就GG了

这是大佬的线性求逆元

```

inv[i]=(ll)(p-(p/i))*inv[p%i]%p;

```

这就很稳了
  • 一个有趣的性质

    逆元的阶乘是原来数字阶乘的逆元

    很有趣,好象可证

  • 代码:

include

include

include

include

include

include

include

define ri register int

define ll long long

using namespace std;

const int maxn=100005;

const int inf=0x7fffffff;

const int p=998244353;

template inline void read(T &x){

x=0;int ne=0;char c;

while(!isdigit(c=getchar()))ne=c'-';

x=c-48;

while(isdigit(c=getchar()))x=(x<<3)+(x<<1)+c-48;

x=ne?-x:x;

return ;

}

int inv[maxn],twopow[maxn],fac[maxn];

inline void pre(){

inv[0]=inv[1]=1,fac[1]=1,twopow[0]=1,twopow[1]=2;

for(ri i=2;i<=100002;i++){

fac[i]=(ll)fac[i-1]i%p;

inv[i]=(ll)(p-(p/i))
inv[p%i]%p;

twopow[i]=(ll)(twopow[i-1]<<1)%p;

//cout<<fac[i]<<' '<<inv[i]<<' '<<twopow[i]<<endl;

}

for(ri i=2;i<=100002;i++){

inv[i]=(ll)inv[i]*inv[i-1]%p;//比较神奇,逆元的阶乘是原来数的阶乘的逆元

}

return ;

}

int t;

inline int solve(int m,int n){

if(m0)return twopow[n];

if(n==m)return 1;

return (ll)fac[n]inv[n-m]%ptwopow[n-m]%p*inv[m]%p;

}

int main(){

int n,m;

read(t);

pre();

while(t--){

read(n),read(m);

printf("%d\n",solve(m,n));

}

return 0;

}

```

Yali7月集训Contest2 T1 Cube 题解的更多相关文章

  1. Contest2037 - CSU Monthly 2013 Oct(中南大学2013年10月月赛水题部分题解)

    Problem A: Small change 题解:http://www.cnblogs.com/crazyapple/p/3349469.html Problem B: Scoop water 题 ...

  2. FJ省队集训DAY4 T1

    直接上题解 #include<cstdio> #include<iostream> #include<cmath> #include<cstring> ...

  3. FJ省队集训DAY3 T1

    思路:我们考虑如果取掉一个部分,那么能影响到最优解的只有离它最近的那两个部分. 因此我们考虑堆维护最小的部分,离散化离散掉区间,然后用线段树维护区间有没有雪,最后用平衡树在线段的左右端点上面维护最小的 ...

  4. 集训day15 t1 poj3728

    [问题描述] 有一颗n个节点的树 每个节点上都有许多奸商在卖东西,第i个奸商的理想价格为vi,即他会以vi的价格购买或卖出一件东西 有m个人希望从树上的某个点走到另一个点,问你在只进行一次买卖(每次仅 ...

  5. 洛谷 4932 洛谷10月月赛II T1 浏览器

    [题解] x xor y的结果在二进制下有奇数个1,等价于x与y在二进制下的1的个数之和为奇数,因为x xor y减少的1的个数一定是偶数(两个数这一位都为1,xor的结果为0,减少了2个1) 那么答 ...

  6. 2020牛客寒假算法基础集训营5 部分题解(BDEH)

    B: 牛牛战队的比赛地(二分做法)题意:二维平面给定n个点,在x轴找一点使得到n个点距离的最大值最小. 思路:我们可以将问题转化为在x轴找到一个圆心,使得该圆包含这n个点且半径最小,这样就变成了最小圆 ...

  7. NOI Online #3 提高组 T1水壶 题解

    题目描述 有 n 个容量无穷大的水壶,它们从 1∼n 编号,初始时 i 号水壶中装有 Ai 单位的水. 你可以进行不超过 k 次操作,每次操作需要选择一个满足 1≤x≤n−1 的编号 x,然后把 x ...

  8. 模拟赛18 T1 施工 题解

    前言: 真的是不容易啊.这个题在考场上想到了最关键的性质,但是没写出来. 后来写出来,一直调,小错不断. 没想到改的最后一个错误是两个int 乘起来爆了int 其实最后我还是觉得复杂度很假.\(n^2 ...

  9. FJ省队集训DAY5 T1

    思路:考试的时候打了LCT,自以为能过,没想到只能过80.. 考完一想:lct的做法点数是100W,就算是nlogn也会T. 讲一下lct的做法把:首先如果一条边连接的两个点都在同一个联通块内,那么这 ...

随机推荐

  1. qt 元对象系统

    元对象系统 Qt中的元对象系统是用来处理对象间通讯的信号/槽机制.运行时的类型信息和 动态属性系统. 它基于下列三类: QObject类: 类声明中的私有段中的Q_OBJECT宏: 元对象编译器(mo ...

  2. C# 7 .NET / CLR / Visual Studio version requirements

    C# 7 .NET / CLR / Visual Studio version requirements   You do NOT need to target .NET 4.6 and above, ...

  3. VC++实现标准型计算器步骤及源码

    VC++实现标准型计算器步骤及源码 2013年06月19日 09:48:47 无敌的成长日记 阅读数:4686       最近一段时间一直在做这个东西,刚刚拿到题目的时候认为这是一个简单的程序,可是 ...

  4. Nginx作为静态资源web服务-跨站访问

    一.跨域访问 1.什么是跨域? 参看我的另一篇博客(https://www.cnblogs.com/chrdai/p/11280895.html) 2.为什么浏览器禁止跨域访问? 不安全,容易出现CS ...

  5. Spring-Kafka —— 消费重试机制实现

    消息处理问题 在从Kafka主题接收消息之后立即处理消息的消费者的实现非常简单.不幸的是,现实要复杂得多,并且由于各种原因,消息处理可能会失败.其中一些原因是永久性问题,例如数据库约束失败或消息格式无 ...

  6. django中CBV加csrf_exempt函数问题

    CSRF Token相关装饰器在CBV只能加到dispatch方法上 备注: 1. csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置全局中间件. 2. c ...

  7. 【JVM学习笔记】线程上下文类加载器

    有许多地方能够看到线程上下文类加载的设置,比如在sun.misc.Launcher类的构造方法中,能够看到如下代码 先写一个例子建立感性认识 public class Test { public st ...

  8. 前端学习之JavaScript(1)

    目录 一. JavaScript简介 二. 第一个JavaScript代码 三. 基本数据类型 四. 运算符 五. 数据类型转换 六. 流程控制 七. 常用内置对象 八. 函数 一. JavaScri ...

  9. eNSP路由器输出 '#' 无法启动的一种解决方法

    试过网上的改virtulboxIP.关防火墙.改兼容性等方法,都不成功.后来发现通过改变选择路由器的型号可以启动. 如果对路由器没有特殊需求,可以选择型号数字较小的试一下(最低可以选择Router).

  10. PJzhang:在windows10中实现右键命令行快捷打开

    猫宁!!! (windows10---设置---轻松使用---键盘---开启PrtScn快速截图),或者winodws+shift+s kali linux中右键就可以打开终端命令行. 采用手工修改注 ...