csp 2019 - 4 추천 시스템
18925 단어 수필
#include
using namespace std;
const int maxn = 3e4 + 7;
const int maxm = 55;
int n, m;
int op, typ, com, val;
int q;
int cnt;
int k[maxm];
struct goods{
int type, com, val;
bool operator < (const goods &b) const
{
if(val == b.val)
{
if(type == b.type)
{
return com < b.com;
}
return type < b.type;
}
else
{
return val > b.val;
}
}
goods(int a, int b, int c) : type(a), com(b), val(c){
};
};
set <goods> select;
set <goods> :: iterator it;
unordered_map <int, int> sc[maxm];
void add(int t, int c, int v)
{
select.insert(goods(t, c, v));
sc[t][c] = v;
}
void del(int t, int c)
{
select.erase(goods(t, c, sc[t][c]));
}
void work()
{
it = select.begin();
vector <int> ans[maxm];
while(cnt && it != select.end())
{
typ = it->type;
com = it->com;
if(k[typ])
{
k[typ] --;
ans[typ].push_back(com);
cnt -- ;
}
it ++;
}
for(int i = 0; i < m; i ++)
{
if(ans[i].size())
{
for(auto j : ans[i])
{
printf("%d ", j);
}
printf("
");
}
else
printf("-1
");
}
}
int main()
{
scanf("%d%d", &m, &n);
for(int i = 0; i < n; i ++)
{
scanf("%d%d", &com, &val);
for(int j = 0; j < m; j ++)
{
add(j, com, val);
}
}
scanf("%d", &q);
for(int i = 0; i < q; i ++)
{
scanf("%d", &op);
if(op == 1)
{
scanf("%d%d%d", &typ, &com, &val);
add(typ, com, val);
}
if(op == 2)
{
scanf("%d%d", &typ, &com);
del(typ, com);
}
if(op == 3)
{
scanf("%d", &cnt);
for(int j = 0; j < m; j ++)
{
scanf("%d", k + j);
}
work();
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 디지털 처리 클래스 상용 방법 집합오늘 은 자바 의 디지털 처리 류 와 관련 된 내용 을 배 웠 습 니 다. 그 중에서 흔히 볼 수 있 는 방법 이 많 습 니 다. DecimalFormat 의 format () 과 apply Format () 방법 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.