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
*/