Living-Dream 周考总结 第1期

Link

T1

依题计算即可,\(O(1)\)

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
	ios::sync_with_stdio(0);
	double n; cin>>n,n=ceil(n/5.0);
	cout<<setprecision(2)<<fixed;
	if(n<=100) cout<<0.588*n;
	else if(n<=200) cout<<58.8+0.688*(n-100.0);
	else cout<<127.6+0.788*(n-200.0);
	return 0;
}

T2

dfs,\(O(n!)\)

#include<bits/stdc++.h>
#define int long long
using namespace std;

int n,ans;
int a[31][31];
bool vis[31];

void dfs(int x,int s){
	if(x==n+1){
		ans=max(ans,s);
		return;
	}
	for(int i=1;i<=n;i++)
		if(!vis[i])
			vis[i]=1,dfs(x+1,s+a[i][x]),vis[i]=0;
}

signed main(){
	ios::sync_with_stdio(0);
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			cin>>a[i][j];
	dfs(1,0);
	cout<<ans;
	return 0;
}

T3

在线处理每一位同学,并使用插入排序,\(O(n^2)\)

胡了一个 \(O(An)\)\(A\) 为值域) 的桶做法但是 WA 了,有心情再补。

#include<bits/stdc++.h>
#define int long long
using namespace std;

const int N=2e4+5;
int n,d,tot;
double s;
char f;
pair<int,double> a[N];

signed main(){
	ios::sync_with_stdio(0);
	cout<<setprecision(2)<<fixed,cin>>n;
	for(int i=1;i<=n;i++){
		cin>>d>>s>>f;
		if(f=='Y')
			cout<<a[max(1ll,i/5)].first<<' '<<a[max(1ll,i/5)].second<<'\n';
		else{
			a[++tot]={d,s};
			for(int j=tot;j>=2;j--){
				if(a[j].second>a[j-1].second) swap(a[j],a[j-1]);
				else if(a[j].second==a[j-1].second&&a[j].first<a[j-1].first) swap(a[j],a[j-1]);
			}
			cout<<a[max(1ll,i/5)].first<<' '<<a[max(1ll,i/5)].second<<'\n';
		}
	}
	return 0;
}

总结:因为报名了但没打,所以没有总结。

posted @ 2024-03-02 16:43  _XOFqwq  阅读(4)  评论(0编辑  收藏  举报