Submission #879653

#TimeUsernameProblemLanguageResultExecution timeMemory
879653mychecksedadLet's Win the Election (JOI22_ho_t3)C++17
0 / 100
1060 ms1048580 KiB
/* Author : Mychecksdead */ #include<bits/stdc++.h> using namespace std; #define ll long long int #define MOD (1000000000+7) #define MOD1 (998244353) #define pb push_back #define all(x) x.begin(), x.end() #define en cout << '\n' const int N = 500+100, M = 1e5+10, K = 52, MX = 30; int n, k, sum[N][N]; array<int, 2> a[N]; double dp[N][N][N]; void solve(){ cin >> n >> k; for(int i = 1; i <= n; ++i){ cin >> a[i][1] >> a[i][0]; if(a[i][0] == -1) a[i][0] = MOD; } sort(a+1, a+1+n); for(int j = 0; j <= n; ++j) sum[n+1][j] = 0; for(int i = n; i >= 1; --i){ for(int j = 0; j < n - i + 1; ++j){ sum[i][j] = min(sum[i + 1][j], j == 0 ? MOD : sum[i + 1][j - 1] + a[i][1]); } sum[i][n - i + 1] = sum[i + 1][n - i] + a[i][1]; } double ans = sum[1][k]; for(int i = 0; i <= n; ++i) for(int j = 0; j <= n; ++j) for(int l = 0; l <= n; ++l) dp[i][j][l] = MOD; for(int i = 1; i <= n; ++i) dp[0][0][i] = 0; for(int l = 1; l <= k; ++l){ // collabnum for(int i = 1; i <= k; ++i){ if(a[i][0] == MOD) break; dp[i][0][l] = dp[i - 1][0][l] + a[i][1]; for(int j = 1; j <= min(i, l); ++j){ dp[i][j][l] = min(dp[i - 1][j][l] + a[i][1] / (double) (j+1), dp[i - 1][j - 1][l] + a[i][0] / (double) j); } } for(int i = 1; i <= k; ++i) ans = min(ans, dp[i][l][l] + sum[i + 1][k - i] / (double) (l + 1)); } // for(int i = 1; i <= n; ++i){ // for(int j = 0; j <= i; ++j) cout << dp[i][j].first << ' ' << dp[i][j].second << " | "; // en; // } cout << fixed << setprecision(15); cout << ans; } int main(){ cin.tie(0); ios::sync_with_stdio(0); int tt = 1, aa; // freopen("in.txt", "r", stdin); // freopen("out.txt", "w", stdout); while(tt--){ solve(); en; } cerr<<"time taken : "<<(float)clock()/CLOCKS_PER_SEC<<" seconds\n"; return 0; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:64:15: warning: unused variable 'aa' [-Wunused-variable]
   64 |   int tt = 1, aa;
      |               ^~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...