专栏文章

8.21测试总结

算法·理论参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mio7i0ms
此快照首次捕获于
2025/12/02 14:37
3 个月前
此快照最后确认于
2025/12/02 14:37
3 个月前
查看原文

8.218.21测试总结

T638482小梦的铁索连环T638482 小梦的铁索连环

得分:00

应得:100100

考点:图上搜素+DFS(深搜)DFS(深搜)

错误思路:输出a[1]a[n]a[1]-a[n]中最大值(还不如输出a[1]+a[2]+a[3]+......+a[n]a[1]+a[2]+a[3]+......+a[n]和暴力分一样这样我就第一名了QAQQAQ

正确思路:使用邻接矩阵存储再进行dfsdfs,遍历出最优方案

核心代码

CPP

void dfs(int step,int sum){
	ans=max(ans,sum);
	for(int i=1;i<=n;i++){
		if(vis[i])continue;
		bool flag=1;
		for(int j=1;j<step;j++){
			int v=s[j];
			if(e[i][v]==0){
				flag=0;
				break;
			}
		}
		if(flag){
			vis[i]=1;
			s[step]=i;
			dfs(step+1,sum+a[i]);
			vis[i]=0;
		}
	}
	return ;
}

正确代码:

CPP
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
int n,m,ans=0;
int s[1005],a[1005];
int e[1005][1005];
bool vis[1005];
void dfs(int step,int sum){
	ans=max(ans,sum);
	for(int i=1;i<=n;i++){
		if(vis[i])continue;
		bool flag=1;
		for(int j=1;j<step;j++){
			int v=s[j];
			if(e[i][v]==0){
				flag=0;
				break;
			}
		}
		if(flag){
			vis[i]=1;
			s[step]=i;
			dfs(step+1,sum+a[i]);
			vis[i]=0;
		}
	}
	return ;
}
signed main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	for(int i=1;i<=m;i++)
	{
		int u,v;
		cin>>u>>v;
		e[u][v]=e[v][u]=1;
	}
	dfs(1,0);
	cout<<ans;
	return 0;
}


T638458忙碌的老师T638458 忙碌的老师

得分:00

应得:100100

考点:结构体,sortsort排序

错误思路:以为是二分,就写了一段二分代码(喜提爆00)

正确思路:先用结构体存储,再使用一个数组模拟老师,如果老师不够,数组就在加一位->cnt++;cnt++;,最后输出cntcnt(cntcnt初始为11)

正确代码:

CPP
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
int n,m,cnt;
struct node{
	int l,r;
}a[100005];
int b[100005];
bool cmp(node q,node h){
	if(q.l==h.l)return q.r>h.r;
	return q.l<h.l;
}
signed main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i].l>>a[i].r;
	}
	sort(a+1,a+n+1,cmp);
	int ans=1;
	b[++cnt]=a[1].r;
	for(int i=2;i<=n;i++)
	{
		bool flag=0;
		for(int j=1;j<=cnt;j++)
		{
			if(a[i].l>b[j])
			{
				flag=1;
				b[j]=a[i].r;
				break;
			}
		}
		if(!flag)
		{
			b[++cnt]=a[i].r;
		}
	}
	cout<<cnt;
	return 0;
}


评论

0 条评论,欢迎与作者交流。

正在加载评论...