表达式(exp)
題目大意
給定一個邏輯表達式,求每一個數滿足$\in[1,n]$的使的表達式為真的方案數。
?
題解
題目限制較奇怪且數據范圍較小,所以可以考慮直接暴力。
考慮枚舉每一個變量一共出現了$k$種數值,再枚舉這些數值之間的大小關系,判斷是否滿足表達式為真的條件,每有一種,答案就$+C_n^k$即可。
為了方便計算應把中綴表達式轉化為后綴表達式,具體方法不再贅述。
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #define LL long long #define mod 1000000007 #define M 1020 #define OR -1 #define AND -2 #define LESS -3 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; } 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 n,m,V[M],W[M],K[M],tot,C[M],p[M],top,S[M],ans; void upd(int x){ans=add(ans,x);} int calc(int m1,int m2,int kd){if(kd==OR) return m1||m2;if(kd==AND) return m1&&m2;return W[K[m1]]<W[K[m2]]; } int qpow(int x,int sq){int res=1;for(;sq;x=mul(x,x),sq>>=1) if(sq&1) res=mul(res,x);return res; } void getans(int num){for(int i=1;i<=tot;W[i]=i,i++);do{top=0;for(int i=1;i<=n;i++){if(p[i]>0) S[++top]=p[i];else --top,S[top]=calc(S[top],S[top+1],p[i]);} if(S[top]) upd(num); --top;}while(next_permutation(W+1,W+tot+1)); } void fd(int x){if(x==8){getans(C[tot]);return;}for(int i=1;i<=tot;i++){K[x]=i;fd(x+1);}K[x]=++tot,fd(x+1),tot--; } int main(){for(int ch=getchar();ch!='\n';ch=getchar()){if(ch==' ') continue;if(islower(ch)) p[++n]=ch-'a'+1; if(ch=='(') S[++top]=9;if(ch==')'){while(S[top--]!=9) p[++n]=S[top+1];}if(ch=='<'){while(S[top]<=LESS) p[++n]=S[top--];S[++top]=LESS;}if(ch=='&'){while(S[top]<=AND) p[++n]=S[top--];S[++top]=AND;}if(ch=='|'){while(S[top]<=OR) p[++n]=S[top--];S[++top]=OR;}} while(top) p[++n]=S[top--]; m=read(),C[0]=1;for(int i=1;i<=n;i++){if(p[i]>0) putchar('a'-1+p[i]);else if(p[i]==LESS) putchar('<');else if(p[i]==OR) putchar('|');else if(p[i]==AND) putchar('&');else puts("SJK_AK_IOI");putchar(i<n?' ':'\n');}for(int i=1;i<=7;i++) C[i]=mul(C[i-1],mul(qpow(i,mod-2),m-i+1));fd(1),printf("%d\n",ans);return 0; }?
轉載于:https://www.cnblogs.com/OYJason/p/9794908.html
總結
- 上一篇: ExtJs 分组表格控件----监听
- 下一篇: 专题:固体力学中应力与应变分析详解(7.