Codeforces Round #363 (Div. 2)
2016-07-19 22:18
225 查看
A
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<queue>
#include<vector>
#include<algorithm>
#define LL long long
#define CLEAR(xxx) memset(xxx,0,sizeof(xxx))
using namespace std;
const int maxn=200000+5,inf=1e9;
char s[maxn];
int n,ans=inf;
inline void _read(int &x){
char ch=getchar(); bool mark=false;
for(;!isdigit(ch);ch=getchar())if(ch=='-')mark=true;
for(x=0;isdigit(ch);ch=getchar())x=x*10+ch-'0';
if(mark)x=-x;
}
int main(){
int i,x,y;
_read(n);
scanf("%s",s+1);
_read(x);
for(i=2;i<=n;i++){
_read(y);
if(s[i-1]=='R'&&s[i]=='L')
ans=min(ans,(y-x)>>1);
x=y;
}
printf("%d\n", ans>=inf ?-1:ans);
return 0;
}
/*
*/
B
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<queue>
#include<vector>
#include<algorithm>
#define LL long long
#define CLEAR(xxx) memset(xxx,0,sizeof(xxx))
using namespace std;
const int maxn=1000+5,inf=1e9;
char s[maxn][maxn];
int n,m;
bool ok1,ok2;
void check(int &x){if(!x) x++;}
int main(){
//freopen("data.in","r",stdin);
//freopen("myans.out","w",stdout);
int i,j,x1,x2,y1,y2,t;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++) scanf("%s",&s[i][1]);
x1=y1=x2=y2=0; ok1=ok2=true;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++)
if(s[i][j]=='*'){x1=i;y2=j; break;}
if(x1)break;
}
if(i>n&&j>m){
printf("YES\n1 1");
return 0;
}
for(i=x1+1;i<=n&&ok1;i++)
for(j=1;j<=m;j++)
if(s[i][j]=='*'&&!y1)y1=j;
else if(s[i][j]=='*'&&y1!=j){ok1=false; break;}
for(i=1;i<=m&&ok2;i++){
if(i==y2) continue;
for(j=1;j<=n;j++)
if(s[j][i]=='*'&&!x2)x2=j;
else if(s[j][i]=='*'&&x2!=j){ok2=false; break;}
}
check(x1);check(x2);
check(y1);check(y2);
if(ok1) printf("YES\n%d %d",x1,y1);
else if(ok2)printf("YES\n%d %d",x2,y2);
else puts("NO");
return 0;
}
/*
*/
C
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<queue>
#include<vector>
#include<algorithm>
#define LL long long
#define CLEAR(xxx) memset(xxx,0,sizeof(xxx))
using namespace std;
const int maxn=100+5,inf=1e9;
int n,s[maxn],f[maxn][5];
int main(){
//freopen("data.in","r",stdin);
//freopen("myans.out","w",stdout);
int i,j;
cin>>n;
for(i=1;i<=n;i++)cin>>s[i];
for(i=0;i<=n;i++)
for(j=0;j<=2;j++)f[i][j]=inf;
f[0][0]=0;
for(i=1;i<=n;i++){
f[i][0]=1+min(f[i-1][0],min(f[i-1][1],f[i-1][2]) );
if(s[i]>=2)f[i][1]=min(f[i-1][0],f[i-1][2]);
if(s[i]&1) f[i][2]=min(f[i-1][0],f[i-1][1]);
}
cout<<min(f
[0],min(f
[1],f
[2]))<<endl;
//for(i=1;i<=n;i++)
//cout<<f[i][0]<<" "<<f[i][1]<<" "<<f[i][2]<<endl;
return 0;
}
/*
*/
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<queue>
#include<vector>
#include<algorithm>
#define LL long long
#define CLEAR(xxx) memset(xxx,0,sizeof(xxx))
using namespace std;
const int maxn=200000+5,inf=1e9;
char s[maxn];
int n,ans=inf;
inline void _read(int &x){
char ch=getchar(); bool mark=false;
for(;!isdigit(ch);ch=getchar())if(ch=='-')mark=true;
for(x=0;isdigit(ch);ch=getchar())x=x*10+ch-'0';
if(mark)x=-x;
}
int main(){
int i,x,y;
_read(n);
scanf("%s",s+1);
_read(x);
for(i=2;i<=n;i++){
_read(y);
if(s[i-1]=='R'&&s[i]=='L')
ans=min(ans,(y-x)>>1);
x=y;
}
printf("%d\n", ans>=inf ?-1:ans);
return 0;
}
/*
*/
B
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<queue>
#include<vector>
#include<algorithm>
#define LL long long
#define CLEAR(xxx) memset(xxx,0,sizeof(xxx))
using namespace std;
const int maxn=1000+5,inf=1e9;
char s[maxn][maxn];
int n,m;
bool ok1,ok2;
void check(int &x){if(!x) x++;}
int main(){
//freopen("data.in","r",stdin);
//freopen("myans.out","w",stdout);
int i,j,x1,x2,y1,y2,t;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++) scanf("%s",&s[i][1]);
x1=y1=x2=y2=0; ok1=ok2=true;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++)
if(s[i][j]=='*'){x1=i;y2=j; break;}
if(x1)break;
}
if(i>n&&j>m){
printf("YES\n1 1");
return 0;
}
for(i=x1+1;i<=n&&ok1;i++)
for(j=1;j<=m;j++)
if(s[i][j]=='*'&&!y1)y1=j;
else if(s[i][j]=='*'&&y1!=j){ok1=false; break;}
for(i=1;i<=m&&ok2;i++){
if(i==y2) continue;
for(j=1;j<=n;j++)
if(s[j][i]=='*'&&!x2)x2=j;
else if(s[j][i]=='*'&&x2!=j){ok2=false; break;}
}
check(x1);check(x2);
check(y1);check(y2);
if(ok1) printf("YES\n%d %d",x1,y1);
else if(ok2)printf("YES\n%d %d",x2,y2);
else puts("NO");
return 0;
}
/*
*/
C
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<queue>
#include<vector>
#include<algorithm>
#define LL long long
#define CLEAR(xxx) memset(xxx,0,sizeof(xxx))
using namespace std;
const int maxn=100+5,inf=1e9;
int n,s[maxn],f[maxn][5];
int main(){
//freopen("data.in","r",stdin);
//freopen("myans.out","w",stdout);
int i,j;
cin>>n;
for(i=1;i<=n;i++)cin>>s[i];
for(i=0;i<=n;i++)
for(j=0;j<=2;j++)f[i][j]=inf;
f[0][0]=0;
for(i=1;i<=n;i++){
f[i][0]=1+min(f[i-1][0],min(f[i-1][1],f[i-1][2]) );
if(s[i]>=2)f[i][1]=min(f[i-1][0],f[i-1][2]);
if(s[i]&1) f[i][2]=min(f[i-1][0],f[i-1][1]);
}
cout<<min(f
[0],min(f
[1],f
[2]))<<endl;
//for(i=1;i<=n;i++)
//cout<<f[i][0]<<" "<<f[i][1]<<" "<<f[i][2]<<endl;
return 0;
}
/*
*/
相关文章推荐
- APP开发实战102-Android的外部公共存储
- Android Studio 使用笔记:Git 的配置和第一次提交到仓库
- 走遍美洲 —— 墨西哥
- 搭建Go开发及调试环境(LiteIDE + GoClipse) -- Windows篇
- TCP的阻塞和重传
- 性能优化 2 渲染
- 最详细的整个Spark运行时的内核架构以及架构思考
- GitHub上那些值得一试的Java开源库
- hjr-ASP.NET:asp.net控制器登录注册验证
- APP开发实战101-Android的外部私用存储
- Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create:()I
- ubuntu彻底卸载软件
- 关于nohup重定向日志按日期区分文件(未解决)
- Django中Admin管理与权限管理(三)————模块的鉴权操作
- linux下openocd+JLink下载程序到stm32
- WPF的Datagrid显示,样式(隔行换色)
- 使用关联对象(AssociatedObject)为UIButton添加Block响应
- 性能优化 1
- 一套程序,两样用途:论TimesTen程序和Oracle程序的兼容性
- 题目1186:打印日期