제출 #912704

#제출 시각아이디문제언어결과실행 시간메모리
912704TaresuKnapsack (NOI18_knapsack)C++11
100 / 100
72 ms5212 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define INF 0x7fffffff #define MINF -0x7fffffff #define pb push_back #define sz(a) a.size() #define mod 998244353 #define MOD 1000000007 #define f first #define s second #define sortv(a) sort(a.begin(), a.end()) #define rsortv(a) sort(a.rbegin(), a.rend()) #define ins insert #define fr(i, a) for(int i=0;i<a;i++) #define mem0(a) memset(a, 0, sizeof(a)) #define mem1(a) memset(a, 1, sizeof(a)) #define mem_1(a) memset(a, -1, sizeof(a)) #define memI(a) memset(a, INF, sizeof(a)) #define formap(it, a) for(map<int, int>::iterator it=a.begin();it!=a.end();it++) #define forset(it, a) for(unordered_set<int>::iterator it=a.begin();it!=a.end();it++) #define formset(it, a) for(multiset<int>::iterator it=a.begin();it!=a.end();it++) using namespace std; using namespace __gnu_pbds; typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>ordered_set; typedef long long int ll; typedef pair<ll, ll> pii; typedef pair<int, pair<int, int> > pipii; typedef priority_queue<pii> pqueue; ll gcd(ll a, ll b){ return b==0 ? a : gcd(b, a%b); } ll lcm(ll a, ll b){ return (a*b)/gcd(a, b); } ll fexp(ll b, ll e, ll m){ if(e==0) return 1; if(e==1) return b%m; ll h=fexp(b, e/2, m); if(e%2==0){ return (h*h)%m; }else{ return (((h*h)%m)*b)%m; } } ll inv(ll x, ll m){ if (x <= 1) { return x; } return m-m/x*inv(m % x, m)%m; } void irr(ll *a, ll *b){ //deixar primos entre si ll gc=gcd(*a, *b); *a/=gc; *b/=gc; } ll divmod(ll num, ll den, ll m){ return (num*fexp(den, m-2, m))%m; } void read(vector<int> &V){ int a; cin >> a; V.pb(a); } ///////////////SOLVE ////////////////////////////////// /////////////////////// ll dp[2][2020]; pqueue weight[2002]; vector<int> w; vector<int> v; void solve(){ mem0(dp); int S, n; cin >> S >> n; fr(i, n){ int a, b, c; cin >> a >> b >> c; weight[b].push({a, c}); } fr(i, S){ int j=0; while(j<=S/(i+1) && !weight[i+1].empty()){ int times=weight[i+1].top().s; int val=weight[i+1].top().f; weight[i+1].pop(); while(j<=S/(i+1) && times){ w.pb(i+1); v.pb(val); j++; times--; } } } fr(i, sz(w)){ int at=(i+1)%2; int ls=!at; fr(j, S+1){ dp[at][j]=max(dp[ls][j], dp[at][j]); if(j-w[i]>=0){ dp[at][j]=max(dp[at][j], dp[ls][j-w[i]]+v[i]); } } } cout << dp[sz(w)%2][S] << '\n'; } ///////////////SOLVE ////////////////////////////////// //////////////////////// int main(){ ios::sync_with_stdio(0); cin.tie(0); /*/freopen("cbarn2.in","r",stdin); freopen("cbarn2.out","w",stdout);/**/ int t=1; //cin >> t; while(t--){ solve(); } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

knapsack.cpp:132:39: warning: "/*" within comment [-Wcomment]
  132 |      freopen("cbarn2.out","w",stdout);/**/
      |                                        
knapsack.cpp: In function 'void solve()':
knapsack.cpp:17:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   17 |     #define fr(i, a) for(int i=0;i<a;i++)
      |                                   ^
knapsack.cpp:110:9: note: in expansion of macro 'fr'
  110 |         fr(i, sz(w)){
      |         ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...