首页 > 代码库 > {CF812}
{CF812}
链接:CF812
好久之前做的,掉了100多-_-||
太忙了今天才来补题。。。。。。
A
B
1 #include <cstdio> 2 #include <cstring> 3 #include <bits/stdc++.h> 4 using namespace std; 5 6 int dp[20][2]; 7 int li[20],ri[20]; 8 int ex; 9 int n,m; 10 11 int main() 12 { 13 scanf("%d%d",&n,&m); 14 m+=2; 15 int up=-1; 16 memset(li,0x3f3f,sizeof(li)); 17 for(int i=n;i>=1;i--) 18 { 19 ex=0; 20 for(int j=0;j<m;j++) 21 { 22 int x; 23 scanf("%1d",&x); 24 if(x==1) 25 { 26 li[i]=min(li[i],j); 27 ri[i]=max(ri[i],j); 28 ex++; 29 } 30 } 31 if(ex) up=max(up,i); 32 else{ 33 li[i]=m-1; 34 ri[i]=0; 35 } 36 } 37 if(up==-1) 38 { 39 puts("0"); 40 return 0; 41 } 42 if(up==1) 43 { 44 printf("%d\n",ri[1]); 45 return 0; 46 } 47 dp[1][0]=ri[1]*2; 48 dp[1][1]=m-1; 49 for(int i=2;i<up;i++) 50 { 51 dp[i][0]=1+min(dp[i-1][0]+ri[i]*2,dp[i-1][1]+m-1); 52 dp[i][1]=1+min(dp[i-1][0]+m-1,dp[i-1][1]+(m-1-li[i])*2); 53 } 54 int ans=min(dp[up-1][0]+ri[up],dp[up-1][1]+m-1-li[up])+1; 55 printf("%d\n",ans); 56 57 }
C
{CF812}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。