首页 > 编程知识 正文

openjudge noi 首页,noi题库讲解

时间:2023-05-06 01:09:21 阅读:178282 作者:4904

魔法口袋比算法更考数学。 【考虑到不能自由取球的情况,以a(x,y )为第x次,取出颜色为y的球,p(a ) a ) 1,Y1 ),a ) 2,Y2 )…}=p ) a(1,Y1 ),a ) 因此,这种交换是可能的。 在此,回到可以自由拿球的情况。 举个例子,p{a(1,k ),a ) 2,Y1 ),a ) 3,Y2 ) },k的】

【这个问题思维由一般扩展到特殊,是“取代数或取值”。 从dp来考虑,也能看到较强的后效性。 于是想消除后效性。 自由拿球的后效性很弱,如果想消除自由拿球的话,就知道后移是合法的。 】

# include cstdio # includecstdlib # include cstring # includecmathlonglonga [ 100005 ]、b[100005]、ans[200005]、an S1 [ void origin () ) for ) intI=2,j,k,k1; i=max; I ) if (! check [ I ] (ans [ I ]=an S1 [ I ]-ans2[ I ]; for(j=II; j=max; j=I({check[j]=1; if ()0==ans1[j] )|)0==ans2[j] ) for ) k=0,k1=j; k1%i==0; k,k1/=i; ans[i]=ans1[j]*k-ans2[j]*k; }}}voidcheng(longlong*a,long long k ) { int i,l=1; for(I=1; i=a[0]; I ) a[i]*=k; for (; (a[l]=maxl )|(L=a[0] ); l ) a[l 1]=a[l]/maxl,a[l]=a[l]%maxl; for (; a[l]==0; L----; a[0]=l; }voiddoit1(intk ) ) for ) intI=1; i=-ans[k]; I )城(b,k ); }voiddoit2(intk ) ) for ) intI=1; i=ans[k]; I )城(a,k ); }void init () ) { int i; scanf(%d%d%d(n ),t,n,d ); for(I=1; i=t; I ) scanf('%d ',a[i] ),s=a[i]; for(I=1; i=n; I ) scanf('%d%d(n ),x ) I ),y ) I ); memset (ans1,0,sizeof ) an S1 )、memset ) ans 2,0,sizeof ) ans2 ); for(I=0; i=n-1; I ) ans2(SD*I ); for(I=1; i=n; I ) anS1(a(y ) I )、a ) y ) I )=d; origin (; memset(a,0,sizeof ) a )、memset ) b、0,sizeof ) b ); a[a[0]=1]=1,b[b[0]=1]=1; for(I=2; i=max; I ) if(ans[I]0) doit1(i ) I; elseif(ans[I]0) doit2(i ) I; printf('%d”,a[a[0]] ); for(I=a[0]-1; i=1; I--; printf(d )、a ) I ); printf () /; printf('%d”,b[b[0]] ); for(I=b[0]-1; i=1; I--; printf(d )、b ) I ); (}int main ) ) Freopen ) ) bag.in,) r,stdin ); freopen(bag.out )、(w )、stdout; init (; 返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。