幾何

?

?題目大意
定義一個$S-$四面體表示六條邊由$S$根不同的木棍組成,定義一種染色方法合法當且僅當至少有$S$根木棍被染色且與每個頂點相鄰的三根木棍中至多有一根被染色,求有$N$個$S=1,2...N$四面體,求至少染$K$個的方案數。

?

題解

單獨考慮$S=1$四面體,染它有$9$中方案,否則將與每個頂點相鄰的$12$條邊單獨拿出來計算。

考慮其余四面體被染色的方案數:他們中有$k$個頂點$(k=0,1,2,3,4)$相鄰的木棍三條中有一條被染色,方案是$C_4^k\times 3^k$,剩余的邊則有$\sum\limits_{i=S-k}^{6S-12}C_{6S-12}^{i}$,用乘法原理乘一下即可。

由于$k$很小,可以只求$\sum\limits_{i=S}^{6S-12}C_{6S-12}^{i}$,其余加上組合數即可。而這個式子是楊輝三角上的某一行的一個后綴,所以是可以遞推的,考慮上一行答案對下一行答案的貢獻,只需要乘二再加上上一行后綴左側的那個組合數即可。

我們現在已經解決了每一個$S$的方案數,接下來就是求染出至少$K$個的方案數,也只需要遞推,設$G_x$表示染$x$個的方案數$V$表示當染前四邊形的方案數,$G_x=G_x+V\times G_{x-1}$。這是$N$個簡單最高次項次數是一次的多項式的卷積,用分治$FFT$解決即可。

有兩個細節,由于模數只有$10^5+3$,所以算組合數要用$lucas$定理。并且,$FFT$中每一位可能達到$10^{15}$級別,精度可能會爆炸,所以要優化或者使用$long\space double$。

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define LD long double
#define mod 100003
#define M 100020
using namespace std;
int read(){int nm=0,fh=1; int cw=getchar();for(;!isdigit(cw);cw=getchar()) if(cw=='-') fh=-fh;for(;isdigit(cw);cw=getchar()) nm=nm*10+(cw-'0');return nm*fh;
}
const int P[]={1,12,54,108,81};
const LD PI=3.141592653589793238462643383;
int mul(int x,int y){return (LL)x*(LL)y%mod;}
int add(int x,int y){return (x+y)>=mod?x+y-mod:x+y;}
int mus(int x,int y){return (x-y)<0?x-y+mod:x-y;}
void upd(int &x,int y){x=add(x,y);}
int qpow(int x,int sq){int res=1;for(;sq;sq>>=1,x=mul(x,x)) if(sq&1) res=mul(res,x);return res;
}
int n,m,fac[mod],ifac[mod],G[M<<2],lg[M<<2]; 
int C(int tot,int tk){if(tot<0||tk<0||tot<tk)return 0;return mul(fac[tot],mul(ifac[tot-tk],ifac[tk]));}
int lucas(int tot,int tk){if(!tk) return 1;return mul(C(tot%mod,tk%mod),lucas(tot/mod,tk/mod));}
int rev[M<<2],F[M<<2],S[M];
struct comp{LD r,d; comp(){r=d=0.0;}comp(LD _r,LD _d){r=_r,d=_d;}comp operator +(const comp&k)const{return comp(r+k.r,d+k.d);}comp operator -(const comp&k)const{return comp(r-k.r,d-k.d);}comp operator *(const comp&k)const{return comp(r*k.r-d*k.d,r*k.d+d*k.r);}
}A[M<<2],B[M<<2];
void FFT(comp *x,int len,LD kd){for(int i=1;i<len;i++) if(i<rev[i]) swap(x[i],x[rev[i]]);for(int tt=1;tt<len;tt<<=1){comp unit(cos(PI*kd/(tt*1.0)),sin(PI*kd/(tt*1.0)));for(int st=0;st<len;st+=(tt<<1)){comp now(1.0,0.0);for(int pos=st;pos<st+tt;pos++,now=now*unit){comp t1=x[pos],t2=x[pos+tt]*now;x[pos]=t1+t2,x[pos+tt]=t1-t2;}}}if(kd<0.0){for(int i=0;i<len;i++) x[i].r/=(len*1.0);}
}
void tms(int *x,int *x1,int *x2,int n1,int n2){if(n1+n2<=120){memset(S,0,sizeof(int)*(n1+n2+1));for(int i=0;i<=n1;i++){for(int j=0;j<=n2;j++) S[i+j]+=mul(x1[i],x2[j]);}for(int i=0;i<=n1+n2;i++) x[i]=S[i]%mod;}else{int len=1,nw=-1;for(;len<=n1+n2+1;len<<=1,nw++);for(int i=1;i<len;i++) rev[i]=(rev[i>>1]>>1)|((i&1)<<nw);for(int i=0;i<=n1;i++) A[i]=comp(x1[i]*1.0,0.0);for(int i=0;i<=n2;i++) B[i]=comp(x2[i]*1.0,0.0);for(int i=n1+1;i<=len;i++) A[i]=comp(0.0,0.0);for(int i=n2+1;i<=len;i++) B[i]=comp(0.0,0.0);FFT(A,len,1.0),FFT(B,len,1.0);for(int i=0;i<len;i++) A[i]=A[i]*B[i]; FFT(A,len,-1.0);for(int i=0;i<=n1+n2;i++) x[i]=llround(A[i].r)%mod;}
}
void solve(int *x,int L,int R){if(L==R){x[0]=1,x[1]=G[L];return;}int mid=((L+R)>>1),ls,rs; ls=mid-L+1,rs=R-mid;solve(x,L,mid),solve(x+ls+1,mid+1,R);tms(x,x,x+ls+1,ls,rs);
}
int main(){fac[0]=ifac[0]=1,G[1]=9,G[2]=243,G[3]=16224,G[4]=46489;for(int i=1;i<mod;i++) fac[i]=mul(fac[i-1],i),ifac[i]=qpow(fac[i],mod-2);for(int i=5,K,pre,last=3797,rem;i<M;i++){for(K=(i-2)*6,pre=K-6;pre<K;pre++) last=add(add(last,last),lucas(pre,i-2));last=mus(last,lucas(K,i-1)),rem=last;for(int k=0;k<=4;k++) upd(G[i],mul(P[k],rem)),upd(rem,lucas(K,i-k-1));}for(int T=read(),ans=0;T;--T,ans=0){n=read(),m=read(),solve(F,1,n);for(int i=n;i>=m;i--) upd(ans,F[i]);printf("%d\n",ans);}return 0;
}

轉載于:https://www.cnblogs.com/OYJason/p/9751387.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249353.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249353.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249353.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VUE的element-ui的使用

我們在自己的網站當中有的時候會用到element-ui的組建 1.如何安裝element-ui的組件 在命令行工具當中輸入cnpm i element-ui -S, 等待安裝 2.如何在vue當中使用element-ui的組件 1.在main.js中引入element相關的js和cssimport Vue from vueimport ElementUI from element-u…

NodeJS+Express+Mysql+MongoDB之環境配置

node作為一款可以兼容前后端的js語言,在做持久層操作上和Java比較類似,下面就簡單介紹一下項目中的數據庫配置操作. 首選使用express框架自動創建一個測試項目,并在目錄下建立一個專門存放數據庫配置的配置文件,比如:db.js 代碼如下 /* * 數據庫配置文件 * Author: zth * D…

Python 私有變量的訪問和賦值

首先我們這里先描述下&#xff1a;  Python中&#xff0c;變量名類似__x__的&#xff0c;以雙下劃線開頭&#xff0c;并且以雙下劃線結尾的&#xff0c;是特殊變量&#xff0c;特殊變量是可以直接訪問的&#xff08;比如 __doc__, __init__等&#xff09;&#xff0c;不是pri…

SpringBoot入門教程(一)詳解intellij idea搭建SpringBoot

最近公司有一個內部比賽(黑客馬拉松)&#xff0c;報名參加了這么一個賽事&#xff0c;在準備參賽作品的同時&#xff0c;由于參賽服務器需要自己搭建且比賽產生的代碼不能外泄的&#xff0c;所以借著這個機會&#xff0c;本地先寫了個測試的demo&#xff0c;來把tomcat部署相關…

文藝平衡樹 Splay 學習筆記(1)

&#xff08;這里是Splay基礎操作&#xff0c;reserve什么的會在下一篇里面講&#xff09; 好久之前就說要學Splay了&#xff0c;結果茍到現在才學習。 可能是最近良心發現自己實在太弱了&#xff0c;聽數學又聽不懂只好多學點不要腦子的數據結構。 感覺Splay比Treap良心多了—…

JS使用XMLHttpRequest對象POST收發JSON格式數據

JavaScirpt中的XMLHttpRequest對象提供了對 HTTP 協議的完全訪問&#xff0c;使用該對象可以在不刷新頁面的情況與服務器交互數據。XMLHttpRequest是實現AJAX技術的關鍵對象&#xff0c;本站曾整理過一篇介紹該對象的文章&#xff1a; JS使用XMLHttpRequest對象與服務器進行數據…

ShopXO本地化部署安裝之centeros 安裝Apache2.4.6 + PHP7.0.33 + Mysql5.7.25環境

對于centerOS安裝PHP環境&#xff0c;目前網上的帖子都已經比較成熟&#xff0c;具體步驟大家可以自行搜索查看&#xff0c;但是在安裝過程中遇到的一些小細節&#xff0c;這些內容往往需要結合多個帖子才能找到答案&#xff0c;在這里簡單記錄一下。 細節一 如果使用的阿里云…

Spring Boot 擴展點應用之工廠加載機制

Spring 工廠加載機制&#xff0c;即 Spring Factories Loader&#xff0c;核心邏輯是使用 SpringFactoriesLoader 加載由用戶實現的類&#xff0c;并配置在約定好的META-INF/spring.factories 路徑下&#xff0c;該機制可以為框架上下文動態的增加擴展。 該機制類似于 Java SPI…

Vue.js使用-http請求

Vue.js使用-ajax使用 1.為什么要使用ajax 前面的例子&#xff0c;使用的是本地模擬數據&#xff0c;通過ajax請求服務器數據。 2.使用jquery的ajax庫示例 new Vue({el: #app,data: {searchQuery: ,columns: [{name: name, iskey: true}, {name: age},{name: sex, dataSource:…

跨域(Cross-Domain) AJAX for IE8 and IE9

1、有過這樣一段代碼&#xff0c;是ajax $.ajax({url: "http://127.0.0.1:9001",type: "POST",data: JSON.stringify({"reqMsg":"12345"}),dataType: json,timeout: 1000 * 30,success: function (response) {if(response.n6){dosomet…

移動WEB的頁面布局

隨著移動互聯網的日益普遍&#xff0c;現在移動版本的web應用也應用而生&#xff0c;那么在做移動web頁面布局的過程中&#xff0c;應該注意哪些要點呢&#xff1f;現把個人的一些學習經驗總結如下&#xff1a; 要點一、piexl 1px 2dp dp dpr dpi ppi 要點二、viewport io…

AnswerOpenCV(1001-1007)一周佳作欣賞

外國不過十一&#xff0c;所以利用十一假期&#xff0c;看看他們都在干什么。一、小白問題http://answers.opencv.org/question/199987/contour-single-blob-with-multiple-object/ Contour Single blob with multiple objectHi to everyone. Im developing an object shape id…

Mysql 開啟遠程連接

在日常的數據庫的使用過程&#xff0c;往往會因為連接權限的問題搞得我們焦頭爛額&#xff0c;今天我把我們在數據庫連接上的幾個誤區簡單做個記錄。內容如下&#xff1a; 誤區一&#xff1a;MYSQL密碼和數據庫密碼的區別 mysql密碼是我們在安裝mysql服務是設置的密碼&#xf…

基于jsp+servlet完成的用戶注冊

思考 &#xff1a; 需要創建實體類嗎? 需要創建表嗎 |----User 存在、不需要創建了&#xff01;表同理、也不需要了 1.設計dao接口 package cn.javabs.usermanager.dao;import cn.javabs.usermanager.entity.User;/*** 用戶的dao接口的設計* author Mryang**/ public interfa…

vue resource then

https://www.cnblogs.com/chenhuichao/p/8308993.html

云開發創建云函數

安裝wx-server-sdk時候&#xff0c;終端報錯如下&#xff1a; 解決方法&#xff1a; 運行&#xff1a;npm cache clean --force即可 轉載于:https://www.cnblogs.com/moguzi12345/p/9758842.html

Java8新特性——函數式接口

目錄 一、介紹 二、示例 &#xff08;一&#xff09;Consumer 源碼解析 測試示例 &#xff08;二&#xff09;Comparator &#xff08;三&#xff09;Predicate 三、應用 四、總結 一、介紹 FunctionalInterface是一種信息注解類型&#xff0c;用于指明接口類型聲明…

CSS3筆記之基礎篇(一)邊框

效果一、圓角效果 border-radius 實心上半圓&#xff1a; 方法&#xff1a;把高度(height)設為寬度&#xff08;width&#xff09;的一半&#xff0c;并且只設置左上角和右上角的半徑與元素的高度一致&#xff08;大于也是可以的&#xff09;。 div {height:50px;/*是width…

JavaSE之Java基礎(1)

1、為什么重寫equals還要重寫hashcode 首先equals與hashcode間的關系是這樣的&#xff1a; 1、如果兩個對象相同&#xff08;即用equals比較返回true&#xff09;&#xff0c;那么它們的hashCode值一定要相同&#xff1b; 2、如果兩個對象的hashCode相同&#xff0c;它們并不一…

bootstarp table

https://www.cnblogs.com/laowangc/p/8875526.html