Codeforces 761C DaSha and Password 暴力
2017-02-01 12:09
323 查看
点击打开链接
题意:给出n行string 长度都为m (n,m<=50),一个游标指向n行string的第一个字符, password长度为n 由n行string游标所指的字符组成,Password至少包含一个数字,字符和字母,移动游标消耗1 求最小消耗.
消耗最小,只需要有三行满足条件即可,多的没意义,,暴力O(n^3)枚举这三行,预处理每行变化的最小代价即可.
题意:给出n行string 长度都为m (n,m<=50),一个游标指向n行string的第一个字符, password长度为n 由n行string游标所指的字符组成,Password至少包含一个数字,字符和字母,移动游标消耗1 求最小消耗.
消耗最小,只需要有三行满足条件即可,多的没意义,,暴力O(n^3)枚举这三行,预处理每行变化的最小代价即可.
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e3+20; const int inf=1e5; char s ; int d [3];//d[i][k] 第i行变为数字||字符||'*'#''&'的最小代价 int main() { int n,m; while(cin>>n>>m) { for(int i=1;i<=n;i++) { scanf("%s",s[i]+1); d[i][0]=d[i][1]=d[i][2]=inf; for(int j=1;j<=m;j++) { if(s[i][j]>='0'&&s[i][j]<='9') d[i][0]=min(d[i][0],min(j-1,m+1-j)); else if(s[i][j]>='a'&&s[i][j]<='z') d[i][1]=min(d[i][1],min(j-1,m+1-j)); else d[i][2]=min(d[i][2],min(j-1,m+1-j)); } } //因为肯定有三行分别指向数字,字母和字符 n<=50暴力枚举这三行即可 int ans=inf; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(i==j) continue; for(int k=1;k<=n;k++) { if(k==i||k==j) continue; int t=d[i][0]+d[j][1]+d[k][2]; ans=min(ans,t); } } } cout<<ans<<endl; } return 0; }
相关文章推荐
- Codeforces 57B Martian Architecture 暴力||线段树
- Codeforces 645A Amity Assessment 【暴力】
- codeforces 348 C. Subset Sums (暴力+技巧)
- Codeforces 626D Jerry's Protest(暴力枚举+概率)
- Codeforces 354C Vasya and Beautiful Arrays[dp+暴力]
- Codeforces 110C Lucky Sum Of Digits 暴力
- CodeForces - 863C 1-2-3 暴力规律-- STL应用
- CodeForces 13A【暴力】
- CodeForces - 63C Bulls and Cows(暴力求解)
- CodeForces 832B Round #425 Div2 B Petya and Exam:双指针暴力模拟
- Codeforces 479D. Long Jumps 暴力
- CodeForces-485D Maximum Value(暴力)
- CodeForces 496D Tennis Game (暴力枚举)
- codeforces 303C. Minimum Modular(数论+暴力+剪枝+贪心)
- Codeforces 490F. Treeland Tour 暴力+LIS
- codeforces 672D. Robin Hood(暴力)
- CodeForces - 651B 一个简单的思考题,暴力也能过
- Pizza Separation CodeForces - 895A 暴力解决
- codeforces 837C(暴力)
- codeforces 675B B. Restoring Painting(暴力枚举)