Codeforces Round #514 (Div. 2)A. Cashier,B. Forgery,C. Sequence Transformation

A. Cashier

#include<bits/stdc++.h>
#include<limits.h>
using namespace std;
typedef long long ll;
const ll INF=LONG_LONG_MAX; 
const ll maxn=1e5+5;
ll n,L,a; 
int main(){
	scanf("%lld%lld%lld",&n,&L,&a);
	int le=0;
	int num=0;
	int s,h;
	for(int i=0;i<n;++i){
		scanf("%d%d",&s,&h);
		num+=(s-le)/a;
		le=s+h;
	}
	if(L>le){
		num+=(L-le)/a;
	}
	cout<<num<<endl;
	return 0;
}

B. Forgery

我是先记录了要填的地方和不能填的地方,然后去把能填的地方全都填起来,最后检查一下 如果还是有的要填的地方还没被填好,那就NO,否则YES

#include<bits/stdc++.h>
#include<limits.h>
using namespace std;
typedef long long ll;
const ll INF=LONG_LONG_MAX; 
const ll maxn=1e3+5;
int n,m;
char M[maxn][maxn];
int xx[]={-1,0,1,-1,1,-1, 0, 1};
int yy[]={1 ,1,1, 0,0,-1,-1,-1};
void look(int x,int y){
	bool flag1=0,flag2=0;
	for(int i=0;i<8;++i){
		if(M[x+xx[i]][y+yy[i]]=='.'){
			flag2=1;
		}
		if(M[x+xx[i]][y+yy[i]]=='X'){
			flag1=1;
			break;
		}
	}
	if(!flag1&&flag2){
		for(int i=0;i<8;++i){
			M[x+xx[i]][y+yy[i]]='#';
		}
	}

}

int main(){
	scanf("%d%d",&n,&m);
	char tt;
	for(int i=0;i<n;++i){
		for(int j=0;j<m;++j){
			cin>>tt;
			if(tt=='#')	M[i][j]='.';
			else	M[i][j]='X';
		}
	}
	if(n<3||m<3)	cout<<"NO"<<endl;
	else{
		for(int i=1;i<n-1;++i){
			for(int j=1;j<m-1;++j){
				look(i, j);
			}
		}
		bool flag=0;
		for(int i=0;i<n;++i){
			for(int j=0;j<m;++j){
				if(M[i][j]=='.'){
					flag=1;
					break;
				}
			}
		}
		if(flag){
			cout<<"NO"<<endl;
		}
		else{
			cout<<"YES"<<endl;
		}
	}
	
	return 0;
}

C. Sequence Transformation

一段连续数的最大公约数是1,所以第一步肯定是要把1先删除,要不然最大公约数不可能超过1,接下来最想让他出现的最大公约数是2(因为是字典序),所有偶数都可以被2整除,而一串奇数的最大公约数就是1了(除了n==3这种情况,特判一下),很明显接下来的就是将奇数全部删除,而剩下的偶数每次将间隔的删去,公约数就会乘2(比如2 4 6 8 10,删除2 6 10)

#include<bits/stdc++.h>
#include<limits.h>
using namespace std;
typedef long long ll;
const ll INF=LONG_LONG_MAX; 
//const ll maxn=1e5+5;
using namespace std;
int n,res=1;
int main(){
	scanf("%d",&n);
	while(n){
		if(n==3){
			printf("%d %d %d",res,res,res*3);
			return 0;
		}
		for(int i=1;i<=n/2+n%2;++i) printf("%d ",res);
		n/=2;
		res*=2;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/TDD_Master/article/details/82951373