L2-019 悄悄关注
思路:模拟+stl
#include <bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define endl '\n';
typedef long long ll;
typedef pair<string,int> PII;
const int N=1e5+10,mod=1e9+7;
int n,k,x;
string s;
map<string,int>mp;
set<PII>st;
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>s,mp[s]=1;
cin>>k;
int sum=0;
for(int i=1;i<=k;i++){
cin>>s>>x;
st.insert({s,x});
sum+=x;
}
double ave=sum*1.0/k;
vector<string>ans;
for(auto i:st){
if(!mp[i.first]&&i.second>ave) ans.push_back(i.first);
}
sort(ans.begin(),ans.end());
if(!ans.size()){
cout<<"Bing Mei You"<<endl;
return 0;
}
for(auto i:ans) cout<<i<<endl;
return 0;
}
L2-022 重排链表
思路:结构体模拟链表
#include <bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define endl '\n';
typedef long long ll;
typedef pair<string,int> PII;
const int N=1e6+10,mod=1e9+7;
struct node{
int pos,num,nex;
}a[N];
int n,head;
int main(){
cin>>head>>n;
for(int i=1;i<=n;i++){
int x;cin>>x;
a[x].pos=x;
cin>>a[x].num>>a[x].nex;
}
vector<node> v,ans;
for(int i=head;i!=-1;i=a[i].nex) v.push_back(a[i]);
int l=0,r=v.size()-1;
while(l<=r){
if(l==r) {
ans.push_back(v[l]);
break;
}
ans.push_back(v[r]);
ans.push_back(v[l]);
l++,r--;
}
for(int i=0;i<ans.size();i++){
if(i==ans.size()-1){
printf("%05d %d -1\n",ans[i].pos,ans[i].num);
}else{
printf("%05d %d %05d\n",ans[i].pos,ans[i].num,ans[i+1].pos);
}
}
return 0;
}
L2-023 图着色问题
思路:图论
#include <bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define endl '\n';
typedef long long ll;
typedef pair<string,int> PII;
const int N=1e5+10,mod=1e9+7;
int n,m,k,vis[N];
vector<int>e[N];
void solve(){
fill(vis+1,vis+1+n,0);
set<int>st;
for(int i=1;i<=n;i++) {
int x;cin>>x;
vis[i]=x;
st.insert(x);
}
if(st.size()!=k){
cout<<"No"<<endl;
return ;
}
for(int i=1;i<=n;i++){
for(auto j:e[i]){
if(vis[j]==vis[i]){
cout<<"No"<<endl;
return;
}
}
}
cout<<"Yes"<<endl;
return ;
}
int main(){
cin>>n>>m>>k;
while(m--){
int u,v;
cin>>u>>v;
e[u].push_back(v);
e[v].push_back(u);
}
int q;cin>>q;
while(q--){
solve();
}
return 0;
}