Codeforces 455A динамическое программирование
Ребята я новичок в конкурентном программировании я решал одну задачуhttps://codeforces.com/problemset/problem/455/A Я взял решение и попробовал его понять ,я понимаю это хорошо ,но у меня есть небольшое сомнение
#include<bits/stdc++.h> using namespace std; #define MAX 100005 long long dp[100005]; long long count1[100005]; int main(){ int n,x; cin>>n; for(int i=0;i<n;i++){ cin >> x; count1[x]++; // res=max(res,x); } dp[0]=0; dp[1]=count1[1]; for(int i=2;i<MAX;i++){ dp[i]=max(dp[i-1],dp[i-2]+i*count1[i]); } cout<<dp[MAX-1]; }
Что я уже пробовал:
НО КАК ВЫ МОЖЕТЕ ВИДЕТЬ ,ЧТО ЦИКЛ РАБОТАЕТ MAX(100005) ДАЖЕ ДЛЯ НЕБОЛЬШИХ ТЕСТОВЫХ СЛУЧАЕВ, КОГДА Я ПЫТАЮСЬ ОПТИМИЗИРОВАТЬ, ЧТО Я ПРИДУМАЛ РЕШЕНИЕ
#include<bits/stdc++.h> using namespace std; int main(){ long long dp[100005]; long long count1[100005]; int n; cin>>n; int x; int res=-100000; for(int i=0;i<n;i++){ cin >> x; count1[x]++; res=max(res,x); } dp[0]=0; dp[1]=count1[1]; for(int i=2;i<=res;i++){ dp[i]=max(dp[i-1],dp[i-2]+i*count1[i]); } cout<< dp[res]; }
НО ЭТО ДАЕТ НЕПРАВИЛЬНЫЙ ОТВЕТ НА ТЕСТОВЫЙ СЛУЧАЙ 12 https://codeforces.com/contest/455/submission/47841668
Может ли кто-нибудь сказать мне, где я совершил ошибку ? Почему этот конкурентоспособный программист допускает такую ошибку, это нормально?
Richard MacCutchan
1. Пожалуйста, не кричите: использование верхнего регистра считается криком.
2. В чем собственно проблема с вашим кодом?
Rick York
Лучше всего использовать отладчик в случае сбоя.