hdu 4055 Number String【2011 ACM Asia Dalian Regional Problem E】
2011-10-15 11:20
387 查看
hdu 4055 Number String
另类作法:dp[i][j]表示第i位前面没有用过的数字比他小的有j个,对于某个i,j的一种状态第i+1位的选择都能唯一的到达另外一种状态,最后输出dp[len][0]即可,另外还有合法串的变换进行DP . 另外n^3需要化为n^2 .
View Code
另类作法:dp[i][j]表示第i位前面没有用过的数字比他小的有j个,对于某个i,j的一种状态第i+1位的选择都能唯一的到达另外一种状态,最后输出dp[len][0]即可,另外还有合法串的变换进行DP . 另外n^3需要化为n^2 .
View Code
///自己的做法 inline void gao() { int i,j; int len=strlen(s); int idx; n=len+1; memset(dp,0,sizeof(dp)); memset(sum,0,sizeof(sum)); int temp=0; for(i=0;i<=n-1;i++) { dp[0][i]=1; temp+=1; sum[0][i]=temp; } for(i=1,idx=0;i<=len;idx++,i++) { int temp=0; for(j=0;j<=n-1;j++) { //if(i+j>=n) break; ///这里不能搞掉 因为这里还有个sum[j]要处理 要搞出sum[n-1]~~ if(s[idx]=='D') { dp[i][j]=sum[i-1][n-1]-sum[i-1][j]; if(dp[i][j]<0) dp[i][j]+=mood; } else if(s[idx]=='I') { if(j<=n-i-1) dp[i][j]=sum[i-1][j]; } else { dp[i][j]=sum[i-1][n-1]-sum[i-1][j]; if(dp[i][j]<0) dp[i][j]+=mood; if(j<=n-i-1) dp[i][j]+=sum[i-1][j]; if(dp[i][j]>=mood) dp[i][j]-=mood; } temp+=dp[i][j]; if(temp>=mood) temp-=mood; sum[i][j]=temp; } } printf("%d\n",dp[len][0]); } ///网上流传作法: 这题最需要理解的一个性质是当加入一个新的数n时,如果想把n放在前n-1个位置的任何一个, 并且不影响升降性质,只需要在之前方案中把当前在n位置的数x(n放前面必然有一个x要放在n的位置) 所有的大于等于x的数都加1即可。比如之前方案是(1,5,3,2,4),现在把3放在第6位。 则对应方案是(1,6,4,2,5,3)。(1,2不变,其他加一)
相关文章推荐
- hdu 4005 Number String 数列上的DP 【From:2011 Asia Dalian Regional Contest】&& 【SGU489】 Extremal Permutations
- hdu 4055 2011 Asia Dalian Regional Contest
- Hdu 4057 Rescue the Rabbit (AC自动机+状态压缩dp) - 2011 ACM-ICPC Dalian Regional Contest Problem G
- Zoj 3543 Number String (dp) - 2011 ACM-ICPC Dalian Regional Contest Problem E
- hdu 4091 Zombie’s Treasure Chest【2011 ACM Asia Shanghai Regional Problem A】
- HDU 4115 Eliminate the Conflict【2011 ACM Asia Chengdu Regional Problem E】
- HDU 4127 Flood-it!【2011 ACM Asia Fuzhou Regional Problem G】
- Zoj 3541 The Last Puzzle (dp) - 2011 ACM-ICPC Dalian Regional Contest Problem C
- HDU 5443 The Water Problem 2015 ACM/ICPC Asia Regional Changchun Online
- Hdu 4089 Activation (概率dp) - 2011 ACM-ICPC Beijing Regional Contest Problem I
- HDU 5877 2016 ACM/ICPC Asia Regional Dalian Online 1010 Weak Pair
- 2016 ACM/ICPC Asia Regional Dalian Online 1006 football game 1007 hdu 5873 hdu 5874
- HDU 5876 Sparse Graph (补图BFS) 2016 ACM/ICPC Asia Regional Dalian Online
- HDU 5876 2016 ACM/ICPC Asia Regional Dalian Online BFS+set
- HDU 5875 Function 2016 ACM/ICPC Asia Regional Dalian Online
- HDU - 4054 Hexadecimal View (2011 Asia Dalian Regional Contest)
- HDU 5876 Sparse Graph2016 ACM/ICPC Asia Regional Dalian Online 1009
- ACM-ICPC Asia Regional Contest HDU 5974 A Simple Math Problem(数论)
- HDU 5877 Weak Pair(2016 ACM/ICPC Asia Regional Dalian Online)
- HDU 5874 Friends and Enemies(二分图思想)——2016 ACM/ICPC Asia Regional Dalian Online