백준(5)
-
BOJ 15663 : N과 M (9)
이 문제는 n,m 범위가 엄청 작기에 백트래킹으러 풀 수 있다. 중복 수열 처리는 STL set의 중복 제거 특징을 이용하여 처리할 수 있다. #include #define sanic ios_base::sync_with_stdio(0); #define MEM 1002 #define f first #define s second #define pb push_back #define all(v) v.begin(), v.end() using namespace std; typedef long long ll; typedef pair pii; const ll MOD = 1e9+7; ll n,m; vector v,z; int vis[MEM]; set ans; void bt(int cur, int d){ if(d==m){..
2020.06.02 -
BOJ 2240 : 자두나무
이 문제는 DP로 해결할 수 있다. dp[i][j][k] = i초에 j번 움직이고 k번 나무에 있을 때 최적해 로 두고 풀면 된다. #include #define sanic ios_base::sync_with_stdio(0); #define MEM 1002 #define f first #define s second using namespace std; typedef long long ll; typedef pair pii; const ll MOD = 1e9+7; ll t,n,m,ans; ll dp[MEM][MEM][3]; ll ja[MEM]; main() { sanic; cin.tie(0); cin >> n >> m; for(int i=1; i> ja[i]; for(int i=1; i
2020.06.01 -
BOJ 11505 : 구간 곱 구하기
우리는 세그먼트 트리를 이용하여 쉽게 구할 수 있다. 구간 합 세그트리를 구현 할 줄 안다면 쉽게 구현이 가능하다. #include #define sanic ios_base::sync_with_stdio(0); #define MEM 4000004 using namespace std; typedef long long ll; const ll MOD = 1e9+7; ll n,m,k; ll tree[MEM], a[MEM]; ll init(int idx, int l, int r){ if(l==r) return tree[idx] = a[l]; int mid=(l+r)/2; return tree[idx] = ((init(idx*2, l, mid)%MOD)*(init(idx*2+1, mid+1, r)%MOD))%MOD..
2020.05.31 -
BOJ 4375 : 1
문제에서 2 또는 5로 나누어 떨어지지 않는 정수만 주어진다 했으니 비둘기집 원리에 의해 항상 답이 존재함을 알 수 있다. 우리는 1을 붙이지 않고 나머지의 성질을 이용하여 풀 수 있다. => (a+b)%MOD = a%MOD + b%MOD => (a*b)%MOD = ((a%MOD)*(b%MOD))%MOD 이를 이용해 배수를 하나의 식을 통해 확인할 수 있다. => a = (a*10+1)%n a가 0일 때까지 저 식을 계산해준다. 답은 저 식을 계산해준 횟수이다. #include #define MEM 500 #define sanic ios_base::sync_with_stdio(0) using namespace std; typedef long long ll; const ll MOD = 1e9+7; ll t..
2020.05.31 -
BOJ 18244 : 변형 계단 수
은근 좋은 문제이다. 이 문제는 DP로 풀 수 있다. dp[i][j][k] = (i번째 자릿수에서 수가 j이고 현재 움직인 상태가 k일 때 (k=1,2,3,4,5) ); 여기서 k의 상태는 3일때를 기준으로 하여 감소하면 내려간 것, 증가하면 올라간 것으로 판단해준다. j = 1, 9일때는 증가 또는 감소만 하므로 예외 처리를 해주자. #include #define MEM 105 #define sanic ios_base::sync_with_stdio(0) using namespace std; typedef long long ll; typedef pair pi; const ll MOD = 1e9+7; ll dp[MEM][MEM][MEM]; ll n,ans; int main() { sanic; cin >> ..
2020.05.29