牛客练习赛17

链接:https://www.nowcoder.com/acm/contest/109/B
来源:牛客网

好位置
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

给出两个串s和x
定义s中的某一位i为好的位置,当且仅当存在s的子序列 满足y=x且存在j使得i=kj成立。
问s中是否所有的位置都是好的位置。

输入描述:

一行两个字符串s,x,这两个串均由小写字母构成。
1 <= |s|, |x| <= 200000

输出描述:

Yes表示是。
No表示不是。
示例1

输入

abab
ab

输出

Yes
示例2

输入

abacaba
aba

输出

No
示例3

输入

abc
ba

输出

No

水题;
代码:
  

#include<bits/stdc++.h>
using namespace std;
int main(){
  int a,b,c;
  scanf("%d%d%d",&a,&b,&c);
  printf("%d\n",((b/(int)sqrt(b*c/a))+(c/(int)(sqrt(b*c/a)))+((int)(sqrt(b*c/a))))*4);
}

链接:https://www.nowcoder.com/acm/contest/109/B
来源:牛客网

好位置
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

给出两个串s和x
定义s中的某一位i为好的位置,当且仅当存在s的子序列 满足y=x且存在j使得i=kj成立。
问s中是否所有的位置都是好的位置。

输入描述:

一行两个字符串s,x,这两个串均由小写字母构成。
1 <= |s|, |x| <= 200000

输出描述:

Yes表示是。
No表示不是。
示例1

输入

abab
ab

输出

Yes
示例2

输入

abacaba
aba

输出

No
示例3

输入

abc
ba

输出

No
题意: 看字符串s是不是由多个x串组成的;
起先写了一个超时的代码,但不知道是应为时间超时导致的错误,就没有写了,很难受;
起初以为自己题目看错了,这个题目真心难懂
还有一部分原因时Kmp一直不会,唉!!!!

代码:

#include<bits/stdc++.h>
using namespace std;
char s1[200005],s2[200005];
int main() {
  scanf("%s%s",s1,s2);
  int len1=strlen(s1),len2=strlen(s2);
  int first=0,last=len2-1;
  int flag=1;
  for (int i=0 ;i<len1 ;i++ ){
    if (s2[first]!=s1[i] || s2[last]!=s1[len1-1-i]) {
      flag=0;
      break;
    }
    first++;
    last--;
    if (first==len2) first=0;
    if (last==-1) last=len2-1;
  }
  if (flag) printf("Yes\n");
  else printf("No\n");
}

链接:https://www.nowcoder.com/acm/contest/109/D
来源:牛客网

经纬度
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

给定地球的两个经纬度坐标,问这两个点的球面距离和直线距离的差。假设地球为球体,半径为6371009米。

输入描述:

第一行一个整数T表示数据组数。
接下来n行,每行四个数lat1, lng1, lat2, lng2分别表示两个点的经纬度。
正数表示北纬和东经。
负数表示南纬和西经。
数据保证合法。

输出描述:

n行表示答案。
答案保留到米。
示例1

输入

1
43.466667 -80.516667 30.058056 31.228889

输出

802333

这道提主要是我跟本不知道怎么把经纬度转化;
还有输入是先纬度再经度,有个坑;

这是别人的代码;
代码:

#include<bits/stdc++.h>
using namespace std;
const double pi=acos(-1);
const double R=6371009;
double lat1,lat2,lng1,lng2,C,dis;
int t;
int main()
{
  cin>>t;
  while(t--){
    cin>>lat1>>lng1>>lat2>>lng2;
    C=R*sqrt(2-2*(sin(lat1*pi/180)*sin(lat2*pi/180)+cos(lat1*pi/180)*cos(lat2*pi/180)*cos((lng1-lng2)*pi/180)));
    dis=2*asin(C/2/R)*R-C;
    printf("%.0f\n",dis);
  }
}

 

 

posted on 2018-05-05 19:38  大海浩瀚  阅读(267)  评论(0)    收藏  举报

导航