这个比赛太难了,本渣自然zero,喊一嗓子,还是博客园的界面我比较喜欢。牛客网的博客界面有点奇怪
第一题:
遇到了一个用时最短的神仙代码:
不仅模板类,内联函数,宏定义,编译器加速,using关键字用了很多C11新特性,代码狂拽酷炫吊炸天,我觉得看完他我就无法完成我的每日一题任务了,所以先贴在这,至少保证隔一天看一下,先看一天试试,下一次是11/28看这个代码
#pragma GCC optimize("Ofast,unroll-loops,no-stack-protector,fast-math") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") #include <bits/stdc++.h> #define fi first #define se second #define endl "\n" using namespace std; using db = double; using ll = long long; using ull = unsigned long long; using pII = pair <int, int>; using pLL = pair <ll, ll>; constexpr int mod = 1e9 + 7; template <class T1, class T2> inline void chadd(T1 &x, T2 y) { x += y; while (x >= mod) x -= mod; while (x < 0) x += mod; } template <class T1, class T2> inline void chmax(T1 &x, T2 y) { if (x < y) x = y; } template <class T1, class T2> inline void chmin(T1 &x, T2 y) { if (x > y) x = y; } inline int rd() { int x; cin >> x; return x; } template <class T> inline void rd(T &x) { cin >> x; } template <class T> inline void rd(vector <T> &vec) { for (auto &it : vec) cin >> it; } #define dbg(x...) do { cout << "\033[32;1m" << #x << " -> "; err(x); } while (0) void err() { cout << "\033[39;0m" << endl; } template <class T, class... Ts> void err(const T& arg, const Ts&... args) { cout << arg << ' '; err(args...); } template <template<typename...> class T, typename t, typename... A> void err(const T <t> &arg, const A&... args) { for (auto &v : arg) cout << v << ' '; err(args...); } inline void pt() { cout << endl; } template <class T, class... Ts> void pt(const T& arg, const Ts&... args) { cout << arg << ' '; pt(args...); } template <template<typename...> class T, typename t, typename... A> void pt(const T <t> &arg, const A&... args) { for (auto &v : arg) cout << v << ' '; pt(args...); } ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; } inline ll qpow(ll base, ll n) { ll res = 1; while (n) { if (n & 1) res = res * base % mod; base = base * base % mod; n >>= 1; } return res; } //head constexpr int N = 8e2 + 10; int n, m, need, limit, a[N], p[N][N]; ll f[N][N]; void run() { for (int i = 1; i <= n; ++i) a[i] = rd(); for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { p[i][j] = rd(); if (j < limit) { p[i][j] += j * a[i]; } } } memset(f, 0x3f, sizeof f); f[0][0] = 0; for (int i = 1; i <= n; ++i) { for (int j = 0; j <= need; ++j) f[i][j] = f[i - 1][j]; for (int j = 1; j <= min(m, need); ++j) { for (int k = need; k >= j; --k) { chmin(f[i][k], f[i - 1][k - j] + p[i][j]); } } } pt(f[n][need]); } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cout << fixed << setprecision(20); while (cin >> n >> m >> need >> limit) run(); return 0; }