Codeforces Round #556 (Div. 2)·
A. Stock Arbitraging
签到题,买股票,就是买的价格分别为si,卖的价格分别为bi,用最少的钱买进,用最大的价格卖出,还有别忘记加上买股票是剩下的钱。
# include <bits/stdc++.h>
using namespace std;
typedef long long LL;
LL s[40];
LL b[40];
bool cmp(LL a,LL b)
{
	return a>b;
}
int main()
{
	LL n,m,r;
	LL aa,bb;
	scanf("%lld %lld %lld",&n,&m,&r);
	for(int i=0;i<n;i++){
		scanf("%lld",&s[i]);
	} 
	for(int i=0;i<m;i++){
		scanf("%lld",&b[i]);
	}
	sort(s,s+n);
	sort(b,b+m,cmp);
	
	//cout<<s[0]<<" "<<b[0]<<endl;
	aa=r/s[0];
	bb=b[0]*aa+r%s[0];
	
	printf("%lld",max(bb,r)); 
	
	return 0;
 } 
B. Tiling Challenge
就是暴力判断是否是可以用哪个图形填满。同时不要忘记边界的判断。
# include <bits/stdc++.h>
using namespace std;
char mb[60][60];
int flag=1;
int n;
int x[]={0,1,1,1,2};
int y[]={0,-1,0,1,0};
int main()
{	
	scanf("%d",&n);
	getchar();
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			scanf("%c",&mb[i][j]); 
		}
		getchar();
	}
	
	int nn=0;
	while(nn<n*n){
		int xx=nn/n;
		int yy=nn%n;
		
		if(nn>=n*n){
			break;
		}
		int flag1=1;
		if(mb[xx][yy]=='.'){
			for(int i=0;i<5;i++){
				//cout<<xx+x[i]<<" "<<yy+y[i]<<endl;
				if(((xx+x[i])>=0&&xx+x[i]<n)&&((yy+y[i])>=0&&(yy+y[i])<n)){
					if(mb[xx+x[i]][yy+y[i]]=='.'){
						continue;
					}else{
						flag=0;
						flag1=0;
						break;
					}
				}else{
					flag=0;
					flag1=0;
					break;
				}
			}
			if(flag1 
                     
                    
                