【枚举】Codeforces Round #394 (Div. 2) C. Dasha and Password
纪念死去的智商(虽然本来就没有吧……)
三重循环枚举将哪三个fix string作为数字、字母和符号位。记下最小的值就行了。
预处理之后这个做法应该是O(n^3)的,当然完全足够。不预处理是O(n^3*m)的,也够。
我写了一个O(n^2+n*m)的分类讨论贪心做法……蜜汁错,容我查一下。
现在查出个错,交了一下在in queue……容我明天看看对不对。
如果对的话,这题的加强版今年留作趣味赛题吧,嘿嘿嘿……
UPDATE:果然过了……我就是傻逼
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m;
char a[55][55];
int dis[55][4],type[55];
int main()
{
// freopen("c.in","r",stdin);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i)
scanf("%s",a[i]+1);
for(int i=1;i<=n;++i)
{
if(a[i][1]>='a' && a[i][1]<='z')
type[i]=1;
else if(a[i][1]>='0' && a[i][1]<='9')
type[i]=2;
else
type[i]=3;
dis[i][1]=dis[i][2]=dis[i][3]=10000000;
for(int j=2;j<=m;++j)
if(a[i][j]>='a' && a[i][j]<='z')
{
if(type[i]!=1)
dis[i][1]=min(dis[i][1],min(j-1,m-j+1));
}
else if(a[i][j]>='0' && a[i][j]<='9')
{
if(type[i]!=2)
dis[i][2]=min(dis[i][2],min(j-1,m-j+1));
}
else if(type[i]!=3)
dis[i][3]=min(dis[i][3],min(j-1,m-j+1));
}
bool flag=1;
for(int i=1;i<=n;++i)
if(type[i]!=1)
{
flag=0;
break;
}
if(flag)
{
int ans=10000000;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if(i!=j)
ans=min(ans,dis[i][2]+dis[j][3]);
printf("%d\n",ans);
return 0;
} flag=1;
for(int i=1;i<=n;++i)
if(type[i]!=2)
{
flag=0;
break;
}
if(flag)
{
int ans=10000000;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if(i!=j)
ans=min(ans,dis[i][1]+dis[j][3]);
printf("%d\n",ans);
return 0;
} flag=1;
for(int i=1;i<=n;++i)
if(type[i]!=3)
{
flag=0;
break;
}
if(flag)
{
int ans=10000000;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if(i!=j)
ans=min(ans,dis[i][1]+dis[j][2]);
printf("%d\n",ans);
return 0;
} flag=1;
for(int i=1;i<=n;++i)
if(type[i]==1)
{
flag=0;
break;
}
if(flag)
{
int ans=10000000;
int cnt[4]={0};
for(int i=1;i<=n;++i)
++cnt[type[i]];
if(cnt[2]==1)
{
int id;
for(int i=1;i<=n;++i)
if(type[i]==2)
{
id=i;
break;
}
for(int i=1;i<=n;++i)
if(type[i]==3)
ans=min(ans,dis[i][1]);
int tmp=10000000;
for(int i=1;i<=n;++i)
if(type[i]==3)
tmp=min(tmp,dis[i][2]);
ans=min(ans,tmp+dis[id][1]);
}
else if(cnt[3]==1)
{
int id;
for(int i=1;i<=n;++i)
if(type[i]==3)
{
id=i;
break;
}
for(int i=1;i<=n;++i)
if(type[i]==2)
ans=min(ans,dis[i][1]);
int tmp=10000000;
for(int i=1;i<=n;++i)
if(type[i]==2)
tmp=min(tmp,dis[i][3]);
ans=min(ans,tmp+dis[id][1]);
}
else
{
for(int i=1;i<=n;++i)
ans=min(ans,dis[i][1]);
}
printf("%d\n",ans);
return 0;
} flag=1;
for(int i=1;i<=n;++i)
if(type[i]==2)
{
flag=0;
break;
}
if(flag)
{
int ans=10000000;
int cnt[4]={0};
for(int i=1;i<=n;++i)
++cnt[type[i]];
if(cnt[1]==1)
{
int id;
for(int i=1;i<=n;++i)
if(type[i]==1)
{
id=i;
break;
}
for(int i=1;i<=n;++i)
if(type[i]==3)
ans=min(ans,dis[i][2]);
int tmp=10000000;
for(int i=1;i<=n;++i)
if(type[i]==3)
tmp=min(tmp,dis[i][1]);
ans=min(ans,tmp+dis[id][2]);
}
else if(cnt[3]==1)
{
int id;
for(int i=1;i<=n;++i)
if(type[i]==3)
{
id=i;
break;
}
for(int i=1;i<=n;++i)
if(type[i]==1)
ans=min(ans,dis[i][2]);
int tmp=10000000;
for(int i=1;i<=n;++i)
if(type[i]==1)
tmp=min(tmp,dis[i][3]);
ans=min(ans,tmp+dis[id][2]);
}
else
{
for(int i=1;i<=n;++i)
ans=min(ans,dis[i][2]);
}
printf("%d\n",ans);
return 0;
} flag=1;
for(int i=1;i<=n;++i)
if(type[i]==3)
{
flag=0;
break;
}
if(flag)
{
int ans=10000000;
int cnt[4]={0};
for(int i=1;i<=n;++i)
++cnt[type[i]];
if(cnt[1]==1)
{
int id;
for(int i=1;i<=n;++i)
if(type[i]==1)
{
id=i;
break;
}
for(int i=1;i<=n;++i)
if(type[i]==2)
ans=min(ans,dis[i][3]);
int tmp=10000000;
for(int i=1;i<=n;++i)
if(type[i]==2)
tmp=min(tmp,dis[i][1]);
ans=min(ans,tmp+dis[id][3]);
}
else if(cnt[2]==1)
{
int id;
for(int i=1;i<=n;++i)
if(type[i]==2)
{
id=i;
break;
}
for(int i=1;i<=n;++i)
if(type[i]==1)
ans=min(ans,dis[i][3]);
int tmp=10000000;
for(int i=1;i<=n;++i)
if(type[i]==1)
tmp=min(tmp,dis[i][2]);
ans=min(ans,tmp+dis[id][3]);
}
else
{
for(int i=1;i<=n;++i)
ans=min(ans,dis[i][3]);
}
printf("%d\n",ans);
return 0;
} puts("0");
return 0;
}
【枚举】Codeforces Round #394 (Div. 2) C. Dasha and Password的更多相关文章
- Codeforces Round #394 (Div. 2) C. Dasha and Password —— 枚举
题目链接:http://codeforces.com/problemset/problem/761/C C. Dasha and Password time limit per test 2 seco ...
- Codeforces Round #394 (Div. 2) C. Dasha and Password 暴力
C. Dasha and Password 题目连接: http://codeforces.com/contest/761/problem/C Description After overcoming ...
- Codeforces Round #394 (Div. 2) C. Dasha and Password
C. Dasha and Password time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- Codeforces Round #394 (Div. 2) C. Dasha and Password(简单DP)
C. Dasha and Password time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- Codeforces Round #394 (Div. 2) C.Dasha and Password(暴力)
http://codeforces.com/contest/761/problem/C 题意:给出n个串,每个串的初始光标都位于0(列)处,怎样移动光标能够在凑出密码(每个串的光标位置表示一个密码的字 ...
- Codeforces Round #394 (Div. 2) E. Dasha and Puzzle(分形)
E. Dasha and Puzzle time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- Codeforces Round #394 (Div. 2) B. Dasha and friends 暴力
B. Dasha and friends 题目连接: http://codeforces.com/contest/761/problem/B Description Running with barr ...
- Codeforces Round #394 (Div. 2) A. Dasha and Stairs 水题
A. Dasha and Stairs 题目连接: http://codeforces.com/contest/761/problem/A Description On her way to prog ...
- Codeforces Round #394 (Div. 2) E. Dasha and Puzzle 构造
E. Dasha and Puzzle 题目连接: http://codeforces.com/contest/761/problem/E Description Dasha decided to h ...
随机推荐
- boost 文件操作
void testFileSystem() { boost::filesystem::path path("/test/test1"); //初始化 boost::filesyst ...
- eclipse安装反编译插件jadclipse
下载jadClipse地址: 目的:将一些封装的jar或者sdk可以查看源代码 链接: http://pan.baidu.com/s/1kTN4TPd 提取码: 3fvd 将net.sf.jadcl ...
- region xx not deployed on any region server
ERROR: Region { meta => month_hotstatic,860010-2288000000_201405_5_exit_00000047486,1400144486405 ...
- es6+最佳入门实践(12)
12.class基础用法和继承 12.1.class基础语法 在es5中,面向对象我们通常写成这样 function Person(name,age) { this.name = name; this ...
- 组合数学--Polya 原理及典型应用
Redfield-Polya (Pólya enumeration theorem,简称PET)定理是组合数学理论中最重要的定理之一.自从 1927 年 Redfield 首次运用 group red ...
- 汕头市队赛 SRM 06 C 秀恩爱
C 秀恩爱 SRM 06 背景&&描述 KPM坐在直升机上俯瞰小渔村景象. 渔村可看作二维平面,密密麻麻地到处都是单身狗,KPM当前所在坐标为(sx,s ...
- #学习方法2打印为空,说明#延迟加载#解决方案:将nameField等设置改在viewDidLoad中设置
#学习方法#error调试#NSLog调试之无法进行数据传输,Edit无法现实之前编辑 的内容 https://www.evernote.com/shard/s227/sh/c ...
- 河南省第十届省赛 Binary to Prime
题目描述: To facilitate the analysis of a DNA sequence, a DNA sequence is represented by a binary num ...
- 标签 JLable 类
标签JLable上可以添加图像,当鼠标停留在标签上时,可以显示一段提示文字. package first; import javax.swing.*; import java.awt.*; impor ...
- jQuery获取表格隐藏域与ajax请求数据结合显示详情
0.表格样式