티스토리 뷰
반응형
solved.ac 티어 : 골드 1
5676번: 음주 코딩
각 테스트 케이스마다 곱셈 명령의 결과를 한 줄에 모두 출력하면 된다. 출력하는 i번째 문자는 i번째 곱셈 명령의 결과이다. 양수인 경우에는 +, 음수인 경우에는 -, 영인 경우에는 0을 출력한다.
www.acmicpc.net
문제를 보면 바로 구간 곱이라는 것을 알 수 있다 하지만 구간 곱을 구현한 뒤 제출하면 시간 초과를 받는다.
이유는 값이 너무 커져서 그런것인데 어차피 값을 원하는 게 아니라 부호만 알면 되는 거기 때문에 음수일 경우 -1을 곱하고 양수일 경우 1, 0일 경우 0을 곱해주면 된다. 출력에서도 구간 곱이 양수면 +, 음수면 -,0이면 0을 출력해주면 된다.
#include <bits/stdc++.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
typedef long long ll;
vector<long long>l(1000001);
ll seg(vector<long long>&tree,ll n,ll s,ll e){
if(s==e){
if(l[s]==0)return tree[n]=0;
else if(l[s]>0)return tree[n]=1;
else return tree[n]=-1;
}
return tree[n]=seg(tree,n*2,s,(s+e)/2)*seg(tree,n*2+1,(s+e)/2+1,e);
}
ll max1(vector<long long>&tree,ll n,ll s,ll e,ll left,ll right){
if(left>e||right<s){return 1;}
if(left<=s&&e<=right){return tree[n];}
return max1(tree,n*2,s,(s+e)/2,left,right)*max1(tree,n*2+1,(s+e)/2+1,e,left,right);
}
ll change(vector<long long>&tree,ll n,ll s,ll e,ll i,ll f){
if(i<s||i>e){return tree[n];}
if(s==e){
if(f==0)return tree[n]=0;
else if(f>0)return tree[n]=1;
else return tree[n]=-1;
}
return tree[n]=change(tree,n*2,s,(s+e)/2,i,f)*change(tree,n*2+1,(s+e)/2+1,e,i,f);
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
ll a,b,c,d,q,k,gh,av;
//for(int iii=0;iii<4;iii++){
while(1){
cin >> a >> b;
if(cin.eof() == true)break;
int h=(int)ceil(log2(a));
int tree_size=(1<<(h+1)),i;
vector<long long>tree(tree_size);
for(i=0;i<a;i++){cin >> l[i];}
seg(tree,1,0,a-1);
for(i=0;i<b;i++){
char asd;
cin >> asd;
if(asd=='C'){
cin >> c >> d;
change(tree,1,0,a-1,c-1,d);
}else{
cin >> c >> d;
av=max1(tree,1,0,a-1,c-1,d-1);
if(av==0)cout << '0';
else if(av>0)cout << '+';
else cout << '-';
}
}
cout << '\n';
}
}
반응형
'ps' 카테고리의 다른 글
BOJ 12784(인하니카 공화국)풀이 (0) | 2021.07.05 |
---|---|
BOJ 8893(사냥꾼)풀이 (0) | 2021.07.02 |
BOJ 2146(다리 만들기)풀이 (1) | 2021.05.02 |
BOJ 11657(타임머신)풀이 (1) | 2021.05.01 |
BOJ 1967(트리의 지름)풀이 (0) | 2021.04.29 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- codeforces
- 그래프 탐색
- 다이나믹 프로그래밍
- 트리에서의 다이나믹 프로그래밍
- 그래프 이론
- C++
- 알고리즘
- BOJ
- discord bot
- 세그먼트 트리
- 그리디 알고리즘
- 완전 탐색
- 깊이 우선 탐색
- 선분 교차 판정
- KOI
- 개발
- 이분매칭
- 자료구조
- 트리
- Python
- 수학
- 이분 탐색
- 잡봇
- 구현
- 정렬
- 자료 구조
- 최소 스패닝 트리
- 느리게 갱신되는 세그먼트 트리
- A Dance of Fire and Ice
- 누적 합
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함