Luogu P2657 [SCOI2009]windy数

2021-05-18 23:31

阅读:579

标签:math   i+1   names   its   ret   +=   int   inline   相等   

题目
首先我们可以非常轻松地预处理出\(f_{i,j}\)表示一个最高位为\(i\)位且该位为\(j\)的windy数的个数。
然后我们可以利用经典容斥把答案变成求\([1,x]\)的windy数个数。
\(x\)\(len\)位,从低到高位分别是\(a_1,\cdots,a_{len}\)
首先我们把位数小于\(len\)的答案求出。
然后求出位数等于\(len\)且首位小于\(a_{len}\)的答案。
然后我们从大到小枚举\(len\sim i-1\)位相等,\(i\)位不等,枚举第\(i\)位从\(1\)\(a_{i}-1\),如果第\(i\)位的数\(j\)\(a_{i+1}\)差的绝对值\(\ge2\),那么这里的答案就是\(f_{i,j}\)

#include
using namespace std;
int f[11][11],a[11];
int abs(int a){return a=2) f[i][j]+=f[i-1][k];
}
int cal(int x)
{
    int i,j,len=0,ans=0;
    while(x) a[++len]=x%10,x/=10;
    for(i=1;i>a>>b;cout

Luogu P2657 [SCOI2009]windy数

标签:math   i+1   names   its   ret   +=   int   inline   相等   

原文地址:https://www.cnblogs.com/cjoierShiina-Mashiro/p/11729087.html


评论


亲,登录后才可以留言!