All X
Geometric series sum up A/b mod C = A mod (b*c)/B or divide it up A bit
Sitting in line
Pressure + topology DP
The DP (i, j) indicates that the current binary state is J, the last digit of the current state is a[i], and then is updated according to the topological order DP and is logged in the queue with a bool array.
There are other graceful postures on the web, and the topological order can be achieved by some enumeration method.
1#include <bits/stdc++.h>2typedefLong Longll;3 using namespacestd;4 inta[ -], p[ -], N;//whether the number of input i is fixed5 intvis[ -], now[ -];//whether the number of outputs is determined6ll dp[ -][1<< -];7 BOOLisin[ -][1<< -];8 structp{9 intx, y;Ten P () {} OnePintXinty): x (x), Y (y) {} A }; - - intMain () { the intT, CA =1; -Cin>>T; - while(t--){ -memset (Vis,0,sizeof(Vis)); +Cin>>N; - for(inti =0; I < n; i++){ +Cin>>a[i]>>P[i]; A if(P[i]! =-1){ atvis[P[i]] =true; -now[P[i]] =i; - } - } - -Memset (DP,0x80,sizeof(DP)); inmemset (Isin,0,sizeof(Isin)); -Queue<p>Q; to if(vis[0]){ +dp[now[0] ][1<<now[0] ] =0; -isin[now[0] ][1<<now[0] ] =true; theQ.push (P (now[0],1<<now[0]) ); * } $ Else{Panax Notoginseng for(inti =0; I < n; i++) - if(P[i] = =-1){ thedp[i][1<<i] =0; +isin[i][1<<i] =true; AQ.push (P (i,1<<i)); the } + } - $ for(inti =1; I < n; i++) {//POS $ intSize =q.size (); - for(intj =0; J < size; J + +){ -P pp =Q.front (); the Q.pop (); - if(Vis[i]) {Wuyidp[Now[i] [pp.y| (1<<now[i])] = max (dp[now[i] [pp.y| (1<<now[i]), dp[pp.x][pp.y]+a[pp.x]*a[Now[i]]); the if(isin[now[i] [pp.y| (1<<now[i])] = =false) -Q.push (P (Now[i], pp.y| (1<<now[i])), isin[now[i] [pp.y| (1<<now[i]) =true; Wu } - Else{ About for(intK =0; K < n; k++){ $ if((pp.y& (1<<k)) = =0&&P[K] = =-1){ -Dp[k][pp.y| (1<<k)] = max (dp[k][pp.y| (1<<K)], dp[pp.x][pp.y]+a[pp.x]*a[k]); - if(isin[K] [pp.y| (1<<k)] = =false) -Q.push (P (k, pp.y| (1<<k)), isin[K] [pp.y| (1<<K)] =true; A } + } the } - } $ } the thell ans =-1e17; the for(inti =0; I < n; i++) theans = max (ans, dp[i][(1<<n)-1 ]); -printf"Case #%d:\n", ca++); incout<<ans<<Endl; the } the return 0; About}
View CodeBD String
After disconnecting from a point, the latter part is folded to the front, and the second half of the previous part is exactly the same as a whole.
1#include <bits/stdc++.h>2typedefLong Longll;3 using namespacestd;4 5 ll Getsum (ll x) {6 if(x <=2)7 returnx;8 9ll fir =1;Ten while(fir*2<=x) OneFir <<=1; A - return1ll+x-fir + getsum (fir-(X-fir)-1 ); - } the intMain () { - intT, CA =1; - ll L, R; -Cin>>T; + while(t--){ -Cin>>l>>R; +ll ans = getsum (r)-getsum (l1); Acout<<ans<<Endl; at } - return 0; -}
View CodeGym Class
The SB topology can be sorted.
Baidu Star Astar ROUND2A