2018 '바 이 두 의 별' 프로 그래 밍 대회 - 퀄 리 파 잉 게임
됐어 요. 제 가 이렇게 오래 살 면서 문 제 를 안 쓰 면 요리 가 바 뀌 잖 아 요. 이런 문 제 를 이렇게 오래 썼 는데.
T1
이 문 제 는 처음 보 았 을 때 mb 얼굴 을 하고 데이터 범 위 를 보고 마음 이 놓 였 습 니 다. 부분 집합 을 써 서 매 거 진 제출 했 습 니 다. 하지만 주의해 야 할 것 은 마지막 으로 답 을 통계 할 때 모든 숫자 가 나타 나 는 횟수 를 두 번 곱 하고 다시 구 하 는 것 입 니 다.
#include
#include
#include
#include
using namespace std;
const int MAXN = 10000 + 5;
int n,m,k;
int all[MAXN];
bool solve(int jh) {
//TODO: init
int tmp[MAXN] = {0};
for(int i = 0;i < n;i ++) {
tmp[i] = all[i];
}
//TODO: make tmp by jh
for(int t = 0;t < m;t ++) {
if((jh >> t) & 1)
continue;
for(int i = 0;i < n;i ++)
tmp[i] |= (1 << t);
}
//TODO: unique
sort(tmp, tmp + n);
int l = 0,r = 0;
int tot = 0;
while(true) {
while(tmp[l] == tmp[r])
r ++;
if(r > n)
break;
tmp[tot ++] = r - l;
l = r;
}
//TODO: get ans
int ans = 0;
for(int i = 0;i < tot;i ++)
for(int j = i + 1;j < tot;j ++)
ans += tmp[i] * tmp[j];
return ans >= k;
}
int solve() {
int ans = 0;
for(int i = 0;i < (1 << m);i ++) {
ans += solve(i);
}
return ans;
}
int T;
int main() {
scanf("%d", &T);
for(int t = 1;t <= T;t ++) {
memset(all, 0, sizeof(all));
scanf("%d %d %d",&n, &m, &k);
for(int i = 0;i < n;i ++) {
for(int j = 0;j < m;j ++) {
char t = getchar();
while(!isalpha(t))
t = getchar();
if(t == 'A')
all[i] |= (1 << j);
}
}
printf("Case #%d: %d
", t,solve());
}
}
T2
emmmm T2 는 약간 구덩이 가 있 죠? 사전 순서 가 가장 작은 것 은 당연히 알파벳 입 니 다!그리고 접두사 26 개 랑... 잘 써 요.
#include
#include
#include
#include
using namespace std;
const int MAXN = 100000 + 5;
int T;
int sum[26][MAXN];
int n,q;
char c[MAXN];
int main()
{
scanf("%d",&T);
for(int t = 1;t <= T; t ++)
{
printf("Case #%d:
",t);
scanf("%d %d",&n,&q);
memset(sum,0,sizeof(sum));
for(int i = 1;i <= n;i ++)
{
c[i] = getchar();
while(!isalpha(c[i]))
c[i] = getchar();
}
for(int i = 1;i <= n;i ++)
sum[c[i] - 'A'][i] ++;
for(int j = 0;j < 26;j ++)
for(int i = 1;i <= n;i ++)
sum[j][i] += sum[j][i - 1];
int a,b;
while(q --)
{
scanf("%d %d",&a,&b);
for(int i = 0;i < 26;i ++)
if(sum[i][b] - sum[i][a - 1])
{
printf("%d
", sum[i][b] - sum[i][a - 1]);
break;
}
}
}
return 0;
}
T3
이것 은 이분 도 일치 합 니까?아니면 네트워크 흐름?모 르 겠 어 요. 문제 풀이 기다 리 는 거 아니 죠?
T4
치 료 를 포기 하고 문 제 를 해결 할 수 있 습 니까?
T5
T6
출석 체크 해 주세요......................................................................................
#include
#include
#include
#include
#include
using namespace std;
const int MAXN = 100000 + 5;
int n,m;
struct edge
{
int f,t,v;
char c;
bool operator < (const edge &b)const
{
return v < b.v;
}
}e[MAXN];
struct bcj
{
int fa[MAXN];
void init()
{
for(int i = 1;i <= n;i ++)
fa[i] = i;
return;
}
int find(int x)
{
return fa[x] == x ? x : fa[x] = find(fa[x]);
}
bool same(int x,int y)
{
return find(x) == find(y);
}
void merge(int x,int y)
{
x = find(x);
y = find(y);
fa[x] = y;
return;
}
}b;
int ans[MAXN],tmp[MAXN];
queue <int> q;
int kru()
{
int tot = 0,count = 0;
sort(e + 1, e + m + 1);
b.init();
while(!q.empty())
q.pop();
for(int i = 1;i <= m;i ++)
{
if(e[i].c != 'B' && !b.same(e[i].f, e[i].t))
{
tot += e[i].v;
count ++;
b.merge(e[i].f, e[i].t);
}
else
q.push(e[i].v);
}
return count == n - 1 ? tot : -1;
}
void tj()
{
int t = kru();
if(t == -1)
{
for(int i = 1;i <= m;i ++)
ans[i] = -1;
return;
}
for(int i = 1;i < n - 1;i ++)
ans[i] = -1;
ans[n - 1] = t;
for(int i = n;i <= m;i ++)
{
ans[i] = ans[i - 1] + q.front();
q.pop();
}
return;
}
void change(int x)
{
switch (e[x].c)
{
case 'B':e[x].c = 'R';break;
case 'R':e[x].c = 'B';break;
default:break;
}
return;
}
int really(int i)
{
if(ans[i] == -1)
return tmp[i];
if(tmp[i] == -1)
return ans[i];
return min(ans[i],tmp[i]);
}
int T;
int main()
{
scanf("%d",&T);
for(int t = 1;t <= T;t ++)
{
printf("Case #%d:
",t);
scanf("%d %d",&n,&m);
memset(tmp,0,sizeof(tmp));
memset(ans,0,sizeof(ans));
for(int i = 1;i <= m;i ++)
scanf("%d %d %d %c",&e[i].f, &e[i].t, &e[i].v, &e[i].c);
tj();
for(int i = 1;i <= m;i ++)
change(i);
for(int i = 1;i <= m;i ++)
tmp[i] = ans[i];
tj();
for(int i = 1;i <= m;i ++)
ans[i] = really(i);
for(int i = 1;i <= m;i ++)
printf("%d
",ans[i]);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[codevs 1080] 선분 수 연습 의 꽃 해법선분 트 리 템 플 릿 문제 먼저 폭력 을 행사 하 다 됐어. 아까 는 아니 야. 크 크................................................................ 응, 이게 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.