Educational Codeforces Round 70 Editorial B(dp+暴力)

四维dp+暴力

这个题看到后一点点想法都没有。

题解的方法是:暴力处理出用a和b处理i—>j的最小步数。那么之后O(n)模拟就好了。

写dfs的时候有一个小(大)坑,u—>u的步数不是0,所以写bfs的时候一定要注意。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 const int maxn=100+5;
 5 const int inf=9999999;
 6 
 7 
 8 int Time[11][11][11][11];
 9 int Sime[11][11][11][11];struct node{
10     int x;
11     int step;
12     node(int _x,int _step) {
13         x=_x;
14         step=_step;
15     }
16     node(){
17     }
18 };
19 
20 int bfs(int c1,int c2,int u,int v)
21 {
22     int vis[11];
23     for(int i=0;i<10;i++) vis[i]=0;
24     queue <node> Q;Q.push(node(u,0));
25     while(!Q.empty()){
26         node now=Q.front();Q.pop();
27         if(now.x==v&&vis[now.x]) return now.step;
28         if(!vis[(now.x+c1)%10]) {
29             Q.push(node((now.x+c1)%10,now.step+1)); vis[(now.x+c1)%10]=1;}
30         if(!vis[(now.x+c2)%10]){
31             Q.push(node((now.x+c2)%10,now.step+1));    vis[(now.x+c2)%10]=1;}
32     }
33     return -1;
34 }
35 
36 
37 
38 void solve(){
39     string str;cin>>str;
40     for(int i=0;i<10;i++)
41         for(int j=0;j<10;j++)
42             for(int a=0;a<10;a++)
43                 for(int b=0;b<10;b++)
44                 {
45                     Time[i][j][a][b]=bfs(i,j,a,b);
46                 }
47     
48                 
49 
50     //cout <<"sig";
51     for(int i=0;i<10;i++)
52     {        
53         for(int j=0;j<10;j++){
54             ll sum=0;int flag=1;
55             for(int a=1;a<str.size();a++){
56                 if(Time[i][j][str[a-1]-'0'][str[a]-'0']==-1) 
57                 {
58                     cout <<-1<<" ";
59                     flag=0;break;
60                 }else
61                 {
62                     sum+=Time[i][j][str[a-1]-'0'][str[a]-'0'];
63                 }
64             }
65             if(flag) cout <<sum-str.size()+1<<" ";
66         }
67         cout <<endl; 
68     }
69 
70 
71 }
72 int main(){
73     solve();
74     return 0;
75 }

 

posted @ 2019-08-28 17:21  Chuhanjing  阅读(130)  评论(0编辑  收藏  举报