6.20学习总结

D - 刻录光盘icon-default.png?t=N7T8https://vjudge.net/problem/%E6%B4%9B%E8%B0%B7-P2835

 

 

思路:

利用并查集和弗洛伊德,对需要传递的对象都进行标记,经过处理后使他们的父亲发生相应的改变,最后对数组进行查询累加即可

代码:

#include<bits/stdc++.h>
using namespace std;
#define N 1000005
#define mod 100003
#define inf 1e9+7
typedef long long ll;
ll n, m, t, cnt = 1, ans, sum1, sum2, num;
ll x, y, z;
ll a[N], b[N], c[N], times[N], dp[N];
ll dis[205][205], head[N];
bool vis[N];
typedef pair<int, int>pii;
priority_queue<pii, vector<pii>, greater<pii>>q;
struct node {
	ll a, b, c;
}f[N];
map<int, int>mp;
set<int>s;
vector<int>v;
ll gcd(ll a, ll b) {
	return b > 0 ? gcd(b, a % b) : a;
}
ll lcm(ll a, ll b) {
	return a * b / gcd(a, b);
}
int find(int x)
{
	if (times[x] == x)
		return x;
	return times[x] = find(times[x]);
}
int main()
{
	cin >> t;
	for (int i = 1; i <= t; i++) {
		times[i] = i;
	}
	/*for (int i = 1; i <= t; i++) {
		for (int j = 1; j <= t; j++) {
			dis[i][j] = 0;
		}
	}*/
	for (int i = 1; i <= t;i++) {
		while (cin >> n && n != 0) {
			dis[i][n] = 1;
		}
	}
	for (int k = 1; k <= t; k++) {
		for (int i = 1; i <= t; i++) {
			for (int j = 1; j <= t; j++) {
				if (dis[i][k]&&dis[k][j]) {
					dis[i][j] = 1;
				}
			}
		}
	}
	for (int i = 1; i <= t; i++) {
		for (int j = 1; j <= t; j++) {
			if (dis[i][j]) {
				times[j] = times[i];
			}
		}
	}
	ans = 0;
	for (int i = 1; i <= t; i++) {
		if (times[i] == i)
			ans++;
	}
	cout << ans << endl;
	return 0;
}

F - 蛇形填充数组icon-default.png?t=N7T8https://vjudge.net/problem/%E8%AE%A1%E8%92%9C%E5%AE%A2-T1143

思路:

规律题,单数和复数方向刚好相反(循环里进行特判即可),每个n阶数组有2n-1条线

代码:

#include<bits/stdc++.h>
using namespace std;
#define N 2000005
#define mod 100003
#define inf 1e9+7
typedef long long ll;
ll n, m, t, cnt = 1, ans, sum, num,minn;
ll x, y, z;
ll dp[15][15];
struct node {
	ll a, b, c;
}f[N];
map<ll, ll>mp;
set<int>s;
vector<int>v;
ll gcd(ll a, ll b) {
	return b > 0 ? gcd(b, a % b) : a;
}
ll lcm(ll a, ll b) {
	return a * b / gcd(a, b);
}
int main()
{
	cin >> n;
	ans = sum = 0;
	for (int i = 2; i <= 2*n; i++) {
		sum++;
		if (sum % 2 == 0) {
			for (int k = i - 1; k >= 1; k--) {
				if (i - k <=n&& k <= n) {
					dp[i - k][k] = ++ans;
				}
			}
		}
		else {
			for (int k = 1; k <=i - 1; k++) {
				if (i - k <= n&&k<=n) {
					dp[i - k][k] = ++ans;
				}
			}
		}
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			cout << dp[i][j] << " ";
		}
		cout << endl;
	}
	return 0;
}

 

 J - 判断元素是否存在icon-default.png?t=N7T8https://vjudge.net/problem/%E8%AE%A1%E8%92%9C%E5%AE%A2-T1184

 

 

思路:

当前一个数k在集合m里,由题可知2k+1,3k+1都在集合里,每一个数又可以延伸出两个数到集合里,每判断一个数k时,顺便对2k+1,3k+1也进行判断,当这个数大于我们输入的数时可知是不可能有结果的,因为无论如何k的倍数都是大于k的,而x小于k

代码:

#include<bits/stdc++.h>
using namespace std;
#define N 1000005
#define mod 100003
#define inf 1e9+7
typedef long long ll;
ll n, m, t, cnt = 1, ans, sum, num,minn;
ll x, y, z;
ll dp[N];
struct node {
	ll a, b, c;
}f[N];
map<ll, ll>mp;
set<ll>s;
vector<ll>G[N];
ll gcd(ll a, ll b) {
	return b > 0 ? gcd(b, a % b) : a;
}
ll lcm(ll a, ll b) {
	return a * b / gcd(a, b);
}
bool dfs(ll n) {
	if (n > y)
		return 0;
	if (n == y)
		return 1;
	if (n < y)
		return dfs(2 * n + 1) || dfs(3 * n + 1);
}
int main()
{
	cin >> x;
	getchar();
	cin >> y;
	if (dfs(x))
		cout << "YES" << endl;
	else
		cout << "NO" << endl;
	return 0;
}

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用qwt6.20,您需要按照以下步骤进行操作: 1. 首先,您可以从SourceForge的网站下载qwt6.20的安装文件。 2. 在QT 5.15.0中,一些目录发生了变化,如果您想在qt 5.15.0中构建qwt,您需要修改qwt的源代码。您可以在qwt_global.h文件中添加以下代码段: #if defined(_WIN32) #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) #include <QtGui/QPainterPath> #endif #endif 这段代码可以在mvcs2019和qwt 6.1.4中工作。 3. 安装qwt的Designer显示的控件。您可以按照安装文件中的说明进行安装。 4. 如果您想直接从官方网站安装QT,请下载QT Creator 8.0.2和Qt 5.15.2,并选择MSVC2015-64bit作为编译器。然后,您可以从官方网站下载QWT 6.1.4或更高版本,并解压它。 以上是使用qwt6.20的一般步骤。根据您的需求和具体环境,可能还需要进行其他配置和设置。请确保您按照相关文档和指南进行操作,以确保正确地使用qwt6.20。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [qwt6.2.0 msvc编译](https://blog.csdn.net/superkeep/article/details/124094430)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [QT5.15.2+QWT6.2.0 配置 综述](https://blog.csdn.net/weixin_42462856/article/details/128610604)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值