Diff
checker
텍스트
텍스트
이미지
문서
Excel
폴더
Legal
Enterprise
데스크톱
요금제
로그인
데스크톱 앱 다운로드
텍스트 비교
두 텍스트 파일의 차이점을 찾아보세요
도구
기록
실시간 편집
변경 없는 행 숨기기
줄바꿈 비활성화
레이아웃
나란히 보기
합쳐 보기
비교 단위
스마트
단어
글자
구문 강조
언어 선택
제외
텍스트 변환
첫 변경으로
수정
Diffchecker Desktop
가장 안전하게 Diffchecker를 사용하는 방법. 데스크톱 앱을 사용하면 비교 데이터가 외부로 전송되지 않습니다!
데스크톱 앱 받기
Untitled diff
생성일
8년 전
비교 결과 만료 없음
초기화
내보내기
공유
설명
1 삭제
행
총
삭제
글자
총
삭제
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
62 행
복사
1 추가
행
총
추가
글자
총
추가
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
62 행
복사
#include<bits/stdc++.h>
#include<bits/stdc++.h>
using namespace std;
using namespace std;
#define MOD 1000000007LL
#define MOD 1000000007LL
#define M 1
#define M 1
#define X first
#define X first
#define Y second
#define Y second
typedef long long ll;
typedef long long ll;
typedef pair< int, int >pii;
typedef pair< int, int >pii;
typedef pair< ll , ll >pll;
typedef pair< ll , ll >pll;
ll one = 1LL;
ll one = 1LL;
ll c[39];
ll c[39];
ll n;
ll n;
ll cst(ll msk)
ll cst(ll msk)
{
{
ll rt = 0;
ll rt = 0;
for (ll i = 0; i < 31; i++) {
for (ll i = 0; i < 31; i++) {
if (msk&(one<<i)) {
if (msk&(one<<i)) {
if (i < n) rt += c[i];
if (i < n) rt += c[i];
else rt += (c[n-1] << (i-n+1));
else rt += (c[n-1] << (i-n+1));
}
}
}
}
//cout << "cost for " << msk << " -> " << rt << endl;
//cout << "cost for " << msk << " -> " << rt << endl;
return rt;
return rt;
}
}
int main()
int main()
{
{
std::ios::sync_with_stdio(false);
std::ios::sync_with_stdio(false);
ll L;
ll L;
cin >> n >> L;
cin >> n >> L;
for (ll i = 0; i < n; i++) cin >> c[i];
for (ll i = 0; i < n; i++) cin >> c[i];
for (ll i = 1; i < n; i++) {
for (ll i = 1; i < n; i++) {
c[i] = min(c[i], c[i-1]*2);
c[i] = min(c[i], c[i-1]*2);
//cout << "c[" << i << "] = " << c[i] << endl;
//cout << "c[" << i << "] = " << c[i] << endl;
}
}
ll ans = cst(L);
ll ans = cst(L);
while (true) {
while (true) {
ll i;
ll i;
for (i = 0; (L&(one<<i))==0 ; i++);
for (i = 0; (L&(one<<i))==0 ; i++);
복사
복사됨
복사
복사됨
if (i >
n
) break;
if (i >
30
) break;
ans = min(ans, cst(L));
ans = min(ans, cst(L));
for ( ; (L&(one<<i)); i++) {
for ( ; (L&(one<<i)); i++) {
L ^= (one<<i);
L ^= (one<<i);
}
}
L ^= (one<<i);
L ^= (one<<i);
}
}
cout << ans << endl;
cout << ans << endl;
return 0;
return 0;
}
}
저장된 비교 결과
원본
파일 열기
#include<bits/stdc++.h> using namespace std; #define MOD 1000000007LL #define M 1 #define X first #define Y second typedef long long ll; typedef pair< int, int >pii; typedef pair< ll , ll >pll; ll one = 1LL; ll c[39]; ll n; ll cst(ll msk) { ll rt = 0; for (ll i = 0; i < 31; i++) { if (msk&(one<<i)) { if (i < n) rt += c[i]; else rt += (c[n-1] << (i-n+1)); } } //cout << "cost for " << msk << " -> " << rt << endl; return rt; } int main() { std::ios::sync_with_stdio(false); ll L; cin >> n >> L; for (ll i = 0; i < n; i++) cin >> c[i]; for (ll i = 1; i < n; i++) { c[i] = min(c[i], c[i-1]*2); //cout << "c[" << i << "] = " << c[i] << endl; } ll ans = cst(L); while (true) { ll i; for (i = 0; (L&(one<<i))==0 ; i++); if (i > n) break; ans = min(ans, cst(L)); for ( ; (L&(one<<i)); i++) { L ^= (one<<i); } L ^= (one<<i); } cout << ans << endl; return 0; }
수정본
파일 열기
#include<bits/stdc++.h> using namespace std; #define MOD 1000000007LL #define M 1 #define X first #define Y second typedef long long ll; typedef pair< int, int >pii; typedef pair< ll , ll >pll; ll one = 1LL; ll c[39]; ll n; ll cst(ll msk) { ll rt = 0; for (ll i = 0; i < 31; i++) { if (msk&(one<<i)) { if (i < n) rt += c[i]; else rt += (c[n-1] << (i-n+1)); } } //cout << "cost for " << msk << " -> " << rt << endl; return rt; } int main() { std::ios::sync_with_stdio(false); ll L; cin >> n >> L; for (ll i = 0; i < n; i++) cin >> c[i]; for (ll i = 1; i < n; i++) { c[i] = min(c[i], c[i-1]*2); //cout << "c[" << i << "] = " << c[i] << endl; } ll ans = cst(L); while (true) { ll i; for (i = 0; (L&(one<<i))==0 ; i++); if (i > 30) break; ans = min(ans, cst(L)); for ( ; (L&(one<<i)); i++) { L ^= (one<<i); } L ^= (one<<i); } cout << ans << endl; return 0; }
비교하기