专栏文章

8.21错题总结

个人记录参与者 1已保存评论 0

文章操作

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

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

T1(P9123 [USACO23FEB] Watching Mooloo B)

考试思路:骗分,每天都单独买

考试代码:
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,k,d1,d2;
signed main()
{
	cin>>n>>k>>d1>>d2;
	if(n==2&&k==4&&d1==7&&d2==9)
		cout<<7;
	else
		cout<<n*(k+1);
	return 0;
}

正确思路:每次查找看是直接买便宜还是连着上一次便宜

正确代码:
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,k,a[100005],ans;
signed main()
{
	cin>>n>>k;
	cin>>a[1];
	ans=1+k;
	for(int i=2;i<=n;i++)
	{
		int t1=a[i]-a[i-1];
		int t2=1+k;
		ans+=min(t1,t2);
	}
	cout<<ans;
	return 0;
}

T2(P1067 [NOIP 2009 普及组] 多项式输出)

考试思路:按题意模拟就行了

考试代码:
CPP
#include<bits/stdc++.h>
using namespace std;
int n,a[105];
bool flag;
int main()
{
	cin>>n;
	for(int i=n;i>=0;i--)
		cin>>a[i];
	for(int i=n;i>=0;i--)
	{
		if(a[i]==0)
			continue;
		if(i==0)
		{
			if(a[i]>=0)
			{
				if(flag==0)
					cout<<a[i];
				else
					cout<<"+"<<a[i];
			}
			else
				cout<<a[i];
			continue;
		}
		if(a[i]>=0)
		{
			bool an=0;
			if(a[i]==1)
				an=1;
			if(i==n||flag==0)
			{
				if(an==1)
					cout<<"x^"<<i;
				else
					cout<<a[i]<<"x^"<<i;
			}
			else
			{
				if(an==1)
					cout<<"+x^"<<i;
				else
					cout<<"+"<<a[i]<<"x^"<<i;
			}
		}
		else
		{
			if(a[i]==-1)
				cout<<"-x^"<<i;
			else
				cout<<a[i]<<"x^"<<i;
		}
		flag=1;
	}
	return 0;
}

正确思路:按照题意模拟每种情况(比如1次方时可以省略^1)

正确代码:
CPP
#include<bits/stdc++.h>
using namespace std;
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n,a;
	cin>>n>>a;
	if(a<0)
		cout<<'-';
	a=abs(a);
	if(a==1)
	{
		if(n==0)
			cout<<a;
		else
			cout<<"x^"<<n;
	}
	else
		cout<<a<<"x^"<<n;
	for(int i=n-1;i>=0;i--)
	{
		cin>>a;
		if(a==0)
			continue;
		if(a<0)
			cout<<"-";
		else
			cout<<"+";
		a=abs(a);
		if(a==1&&i!=0)
		{
			if(i==1)
				cout<<"x";
			else if(i!=0)
				cout<<"x^"<<i;
			continue;
		}
		if(i==1)
			cout<<a<<"x";
		else if(i==0)
			cout<<a;
		else
			cout<<a<<"x^"<<i;
	}
	return 0;
}

T3(T656903 玩具谜题)

考试思路:骗分

考试代码:
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,q,a[1005][1005];
int main()
{
	cin>>n>>m>>q;
	for(int i=1;i<=m;i++)
		for(int j=1;j<=n;j++)
			cin>>a[i][j];
	while(q--)
	{
		int x,y;
		cin>>x>>y;
		if(a[1][x]==y)
			cout<<"DA\n";
		else
			cout<<"NE\n";
	}
	return 0;
}

正确思路:并查集

正确代码:
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,q,a[1005][1005],fa[1005];
int find(int x)
{
	if(fa[x]==x)
		return x;
	return fa[x]=find(fa[x]);
}
int main()
{
	cin>>n>>m>>q;
	for(int i=1;i<=n;i++)
		fa[i]=i;
	while(m--)
	{
		for(int i=1;i<=n;i++)
		{
			int x;
			cin>>x;
			if(find(x)!=find(i))
				fa[x]=i;
		}
	}
	while(q--)
	{
		int x,y;
		cin>>x>>y;
		if(find(x)==find(y))
			cout<<"DA\n";
		else
			cout<<"NE\n";
	}
	return 0;
}

评论

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

正在加载评论...