luogu1357花园

参考题解http://blog.youkuaiyun.com/largecub233/article/details/73457992

本题中的m,k比较小,因此可以用来状压,共有n朵花,设到第i朵花时候的状态为f[i][j],j为以i为结束点的的最近m个花的情形。那么当前的j状态可以由哪些k转移到呢,j左移一位后补0或者1。我们可以提前枚举转移的状态,构造一个状态转移图v[j][k]。

那么,if(v[j][k])f[i][j]=(f[i][j]+f[i-1][k])%p;因此我们要n次计算由v[][]主导的转移,类似与跑n次floyed。因此可以用快速幂优化。
而且我们建立v[][]后,实际就是状态之间的转移有向图,我们用0代表不能转移,用1代表可以转移。也就形成了一个01可达矩阵。
在图论里面,这个矩阵的n次幂的意义就是经过n步后可达的方案数,可以说是状压dp,也可以说是图论的题目。
参考代码:

#include<bits/stdc++.h>
#define Ll long long
using namespace std;
struct jv{
    Ll a[64][64];
    jv(){memset(a,0,sizeof a);}
}v,a;
bool ok[64];
int bb[10],b[10];
Ll n,m,k,w,ans,mo=1e9+7;
void cunt(int x){//统计是否有小于k个c 
	int y=x,s=0;
	while(y)s+=y%2,y/=2;
	if(s<=k)ok[x]=1;
//	cout<<x<<" ok"<<ok[x]<<" ; ";	
}
void workv(){
	int x;
	for(int i=0;i<=w;i++)cunt(i);
	for(int i=0;i<=w;i++){
		if(ok[i]<=k){
			int j=i*2%(w+1);
			if(ok[j])v.a[i][j]=1;
			j++; j%=(w+1);
			if(ok[j])v.a[i][j]=1;
		}
	} 	
} 
jv cheng(jv a,jv b){
    jv c;
    for(int i=0;i<=w;i++)
        for(int j=0;j<=w;j++)
            for(int k=0;k<=w;k++)
                c.a[i][j]=(c.a[i][j]+a.a[i][k]*b.a[k][j])%mo;
    return c;        
}
jv ksm(jv x,Ll y){
    jv ans=x;
    for(y--;y;y>>=1,x=cheng(x,x))
        if(y&1)ans=cheng(ans,x);
    return ans;
}
int main()
{
    scanf("%lld%lld%lld",&n,&m,&k);
    w=(1<<m)-1;
   // dfs(1);
   workv();
    a=ksm(v,n);
    for(int i=0;i<=w;i++)if(ok[i])ans=(ans+a.a[i][i])%mo;
    printf("%lld",ans);
}

不写矩阵幂可以得70分。
 

#include<bits/stdc++.h>
#define Ll long long
using namespace std;
int v[65][65],ok[65];//ok存储当前状态是否可行,v存储当前状态是否可以转移。 
Ll f[100010][165];
Ll n,m,k,w,ans,mo=1e9+7;
void cunt(int x){//统计是否有小于k个c 
	int y=x;
	while(y)ok[x]+=y%2,y/=2;
//	cout<<x<<" ok"<<ok[x]<<" ; ";	
}
void workv(){
	int x;
	for(int i=0;i<w;i++)cunt(i);
	for(int i=0;i<w;i++){
		if(ok[i]<=k){
			int j=i*2%w;
			if(ok[j]<=k)v[i][j]=1;
			j++; j%=w;
			if(ok[j]<=k)v[i][j]=1;
		}
	} 	
} 

void work(int x){
    memset(f,0,sizeof f);
    f[m][x]=1;
    for(int i=m+1;i<=n+m;i++)
        for(int j=0;j<w;j++)
            for(int k=0;k<w;k++)
                if(v[j][k])f[i][j]=(f[i][j]+f[i-1][k])%mo;//进行n次v[j][k]yuan 
    ans=(ans+f[n+m][x])%mo;
}
int main()
{  
    scanf("%lld%lld%lld",&n,&m,&k);
    w=(1<<m);
   
   workv();
    for(int i=0;i<w;i++)if(ok[i]<=k)work(i);
    printf("%lld",ans);
}

 

行政区划代码,行政区划名称,行政区划全称,行政区划级别,省/直辖市代码,省/直辖市名称,市级代码,市级名称,区级代码,区级名称,镇/街道代码,镇/街道名称,村/居委会代码,村/居委会名称,城乡划分代码 1.1E+11,北京市,北京市,1,110000000000 ,北京市,,,,,,,,, 1.101E+11,市辖区,北京市市辖区,2,110000000000 ,北京市,110100000000 ,市辖区,,,,,,, 1.10101E+11,东城区,北京市市辖区东城区,3,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,,,,, 1.10101E+11,东华门街道,北京市市辖区东城区东华门街道,4,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101001000 ,东华门街道,,, 1.10101E+11,多福巷社区居委会,北京市市辖区东城区东华门街道多福巷社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101001000 ,东华门街道,110101001001 ,多福巷社区居委会,111 1.10101E+11,银闸社区居委会,北京市市辖区东城区东华门街道银闸社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101001000 ,东华门街道,110101001002 ,银闸社区居委会,111 1.10101E+11,东厂社区居委会,北京市市辖区东城区东华门街道东厂社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101001000 ,东华门街道,110101001005 ,东厂社区居委会,111 1.10101E+11,智德社区居委会,北京市市辖区东城区东华门街道智德社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101001000 ,东华门街道,110101001006 ,智德社区居委会,111 1.10101E+11,南池子社区居委会,北京市市辖区东城区东华门街道南池子社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101001000 ,东华门街道,110101001007 ,南池子社区居委会,111 1.10101E+11,灯市口社区居委会,北京市市辖区东城区东华门街道灯市口社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101001000 ,东华门街道,110101001009 ,灯市口社区居委会,111 1.10101E+11,正义路社区居委会,北京市市辖区东城区东华门街道正义路社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101001000 ,东华门街道,110101001010 ,正义路社区居委会,111 1.10101E+11,台基厂社区居委会,北京市市辖区东城区东华门街道台基厂社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101001000 ,东华门街道,110101001013 ,台基厂社区居委会,111 1.10101E+11,韶九社区居委会,北京市市辖区东城区东华门街道韶九社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101001000 ,东华门街道,110101001014 ,韶九社区居委会,111 1.10101E+11,王府井社区居委会,北京市市辖区东城区东华门街道王府井社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101001000 ,东华门街道,110101001015 ,王府井社区居委会,111 1.10101E+11,景山街道,北京市市辖区东城区景山街道,4,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101002000 ,景山街道,,, 1.10101E+11,隆福寺社区居委会,北京市市辖区东城区景山街道隆福寺社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101002000 ,景山街道,110101002001 ,隆福寺社区居委会,111 1.10101E+11,吉祥社区居委会,北京市市辖区东城区景山街道吉祥社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101002000 ,景山街道,110101002002 ,吉祥社区居委会,111 1.10101E+11,黄化门社区居委会,北京市市辖区东城区景山街道黄化门社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101002000 ,景山街道,110101002003 ,黄化门社区居委会,111 1.10101E+11,钟鼓社区居委会,北京市市辖区东城区景山街道钟鼓社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101002000 ,景山街道,110101002004 ,钟鼓社区居委会,111 1.10101E+11,魏家社区居委会,北京市市辖区东城区景山街道魏家社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101002000 ,景山街道,110101002005 ,魏家社区居委会,111 1.10101E+11,汪芝麻社区居委会,北京市市辖区东城区景山街道汪芝麻社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101002000 ,景山街道,110101002006 ,汪芝麻社区居委会,111 1.10101E+11,景山东街社区居委会,北京市市辖区东城区景山街道景山东街社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101002000 ,景山街道,110101002008 ,景山东街社区居委会,111 1.10101E+11,皇城根北街社区居委会,北京市市辖区东城区景山街道皇城根北街社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101002000 ,景山街道,110101002009 ,皇城根北街社区居委会,111 1.10101E+11,交道口街道,北京市市辖区东城区交道口街道,4,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101003000 ,交道口街道,,, 1.10101E+11,交东社区居委会,北京市市辖区东城区交道口街道交东社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101003000 ,交道口街道,110101003001 ,交东社区居委会,111 1.10101E+11,福祥社区居委会,北京市市辖区东城区交道口街道福祥社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101003000 ,交道口街道,110101003002 ,福祥社区居委会,111 1.10101E+11,大兴社区居委会,北京市市辖区东城区交道口街道大兴社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101003000 ,交道口街道,110101003003 ,大兴社区居委会,111 1.10101E+11,府学社区居委会,北京市市辖区东城区交道口街道府学社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101003000 ,交道口街道,110101003005 ,府学社区居委会,111 1.10101E+11,鼓楼苑社区居委会,北京市市辖区东城区交道口街道鼓楼苑社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101003000 ,交道口街道,110101003007 ,鼓楼苑社区居委会,111 1.10101E+11,菊儿社区居委会,北京市市辖区东城区交道口街道菊儿社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101003000 ,交道口街道,110101003008 ,菊儿社区居委会,111 1.10101E+11,南锣鼓巷社区居委会,北京市市辖区东城区交道口街道南锣鼓巷社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101003000 ,交道口街道,110101003009 ,南锣鼓巷社区居委会,111 1.10101E+11,安定门街道,北京市市辖区东城区安定门街道,4,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101004000 ,安定门街道,,, 1.10101E+11,交北头条社区居委会,北京市市辖区东城区安定门街道交北头条社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101004000 ,安定门街道,110101004001 ,交北头条社区居委会,111 1.10101E+11,北锣鼓巷社区居委会,北京市市辖区东城区安定门街道北锣鼓巷社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101004000 ,安定门街道,110101004002 ,北锣鼓巷社区居委会,111 1.10101E+11,国子监社区居委会,北京市市辖区东城区安定门街道国子监社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101004000 ,安定门街道,110101004003 ,国子监社区居委会,111 1.10101E+11,钟楼湾社区居委会,北京市市辖区东城区安定门街道钟楼湾社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101004000 ,安定门街道,110101004004 ,钟楼湾社区居委会,111 1.10101E+11,宝钞南社区居委会,北京市市辖区东城区安定门街道宝钞南社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101004000 ,安定门街道,110101004005 ,宝钞南社区居委会,111 1.10101E+11,五道营社区居委会,北京市市辖区东城区安定门街道五道营社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101004000 ,安定门街道,110101004006 ,五道营社区居委会,111 1.10101E+11,分司厅社区居委会,北京市市辖区东城区安定门街道分司厅社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101004000 ,安定门街道,110101004009 ,分司厅社区居委会,111 1.10101E+11,国旺社区居委会,北京市市辖区东城区安定门街道国旺社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101004000 ,安定门街道,110101004011 ,国旺社区居委会,111 1.10101E+11,花园社区居委会,北京市市辖区东城区安定门街道花园社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101004000 ,安定门街道,110101004012 ,花园社区居委会,111 1.10101E+11,北新桥街道,北京市市辖区东城区北新桥街道,4,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101005000 ,北新桥街道,,, 1.10101E+11,海运仓社区居委会,北京市市辖区东城区北新桥街道海运仓社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101005000 ,北新桥街道,110101005001 ,海运仓社区居委会,111 1.10101E+11,北新仓社区居委会,北京市市辖区东城区北新桥街道北新仓社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101005000 ,北新桥街道,110101005002 ,北新仓社区居委会,111 1.10101E+11,门楼社区居委会,北京市市辖区东城区北新桥街道门楼社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101005000 ,北新桥街道,110101005004 ,门楼社区居委会,111 1.10101E+11,民安社区居委会,北京市市辖区东城区北新桥街道民安社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101005000 ,北新桥街道,110101005006 ,民安社区居委会,111 1.10101E+11,九道湾社区居委会,北京市市辖区东城区北新桥街道九道湾社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101005000 ,北新桥街道,110101005008 ,九道湾社区居委会,111 1.10101E+11,北官厅社区居委会,北京市市辖区东城区北新桥街道北官厅社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101005000 ,北新桥街道,110101005009 ,北官厅社区居委会,111 1.10101E+11,青龙社区居委会,北京市市辖区东城区北新桥街道青龙社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101005000 ,北新桥街道,110101005010 ,青龙社区居委会,111 1.10101E+11,小菊社区居委会,北京市市辖区东城区北新桥街道小菊社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101005000 ,北新桥街道,110101005011 ,小菊社区居委会,111 1.10101E+11,草园社区居委会,北京市市辖区东城区北新桥街道草园社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101005000 ,北新桥街道,110101005014 ,草园社区居委会,111 1.10101E+11,前永康社区居委会,北京市市辖区东城区北新桥街道前永康社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101005000 ,北新桥街道,110101005016 ,前永康社区居委会,111 1.10101E+11,东四街道,北京市市辖区东城区东四街道,4,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101006000 ,东四街道,,, 1.10101E+11,南门仓社区居委会,北京市市辖区东城区东四街道南门仓社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101006000 ,东四街道,110101006001 ,南门仓社区居委会,111 1.10101E+11,二条社区居委会,北京市市辖区东城区东四街道二条社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101006000 ,东四街道,110101006003 ,二条社区居委会,111 1.10101E+11,六条社区居委会,北京市市辖区东城区东四街道六条社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101006000 ,东四街道,110101006006 ,六条社区居委会,111 1.10101E+11,豆瓣社区居委会,北京市市辖区东城区东四街道豆瓣社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101006000 ,东四街道,110101006007 ,豆瓣社区居委会,111 1.10101E+11,八条社区居委会,北京市市辖区东城区东四街道八条社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101006000 ,东四街道,110101006008 ,八条社区居委会,111 1.10101E+11,总院社区居委会,北京市市辖区东城区东四街道总院社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101006000 ,东四街道,110101006009 ,总院社区居委会,111 1.10101E+11,朝阳门街道,北京市市辖区东城区朝阳门街道,4,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101007000 ,朝阳门街道,,, 1.10101E+11,史家社区居委会,北京市市辖区东城区朝阳门街道史家社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101007000 ,朝阳门街道,110101007001 ,史家社区居委会,111 1.10101E+11,内务社区居委会,北京市市辖区东城区朝阳门街道内务社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101007000 ,朝阳门街道,110101007002 ,内务社区居委会,111 1.10101E+11,演乐社区居委会,北京市市辖区东城区朝阳门街道演乐社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101007000 ,朝阳门街道,110101007003 ,演乐社区居委会,111 1.10101E+11,礼士社区居委会,北京市市辖区东城区朝阳门街道礼士社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101007000 ,朝阳门街道,110101007005 ,礼士社区居委会,111 1.10101E+11,朝内头条社区居委会,北京市市辖区东城区朝阳门街道朝内头条社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101007000 ,朝阳门街道,110101007006 ,朝内头条社区居委会,111 1.10101E+11,朝西社区居委会,北京市市辖区东城区朝阳门街道朝西社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101007000 ,朝阳门街道,110101007007 ,朝西社区居委会,111 1.10101E+11,竹杆社区居委会,北京市市辖区东城区朝阳门街道竹杆社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101007000 ,朝阳门街道,110101007009 ,竹杆社区居委会,111 1.10101E+11,大方家社区居委会,北京市市辖区东城区朝阳门街道大方家社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101007000 ,朝阳门街道,110101007011 ,大方家社区居委会,111 1.10101E+11,新鲜社区居委会,北京市市辖区东城区朝阳门街道新鲜社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101007000 ,朝阳门街道,110101007013 ,新鲜社区居委会,111 1.10101E+11,建国门街道,北京市市辖区东城区建国门街道,4,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101008000 ,建国门街道,,, 1.10101E+11,赵家楼社区居委会,北京市市辖区东城区建国门街道赵家楼社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101008000 ,建国门街道,110101008005 ,赵家楼社区居委会,111 1.10101E+11,西总布社区居委会,北京市市辖区东城区建国门街道西总布社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101008000 ,建国门街道,110101008006 ,西总布社区居委会,111 1.10101E+11,大雅宝社区居委会,北京市市辖区东城区建国门街道大雅宝社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101008000 ,建国门街道,110101008007 ,大雅宝社区居委会,111 1.10101E+11,苏州社区居委会,北京市市辖区东城区建国门街道苏州社区居委会,5,110000000000 ,北京市,110100000000 ,市辖区,110101000000 ,东城区,110101008000 ,建国门街道,110101008012 ,苏州社区居委会,111 这样的数据本来是excel表只是转成csv在转成txt就是这样了, 这样的数据如何使用 struct CXHFCODE { //行政区划代码 CString xzqhdm; // 行政区划名称 CString xzqhmc; // 行政区划全称 CString xzqhqc; // 行政区划级别 CString xzqhjb; // 省直辖市代码 CString szxsdm; // 省直辖市名称 CString szxsmc; // 市级代码 CString sjdm; // 市级名称 CString sjmc; // 区级代码 CString qjdm; // 区级名称 CString qjmc; // 镇街道代码 CString zjddm; // 镇街道名称 CString zjdmc; // 村居委会代码 CString cjwhdm; // 村居委会名称 CString cjwhmc; // 城乡划分代码 CString cxhfdm; };和std::map来管理 // 省 自治区 直辖市 // 地州市 // 县 市 // 乡 镇 // 社区、村委会这5级行政区划 进行增删改查
最新发布
07-11
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值