首页 > 其他分享 >CF1931G. One-Dimensional Puzzle

CF1931G. One-Dimensional Puzzle

时间:2024-02-16 14:44:05浏览次数:29  
标签:i64 const 插法 int res Puzzle CF1931G Dimensional

CF1931G

思路

观察可得,要拼出合法序列只有12交替同时34插入12和21之间;
当1和2的相差超过1时,多出来拼图的无法拼接成合法序列,所以答案是0;
当1和2都为0时,只有3或者只有4的情况答案是1,其他情况答案是0;
当1比2多一个时:
只能是前后都是1,比如1 2 1 2 1,
观察得,3只能插在1的后面,4只能插在1的前面,3和4的插法是独立的
所以3的插法就是用c个物品放入a个盒中且允许空盒的方案数,把问题转化一下,我们先在a个盒子里分别放入1个物品,然后再按前面的方法入盒子,这样就把问题转化成用a + c个物品放入a个盒子中且不允许空盒的方案数,用隔板法得\(C_{a + c - 1}^{a - 1} = C_{a + c - 1}^{a}\)
同理4的插法就是\(C_{a + d - 1}^{a - 1} = C_{a + d - 1}^{d}\)
所以当1比2多一个时总方案数就是\(C_{a + c - 1}^{a}*C_{a + d - 1}^{d}\)
同理,当2比1多1时:
总方案数是\(C_{b + c - 1}^{c}*C_{b + d - 1}^{d}\)
当1和2一样多时:
如果是1在前,那么3的插法有\(C_{a + c - 1}^{c}\),4的插法有\(C_{a+d}^{d}\)
如果是2在前,那么3的插法用\(C_{a + c}^{c}\),4的插法有\(C_{a + d - 1}^{d}\)
总方案数就是\(C_{a + c - 1}^{c}*C_{a+d}^{d}+C_{a + c}^{c}*C_{a + d - 1}^{d}\)

ac代码

#include <bits/stdc++.h>

using namespace std;
using i64 = long long;
const i64 inf = 8e18;
typedef pair<int, int> pii;
const int P = 998244353;
const int N = 4e6 + 10;

i64 f[N], g[N];
i64 qpow(i64 a, i64 b) {
    i64 res = 1;
    while(b){  
      if(b & 1) res = res * a % P;
      a = a * a % P;
      b >>= 1;
    }
    return res;
}
void init(){
  f[0] = g[0] = 1;
  for(int i = 1; i <= N; i++) {
    f[i] = f[i-1] * i % P;
    g[i] = g[i-1] * qpow(i, P-2) % P;
  }  
}

i64 getC(i64 n, i64 m){
    if (n < m || n < 0 || m < 0) return 0;
    return f[n] * g[m] % P * g[n-m] % P;
}

void solve() {
    i64 a, b, c, d;
    cin >> a >> b >> c >> d;
    
    if (a == 0 && b == 0) {
        if (c && d) cout << 0 << endl;
        else cout << 1 << endl;
    } else if (a == b) {
        i64 ans = getC(a + c - 1, c) * getC(a + d, d) + getC(a + c, c) * getC(a + d - 1, d);
        cout << ans % P << endl;
    } else if (a - b == 1) {
        i64 ans = getC(a + c - 1, c) * getC(a + d - 1, d);
        cout << ans % P << endl;
    } else if (b - a == 1) {
        i64 ans = getC(b + c - 1, c) * getC(b + d - 1, d);
        cout << ans % P << endl;
    } else cout << 0 << endl;
}   

int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    cout.tie(0);
    
    init();
    
    int t = 1;
    cin >> t;
    while (t --) solve();

    return 0;
}

标签:i64,const,插法,int,res,Puzzle,CF1931G,Dimensional
From: https://www.cnblogs.com/kichuan/p/18017129

相关文章

  • G. One-Dimensional Puzzle
    G.One-DimensionalPuzzleYouhaveaone-dimensionalpuzzle,alltheelementsofwhichneedtobeputinonerow,connectingwitheachother.Allthepuzzleelementsarecompletelywhiteanddistinguishablefromeachotheronlyiftheyhavedifferentshap......
  • CodeForces 1931G One-Dimensional Puzzle
    洛谷传送门CF传送门什么[ABC336G]16Integers究极弱化版。把元素\(1\)看成\(01\),元素\(2\)看成\(10\),元素\(3\)看成\(11\),元素\(4\)看成\(00\)。则转化为统计长度为\(2\)的子串\(xy\)出现次数为\(c_{xy}\)的\(01\)串个数。把子串\(xy\)看成\(x\to......
  • Puzzle hunt 工具
    写在前面   做一下破解网站的汇总,方便调出来用,省的老在收藏夹韩信点兵()关于古典密码相关的网站指路古典密码篇→古典密码汇总-Tey729-博客园(cnblogs.com) 正文1.Qat-可定位字母找单词 Qat(quinapalus.com) 2.河马-搭配Qat食用,单词更多也更不靠谱 Th......
  • four-dimensional
    本文参考《从一到无穷大》(作者:George$\cdot$Gamow)第$4$章笔者知识浅薄,只是阅后拙见。可能有错漏之处,望高明的读者赐教。什么是四维空间众所周知,我们生活的三维空间中,确定物体的位置需要$3$个坐标:长,宽,高。四维空间,就是有$4$个维度。那么,第四维是什么?让我们想象一个情......
  • ABC336 F Rotation Puzzle 题解
    QuestionABC336FRotationPuzzle给出一个\(H\timesW\)的矩阵,里面填有数字,有一种操作选定一个\((x,y)\)交换\((i+x,j+y)\)和\((H-i+x,W-j+y)\)对于每一个\(1\lei\leH-1,1\lej\leW-1\)问,是否能经过\(20\)次以内的操作使得,最后的矩形变成\((i,j)=((i-1)\t......
  • 利用强化学习算法解释人类脑对高维状态的抽象表示:how humans can map high-dimensiona
    论文:《Usingdeepreinforcementlearningtorevealhowthebrainencodesabstractstate-spacerepresentationsinhigh-dimensionalenvironments》地址:https://www.cell.com/neuron/fulltext/S0896-6273(20)30899-0正文:https://www.cell.com/neuron/pdf/S0896-6273(20......
  • Animals and Puzzle 题解
    原题链接:CF713D题意:给定一个\(n\timesm\)的地图\(a\),\(a_{i}\)为\(0\)或\(1\)。有\(t\)次询问,每次询问给定一个矩形,求出这个矩形中最大的由\(1\)构成的正方形的边长是多少。首先考虑预处理出\(d_{i,j}\)表示以\((i,j)\)为左上角的最大正方形边长是多少。对于每......
  • 多因子降维法 multifactor dimensionality reduction MDR
    MDR的应用:在病例对照研究中,应用多因子降维法(MDR)分析基因-基因交互作用,较传统的统计学分析方法无法比拟的优势。Logistic回归的局限性理论上的不足:自变量对疾病的影响是独立的,但实际情况及推导结果不同。模型有不合理性:“乘法模型”与一般希望的“相加模型”相矛盾。最大似然......
  • CF1773J King's Puzzle 题解
    题意:思路:当$k\gen$时,一定无法构造。证明:$n$个点的无向图,每个点的度数$d∈[1,n-1]$,度数的种数一定不会超过$n-1$。当$k\len-1$时,构造方案如下:首先,选取前$k+1$个点,构造成一条链,此时链上各点的度数为$1$,$2$,$2$,$...$,$2......
  • The 2023 ICPC Asia Hefei Regional Contest Test I. Linguistics Puzzle
    Preface这题yysy真不难,但比赛的时候想出做法后没时间写了,只能遗憾地看着倒计时结束Solution直接上爆搜复杂度肯定会爆,考虑有哪些数是可以不用搜直接推出来的首先样例启发我们\(0,1\)这两个数很好确定,因为\(0\)对应的字母单独出现的次数肯定最多,而\(1\)作为两位的开头出现的次......