티스토리 뷰
http://codeforces.com/problemset/problem/622/D
문제
$\displaystyle\sum_{i=1}^{n}{(n-i)\left|d_i+i-n\right|}$ 의 최소값이 되게하는 배열을 구하여라.
여기서, $d_i$는 배열 a에서 (i가 두 번째로 나타나는 위치) - (i가 첫 번쨰로 나타나는 위치)를 의미한다.
키포인트
곱해주는 값이 둘다 0보다 크거나 같은 양수이므로, 모든 항의 값을 0으로 만들 수 있는 방법에 대해 고민해본다.
1) i=n
0이다. 자명
2) i$\neq$n
뒤의 절댓값을 0으로 맞출 생각해보자. i<n이므로 i-n은 항상 음수이다. 따라서, $d_i$의 값을 n-i로 하면 0이 n-i+(i-n)을 하면 0이 되고, i-n<0이므로 n-i>0이다.
거리가 항상 0보다 커야한다는 것도 만족하므로 이를 기반으로 코드를 짜면 된다.
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <bits/stdc++.h> using namespace std; int main() { int n; scanf("%d",&n); vector<int> ans(2*n+10,-1); for(int i=1;i<=n;i++) { if(i%2) ans[2*n-i/2]=i,ans[2*n-i/2+i-n]=i; else ans[i/2]=i,ans[i/2+n-i]=i; } for(int i=1;i<=2*n;i++) printf("%d ",ans[i]==-1 ? i : ans[i]); return 0; } | cs |
'알고리즘' 카테고리의 다른 글
[ BOJ 1071 ] 소트 (0) | 2020.08.30 |
---|---|
[ BOJ 1941 ] 소문난 칠공주 (1) | 2018.12.20 |
[ 백준 5475, IOI 2007 Day 2 ] 광부들의 식사(Miners) (0) | 2018.07.10 |
[ 백준 5466, IOI 2009 Day 2 ] 상인 (SalesMan) (0) | 2018.07.10 |
[ 백준, IOI 2009 Day 1 ] 곰돌이 (2) | 2018.07.09 |
댓글
최근에 올라온 글
공지사항
- Total
- Today
- Yesterday
최근에 달린 댓글
링크
TAG
- 백준
- PMA Ch5
- JOI 2021
- 17411
- 해석학
- Trace trick
- Differentation
- joi
- 수(상)
- 로피탈
- cs231n assignment1
- 수학
- 해석학II
- Deep learning
- 연습문제
- LInear SVM
- 미분
- Machine Learning
- icpc.me/17411
- Trace tirck
- PMA
- Derivate
- 해석학 Chapter 5
- 해석학 Ch5
- PMA 연습문제
- 백준 17411
- Backprop
- mathematics
- 세그먼트 트리
- 선형대수학
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함