补题链接
这一次的开题顺序有点不好,G这个最简单的题目一开始没有开出来,然后开了另一个结果题目有点一个点读漏了,然后就做的复杂了一点,虽然a了,同是五道题,贯穿银铜铁,所以这是一场手速题,麻了,考试之前一直在弄线段树,这次没有,笑死。这一次只拿了一个铜,下次一定!目标金!!加油!
G、3G网络
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int x,y;
for(int i=0;i<n;i++)
cin>>x>>y;
double ans=1.0*n;
printf("%.12lf",1.0/ans);
return 0;
}
K、音乐游戏
#include <bits/stdc++.h>
using namespace std;
char s[10];
int main()
{
int n;
cin>>n;
int ans=0;
for(int i=0;i<n;i++)
{
getchar();
cin.getline(s,7);
// cout<<s<<endl;
for(int j=0;j<6;j++)
if(s[j]=='-')
ans++;
}
cout<<ans;
return 0;
}
D、修建道路
#include <bits/stdc++.h>
using namespace std;
const int N=200005;
int a[N];
int main()
{
int n;
cin>>n;
long long ans=0;
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n-1;i++)
{
ans+=max(a[i],a[i+1]);
}
cout<<ans<<endl;
return 0;
}
A、公交线路
#include <bits/stdc++.h>
using namespace std;
int a[10];
int main()
{
int n,m,x,y;
cin>>n>>x>>y;
int fl=1,fr=1;
for(int i=1;i<=n;i++)
cin>>a[i];
cin>>m;
for(int i=1;i<=m;i++)
{
int k;
cin>>k;
if(a[x+i]==k&&a[x-i]!=k)
{
fr=0;//往右边走
break;
}
else if(a[x-i]==k&&a[x+i]!=k)
{
fl=0;
break;
}
else if(a[x-i]!=k&&a[x+i]!=k)
{
fl=1;
fr=1;
break;
}
}
if(y<x)
{
if(fl==0&&fr!=0)
cout<<"Right"<<endl;
else if(fl!=0&&fr==0)
cout<<"Wrong"<<endl;
else cout<<"Unsure"<<endl;
}
if(y>x)
{
if(fl==0&&fr!=0)
cout<<"Wrong"<<endl;
else if(fl!=0&&fr==0)
cout<<"Right"<<endl;
else cout<<"Unsure"<<endl;
}
return 0;
}
I、驾驶卡丁车
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[60][60];
int q;
int xi,yi;
int f=1,v;
int main(){
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++){
getchar();
for(int j=1;j<=m;j++){
char x;
scanf("%c",&x);
if(x=='.')a[i][j]=0;
else if(x=='*'){
a[i][j]=0;
xi=i;yi=j;
}
else if(x=='#')a[i][j]=1;
}
}
scanf("%d",&q);
getchar();
for(int i=1;i<=q;i++){
char x;
scanf("%c",&x);
if(x=='L')f=f%8+1;
else if(x=='R'){
if(f==1)f=8;
else f--;
}
else if(x=='U')v++;
else if(x=='D')v=max(v-1,0);
bool flag=false;
int j;
if(f==1){
for(j=1;j<=v;j++){
int x=xi-1,y=yi;
if(x<1){
v=0;
flag=true;
break;
}
if(a[x][y]==1){
v=0;
flag=true;
break;
}
xi=x;yi=y;
}
}
else if(f==3){
for(j=1;j<=v;j++){
int x=xi,y=yi-1;
if(y<1){
v=0;
flag=true;
break;
}
if(a[x][y]==1){
v=0;
flag=true;
break;
}
xi=x;yi=y;
}
}
else if(f==5){
for(j=1;j<=v;j++){
int x=xi+1,y=yi;
if(x>n){
v=0;
flag=true;
break;
}
if(a[x][y]==1){
v=0;
flag=true;
break;
}
xi=x;yi=y;
}
}
else if(f==7){
for(j=1;j<=v;j++){
int x=xi,y=yi+1;
if(y>m){
v=0;
flag=true;
break;
}
if(a[x][y]==1){
v=0;
flag=true;
break;
}
xi=x;yi=y;
}
}
else if(f==2){
for(j=1;j<=v;j++){
int x=xi-1,y=yi-1;
if(x<1||y<1){
v=0;
flag=true;
break;
}
if(a[x][y]==1){
v=0;
flag=true;
break;
}
else if(xi-1>=1&&yi-1>=1){
if(a[xi-1][yi]==1&&a[xi][yi-1]==1){
v=0;
flag=true;
break;
}
}
xi=x;yi=y;
}
}
else if(f==4){
for(j=1;j<=v;j++){
int x=xi+1,y=yi-1;
if(x>n||y<1){
v=0;
flag=true;
break;
}
if(a[x][y]==1){
v=0;
flag=true;
break;
}
else if(xi+1<=n&&yi-1>=1){
if(a[xi+1][yi]==1&&a[xi][yi-1]==1){
v=0;
flag=true;
break;
}
}
xi=x;yi=y;
}
}
else if(f==6){
for(j=1;j<=v;j++){
int x=xi+1,y=yi+1;
if(x>n||y>m){
v=0;
flag=true;
break;
}
if(a[x][y]==1){
v=0;
flag=true;
break;
}
else if(xi+1<=n&&yi+1<=m){
if(a[xi+1][yi]==1&&a[xi][yi+1]==1){
v=0;
flag=true;
break;
}
}
xi=x;yi=y;
}
}
else if(f==8){
for(j=1;j<=v;j++){
int x=xi-1,y=yi+1;
if(x<1||y>m){
v=0;
flag=true;
break;
}
if(a[x][y]==1){
v=0;
flag=true;
break;
}
else if(xi-1>=1&&yi+1<=m){
if(a[xi-1][yi]==1&&a[xi][yi+1]==1){
v=0;
flag=true;
break;
}
}
xi=x;yi=y;
}
}
if(flag)printf("Crash! %d %d\n",xi,yi);
else printf("%d %d\n",xi,yi);
}
return 0;
}
C、连锁商店
任意门
较有难度一点题就是C题,由于自己不是负责dp这方面,所以还没有开始学,等自己学了dp,再来补这一题!