ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Educational Codeforces Round 131 - Div.2

2022-08-11 14:02:40  阅读:163  来源: 互联网

标签:Educational 排序 题意 int 矩阵 cin 131 Div.2 include


Educational Codeforces Round 131 - Div.2

A

题意

有一个 \(2*2\) 的矩阵,\(0\) 和 \(1\) 填入其中,你可以消除一列和一行的数,使他们从 \(1\) 都变为 \(0\) ,问最少多少次操作可以使他们都变为 \(0\)

Solution

一共两种可能。

  1. 不需要操作(及矩阵中没有 \(1\))
  2. \(1\) 次操作(及矩阵中有 \(1-3\) 个 \(1\))
  3. \(2\) 次操作(及矩阵中全是 \(1\) )
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;

int t;
int a[5];
int main()
{
	cin>>t;
	while(t--)
	{
		int x = 0;
		for(int i=1;i<=4;i++)
		{
			cin>>a[i];
			if(a[i]==1)	x++;
		}
		if(x==0)	cout<<'0'<<endl;
		else
		if(x==4)	cout<<'2'<<endl;
		else
			cout<<'1'<<endl;
			
	}
	return 0;
}

B

题意

有一个 \(1-n\) 的排序记为 \(p_i\) ,存在一个 \(d\) 使得 \(p_i \times d = p_{i+1}\) ,找出一个 \(d\) 使得存在该条件的数对尽可能的多,输出 \(d\) 并输出该排序。

Solution

TIPS :如 \(p = [5,2,6,7,1,3,4]\) 即为 \(n\) 为 \(6\) 时的排序

发现,当此数对连续时,将是一个指数级别的增长,如 $ [1,2,4,8,...]$ ,那么,在 \(d=2\) 时是最优的,根据此规律进行构造。

注意:\(1\) 可以作为开头,\([1,2,4,3,6,5]\) 优于 \([1,2,4,3,5,6]\) 。

即从前往后找,找到一个未访问的数,依次 $ \times 2$ 向后即可。

#include <bits/stdc++.h>
#define mod 1000000007
#define int long long
using namespace std;
int vis[2000005];
signed main()
{
	int T;
	cin >> T;
	while(T--)
	{
		int n;
		cin >> n;
		cout << "2\n";
		for(int i=1;i<=n;i++)
			vis[i]=0;
		for(int i=1;i<=n;i++)
		{
			int x=i;
			while(x<=n&&!vis[x])
			{
				cout << x << " ";
				vis[x]=1;
				x*=2;
			}
		}
		cout << "\n";
	}
	return 0;
}

标签:Educational,排序,题意,int,矩阵,cin,131,Div.2,include
来源: https://www.cnblogs.com/xlqs23/p/16575782.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有