cin>>n>>m;
for(int i=0;i>name[i]>>year[i];
for(int i=0;i>x>>y;
int OK=0;
for(int j=0;j
这个算法复杂度为O(nm),显然有更快的算法
但是,这样写有个很危险的错误,如下
#include
using namespace std;
struct dog{
string name;
int year;
};
int main(){
set s;
dog a,b;
a.name="mike";a.year=2020;
b.name="wangcai";b.year=2019;
s.insert(a);
s.insert(b);
return 0;
}
运行出来是这样的,
原因很简单,因为set的功能是排序、去重,然而结构体排序要加上“.",所以会报错
改后代码,
#include
using namespace std;
struct dog{
string name;
int year;
bool operator<(const dog&d)const {
if(yeard.year) return 0;
if(name s;
dog a,b;
a.name="mike";a.year=2020;
b.name="wangcai";b.year=2019;
s.insert(a);
s.insert(b);
return 0;
}
那么,回到原题,代码该怎么写呢?
#include
using namespace std;
struct dog{
string name;
int year;
bool operator<(const dog&d)const {
if(yeard.year) return 0;
if(name s;
dog d;
int n,m;
cin>>n>>m;
for(int i=0;i>d.name>>d.year;
s.insert(d);
}
for(int i=0;i>d.year>>d.name;
if(s.count(d)) cout<<"1";
else cout<<"0";
}
return 0;
}
#include
using namespace std;
const int N=100009;
struct student{
int id,score;
bool operator<(const student&b)const {
if(score>b.score) return 1;
if(score>n;
for(int i=1;i<=n;i++){
cin>>f[i].score;
f[i].id=i;
}
sort(f+1,f+1+n);
for(int i=1;i<=n;i++){
cout<
#include
using namespace std;
const int N=100009;
struct student{
int id,score;
bool operator<(const student&b)const {
if(score>b.score) return 1;
if(score>n;
set s;
student x;
for(int i=0;i>x.score;
x.id=i+1;
s.insert(x);
}
set::iterator it;
for(it=s.begin();it!=s.end();it++)
cout<<(*it).id<<" "<<(*it).score<
当然这个代码也有高级版,但要升级到c++14,如下
//不推荐使用,OJ好像不行
#include
using namespace std;
const int N=100009;
struct student{
int id,score;
bool operator<(const student&b)const {
if(score>b.score) return 1;
if(score>n;
set s;
int x;
for(int i=0;i>x;
s.insert({i+1,x});
}
set::iterator it;
for(it=s.begin();it!=s.end();it++)
cout<<(*it).id<<" "<<(*it).score<
大家认真敲代码15min,15min后开讲
#include
using namespace std;
struct ren{
int x,id;
bool operator<(const ren&b)const{
if(xb.x) return 0;
if(id>n;
set s;
set::iterator it;
ren d;
for(int i=1;i<=n;i++){
cin>>d.x;
d.id=i;
s.insert(d);
}
set ok;
for(int i=1;i<=n;i++){
it=s.begin();
d.x=(*it).x+3;
d.id=(*it).id;
s.erase(it);
s.insert(d);
ok.insert(d.id);
}
cout<
希望这些对大家有用,三联必回