2020-8-7 个人赛补题
程序员文章站
2022-03-23 15:41:25
链接: link.这个题一开始想用KMP解决,发现在字符串中间可能会有“fashjhfSussu”这样的形式,所以还是采取暴力解决#include #include #include #include using namespace std;const int N = 1001000;char str[N];int main(){ int flag =...
链接: link.
这个题一开始想用KMP解决,发现在字符串中间可能会有“fashjhfSussu”这样的形式,所以还是采取暴力解决
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <string.h>
using namespace std;
const int N = 1001000;
char str[N];
int main()
{
int flag = 1;//标记
memset(str,0,sizeof(str));
gets(str);//输入字符串
int len = strlen(str);
if(str[len-1]=='?')//如果是问号直接输出
cout<<"7"<<endl;
else
{
for(int i = 0; i <= len; i++)//遍历
{
if(str[len-6] == 'S' && str[len-5] == 'u' && str[len-4] == 's' && str[len-3] == 's' && str[len-2] == 'u')
{
//是否在字符串末尾
printf("AI SUSSU!\n");
flag = 0;
break;
}
else if(str[0] == 'S' && str[1] == 'u' && str[2] == 's' && str[3] == 's' && str[4] == 'u' && str[5] == ' ')
{
//是否在字符串开头
printf("AI SUSSU!\n");
flag = 0;
break;
}
else if(str[i] == ' ' && str[i+1] == 'S' && str[i+2] == 'u' && str[i+3] == 's' && str[i+4] == 's' && str[i+5] == 'u' && str[i+6] == ' ')
{
//是否在字符串中间,注意str[i]一定是空格且str[i+6]也是空格
printf("AI SUSSU!\n");
flag = 0;
break;
}
}
if(flag==1)
printf("O cara é bom!\n");
}
return 0;
}
链接: link.
这个题就是给定一块区域,在区域中摆放盘子或取走盘子,让我们判断操作是否可行,我们定义两个二维数组:vis[n][n],rr[n][n],前者作为标记数组判断当前位置是否已经被占用了,后者存放该位置盘子的半径,每当我们放进盘子时就把半径存入,取出盘子时用于我们判断该位置盘子的半径是否满足条件
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#define N 5050
using namespace std;
struct node
{
char c;
int x;
int y;
int r;
} an[N];
int vis[1005][1005];//标记数组,判断该位置是否为空
int rr[1005][1005];//存放当前位置放的盘子的半径
int main()
{
memset(vis,0,sizeof(vis));
memset(rr,0,sizeof(rr));
int t,j;
cin>>t;
for(int i=1; i<=t; ++i)
{
cin>>an[i].c>>an[i].x>>an[i].y>>an[i].r;
if(an[i].x<0||an[i].y<0||an[i].x>1000||an[i].y>1000)
{//超出坐标限制直接输出No
cout<<"No"<<endl;
continue;
}
if(an[i].c=='R')
{
if(vis[an[i].x][an[i].y]!=0&&rr[an[i].x][an[i].y]==an[i].r)
{//判断当前位置是否有盘子,且半径是否符合要求
cout<<"Ok"<<endl;
vis[an[i].x][an[i].y]=0;//移除后清空标记
}
else
cout<<"No"<<endl;
}
else if(an[i].c=='A')
{
if(vis[an[i].x][an[i].y]!=0)//如果位置已经被用了
cout<<"No"<<endl;
else
{
for(j=1; j<=i-1; ++j)//遍历前几个已经放上的盘子,看是否能放下
{
if(an[j].c=='A'&&vis[an[j].x][an[j].y]!=0&&rr[an[j].x][an[j].y]==an[j].r)
{
if((an[j].r+an[i].r)*(an[j].r+an[i].r)>(an[j].x-an[i].x)*(an[j].x-an[i].x)+(an[j].y-an[i].y)*(an[j].y-an[i].y))
{//出现相交则不符合
cout<<"No"<<endl;
break;
}
}
}
if(j==i)//如果遍历完均无相交
{
cout<<"Ok"<<endl;
vis[an[i].x][an[i].y]=1;
rr[an[i].x][an[i].y]=an[i].r;
}
}
}
}
return 0;
}
本文地址:https://blog.csdn.net/qq_45728527/article/details/107875710
上一篇: 超频基础知识详解
下一篇: 凤凰新闻如何设置推送内容?
推荐阅读
-
2019.3.14解题报告&补题报告
-
codeforces 补题总结3
-
CSUFT 个人赛(2) C题(POJ - 1316) D题(HDU - 2076) G题(HihoCoder - 1740) H题(HDU - 5640)
-
杭电多校04补题 HDU6336 Problem E. Matrix from Arrays【构造】
-
2020年04月12日个人赛
-
2020年04月25日个人赛
-
Codeforces Round #678 (Div. 2)补题
-
2020 7.12 -- 7.13 两场牛客多校 + 两场 unrated的cf的补题
-
蓝桥杯 第十届个人赛初赛 A 平方和
-
2020-8-7 个人赛补题