摘要:
数位DP!dp[i][j][k]:第i位数,状态为j,长度为k代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 using namespace std;10 ll dp[20][1025][11];11 int bit[20],k;12 int Getlen (int sta)//求出最长上升子序列的长度13 {14 int ret = 0;15 while (sta)16 {17 ret +=... 阅读全文
摘要:
思路:分析知道sum(1,i) (1 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 using namespace std;10 int a[200002],p[200002],mp[200002];11 int main()12 {13 int n,cnt;14 while(scanf("%d",&n)&&n){15 for(int i=1;ipre){29 ... 阅读全文
摘要:
思路:求最长回文子串的长度!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 int s[3001],dp[3001][3001]; 9 int dfs(int p,int q)10 {11 if(dp[p][q]!=-1) return dp[p][q];12 if(p>q) return dp[p][q]=0;13 dp[p][q]=max(dfs(p+1,q),dfs(p,q-1));14 if(s... 阅读全文
摘要:
一个简单的搜索题,唉……当时脑子抽了,没做出来啊……代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 struct node10 {11 int x,y;12 }p[30];13 int ans,now,n;14 bool f[30];15 void dfs(int m)16 {17 if(m>=n){18 if(now>ans) ans=now;19 ret... 阅读全文