2024 暑假平邑一中

dienter發表於2024-08-07

Day2

T1

點選檢視程式碼
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+5;
int n,m;
vector<int> v;
int ans;
map<vector<int>,int> ma;
bool check(){
	for(int i=0;i<m;i++) if(v[i]!=0) return 1;
	return 0;
}
signed main(){
	cin>>n>>m;
	for(int i=1;i<=m+10;i++){
		v.push_back(0);
	}
	ma[v]=0;
	for(int i=1;i<=n;i++){
		int u;
		cin>>u;
		for(int j=0;j<m;j++){
			if(u&(1<<j)){
				v[j]++;
			}
		}
		for(int j=m-1;j>=0;j--){
			v[j]-=v[0];
		}
		if(!ma.count(v)&&check()) ma[v]=i;
		ans=max(ans,i-ma[v]);
		
	}
	cout<<ans;
	return 0;
}


T2

點選檢視程式碼
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
#define int long long
int n;
pair<int,int> w[N];
bool cmp(pair<int,int> a,pair<int,int> b){
	if(a.first<a.second){
		if(b.first<b.second) return a.first<b.first;
		return 1;
	}
	else {
		if(b.first<b.second) return 0;
		return a.second>b.second;
	}
}
signed main(){
	//freopen("wash.in", "r", stdin);
	//freopen("wash.out", "w", stdout);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>w[i].first>>w[i].second;
	}
	sort(w+1,w+n+1,cmp);
	/*
	for(int i=1;i<=n;i++){
		cout<<w[i].first<<' '<<w[i].second<<"\n";
	}
	cout<<"\n";
	*/
	int cnt1=0,cnt2=0;
	for(int i=1;i<=n;i++){
		cnt1+=w[i].first;
		cnt2=max(cnt2,cnt1)+w[i].second;
		//cout<<cnt1<<' '<<cnt2<<"\n";
	}
	//cout<<cnt1<<' '<<cnt2<<"\n";
	cout<<cnt2;
	return 0;
}
/*
4
1 3
2 2
2 9
12 6
*/