(进步了)☆: .。. o(≧▽≦)o .。.:

A.缺失的数字

(很简单,没有错误) 代码:

#include<bits/stdc++.h>
using namespace std;
int cnt[1010];
int main()
{
	freopen("num.in","r",stdin);
	freopen("num.out","w",stdout);
	int n,minn=1000,maxn=0;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		int x;
		cin>>x;
		if(x<minn) minn=x;
		if(x>maxn) maxn=x;
		cnt[x]=1;
	}
	for(int i=minn;i<=maxn;i++)
	{
		//cout<<cnt[i];
		if(cnt[i]!=1)
		{
			cout<<i;
			return 0;
		}
	}
	cout<<maxn+1;
	return 0;
}

B.不及格

(也没错) 代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	freopen("score.in","r",stdin);
	freopen("score.out","w",stdout);
	int n,p,m=0;
	cin>>n>>p;
	for(int i=0;i<n;i++)
	{
		int x;
		cin>>x;
		if(x<p)
		{
			m++;
		}
	}
	cout<<m;
	return 0;
}

C.集会

题意:找到一个距离所有的最近的一个点。 思路:使用枚举法。 错因:循环时弄错范围。 代码:

#include<bits/stdc++.h>
using namespace std;
int a[110];
int b[110];
int main()
{
	freopen("jihui.in","r",stdin);
	freopen("jihui.out","w",stdout);
	long long n,maxm=0;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		if(a[i]>maxm) maxm=a[i];
	}
	long long ans=1e9;
	for(int i=1;i<=maxm;i++)
	{
		long long minn=0;
		for(int j=1;j<=n;j++)
		{ 
				minn+=(a[j]-i)*(a[j]-i);
		}
		ans=min(ans,minn);
	}
	cout<<ans;
	return 0;
}

D.统计区间

题意:共有多少组满足Al∼Ar的和等于K的l和r。 错因:这题我真不会! 代码:

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=2e5+10;
ll a[N],s[N],n,k;
int main()
{
	freopen("tjqj.in","r",stdin);
	freopen("tjqj.out","w",stdout);
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		s[i]=s[i-1]+a[i];
	}
	unordered_map<ll,ll>mp;
	ll ans=0;
	for(int i=0;i<=n;i++)
	{
		ans+=mp[s[i]-k];
		mp[s[i]]++;
	}
	cout<<ans<<endl;
	return 0;
}

E.旅行

题意:有N个城,M条路,求有多少种旅游方式。 错因:没看懂。 代码:

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
int n;
vector<int> adj[2010];
bool vis[2010];
void dfs(int u) 
{
	if (vis[u]) return; 
	vis[u] = 1; 
	for (int i = 0; i < adj[u].size(); i++)
	{
        int j = adj[u][i];
		dfs(j);
	}
}
int main()
{
	freopen("lx.in","r",stdin);
	freopen("lx.out","w",stdout);
	int n, m, ans = 0;
	cin >> n >> m;
	for (int i = 1; i <= m; i++)
	{
		int a, b;
		cin >> a >> b;
		adj[a].push_back(b);
	}
	for (int i = 1; i <= n; i++)
	{
		memset(vis, 0, sizeof vis);
		dfs(i);
		for (int j = 1; j <= n; j++)
			if (vis[j]) ans++;
	}
	cout << ans;
	return 0;
}

总结: 这次会的都对了,不会的还要努力。