杭电多校第十场

   日期:2020-11-15     浏览:86    评论:0    
核心提示:6879-Mine Sweeper题目链接题意与分析就是类似扫雷的一个游戏,一个大的矩形中每个方格有雷的位置用‘X’标记,没雷的位置用’.'标记,同时没雷的位置可以代表一个数字(0-8),数字大小满足扫雷的规则要求给定一个数字n,为每个方格中数字的和,如果能有一个满足要求的矩形图案则输出行列数和矩形图案,否则输出-1。要求行列数都小于等于25。代码(AC)#include<bits/stdc++.h>using namespace std;const int N = 5005;

6879-Mine Sweeper

题目链接

题意与分析

就是类似扫雷的一个游戏,一个大的矩形中每个方格有雷的位置用‘X’标记,没雷的位置用’.'标记,同时没雷的位置可以代表一个数字(0-8),数字大小满足扫雷的规则
要求给定一个数字n,为大矩形中每个方格中数字的和,如果能有一个满足要求的矩形图案则输出行列数和矩形图案,否则输出-1。
要求行列数都小于等于25。

代码(AC)

#include<bits/stdc++.h>
using namespace std;
const int N = 5005;
char grid[30][30];

int main() { 
	int n,t;
	scanf("%d",&t);
	while(t--) { 
		scanf("%d",&n);
		for(int i = 0; i < 26;i++)
			fill(grid[i],grid[i]+30,'X');
		int r = 0, c = 0;
		if(n <= 24) { 
			c = n + 1;
			r = 1;
			for(int i = 0; i < c; i += 2)
				grid[0][i] = '.';
			printf("%d %d\n",r,c);
			for(int i = 0; i < c; i++)
				cout<<grid[0][i];
			cout<<endl;
		}
		else { 
			int n1, n2;
			for(int i = 0; i <= 8; i++) { 
				if((n - i*3) % 8 == 0) { 
					n1 = (n - i*3)/8;
					n2 = i;
					r = (n1 + 11) / 12 ;
					if(n1 % 12)
						c = n1 % 12 * 2 + 1;
					else
						c = 25;
					break;
				}	
			}
			for(int i = 1; i < 2*r-1; i += 2) { 
				for(int j = 1; j < 25; j += 2) { 
					grid[i][j] = '.';
				}
			}
			for(int j = 1; j < c ; j += 2)
				grid[2*r-1][j] = '.';
			for(int i = 24; i > 24-n2; i--)
				grid[24][i] = '.';
			printf("%d %d\n",25,25);
			for(int i = 0; i < 25; i++) { 
				for(int j = 0; j < 25; j++)
					cout<<grid[i][j];
				cout<<endl;
			}
		}
		
	}
	return 0;
}

6887-Task Scheduler

题目链接

题意与分析

这道题是一道概率分析题目,也就是数学方面的问题,给定每个任务需要的服务器数量,和总服务器坏服务器数量,是不放回的取出,求执行任务的顺序使得每次选到坏服务器重新选择这种冲突数量的最少。

代码(AC)

#include<bits/stdc++.h>
using namespace std;
vector<pair<int, int> >p;

//记住不要忘了按字典序输出呀,因为有所需服务器数量大小相同的任务!
bool cmp(pair<int,int> a, pair<int,int> b) { 
	if(a.second == b.second) return a.first < b.first;
	else return a.second > b.second;
}

int main() { 
	//freopen("./1.in","r",stdin);
	int t,n,m,k;
	scanf("%d",&t);
	while(t--) { 
		p.clear();
		scanf("%d %d %d",&n, &m, &k);
		for(int i = 0; i < n; i++) { 
			int temp;
			scanf("%d",&temp);
			p.push_back(make_pair(i+1, temp));
		}
		sort(p.begin(), p.end(), cmp);
		if( !k ) { 
			for(int i = 1; i < n; i++)
				cout<<i<<" ";
			cout<<n<<endl;
		}
		else { 
			for(int i = 0; i < n-1; i++)
				cout<<p[i].first<<" ";
			cout<<p[n-1].first<<endl;
		}
	}
	return 0;
}
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服