[NOIP2016]蚯蚓
生活随笔
收集整理的這篇文章主要介紹了
[NOIP2016]蚯蚓
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
我在做的時(shí)候一直在想用怎么解決這個(gè)延遲修改的問題,然后沒有解決。一直在用最暴力的工具在寫,非常麻煩。實(shí)際上這題還需要一些額外的信息來幫助我們解題。這里通過模擬應(yīng)該能發(fā)現(xiàn)單調(diào)性,然后可以就可以利用單調(diào)性優(yōu)化時(shí)間復(fù)雜度
// Problem: [NOIP2016]蚯蚓 // Contest: NowCoder // URL: https://ac.nowcoder.com/acm/contest/22669/J // Memory Limit: 1048576 MB // Time Limit: 2000 ms // 2022-06-15 14:09:05 // // Powered by CP Editor (https://cpeditor.org)#include<bits/stdc++.h> using namespace std;#define rep(i,l,r) for(int i=(l);i<=(r);i++) #define per(i,l,r) for(int i=(l);i>=(r);i--) #define ll long long #define mset(s,t) memset(s,t,sizeof(t)) #define mcpy(s,t) memcpy(s,t,sizeof(t)) #define fi first #define se second #define pb push_back #define all(x) (x).begin(),(x).end() #define SZ(x) ((int)(x).size()) #define mp make_pairtypedef pair<int, int> pii; typedef pair<ll, ll> pll; typedef vector<int> vi; typedef vector<ll> Vll; typedef vector<pair<int, int> > vpii; typedef vector<pair<ll, ll> > vpll; const ll mod = 1e9 + 7; //const ll mod = 998244353; const double pi = acos(-1.0); inline ll ksc(ll x,ll y,ll mod) {ll ans = 0;while (y) {if (y & 1)ans = (ans + x) %mod;y >>= 1;x = (x + x) %mod;}return ans; } inline ll qmi (ll a, ll b) {ll ans = 1;while (b) {if (b & 1) ans = ans * a;a = a * a;b >>= 1;}return ans; } inline int read () {int x = 0, f = 0;char ch = getchar();while (!isdigit(ch)) f |= (ch=='-'),ch= getchar();while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();return f?-x:x; } template<typename T> void print(T x) {if (x < 0) putchar('-'), x = -x;if (x >= 10) print(x/10);putchar(x % 10 + '0'); } inline ll sub (ll a, ll b) {return ((a - b ) %mod + mod) %mod; } inline ll add (ll a, ll b) {return (a + b) %mod; } // inline ll inv (ll a) {// return qmi(a, mod - 2); // } #define int long longint n, m, q, u, v, each; queue<int> q1, q2; priority_queue<int> pq; const int NN = 0x3f3f3f3f3f3f3f3f;void solve() {} signed main () {ios::sync_with_stdio(0),cin.tie(0), cout.tie(0);cin >> n >>m >> q>> u >> v >> each;for (int i = 1; i<= n; i ++) {int x;cin >> x;pq.push(x);}int delta = 0;bool f = 0;for (int i = 1; i <= m; i ++) {int maxv = -NN, id = 0;if (pq.size() && pq.top() > maxv) {maxv = pq.top();id = 0;}if (q1.size() && q1.front() >maxv) {maxv = q1.front();id = 1;}if (q2.size() && q2.front() > maxv) {maxv = q2.front();id = 2; } if (id == 0) pq.pop();else if (id == 1) q1.pop();else q2.pop();maxv += delta;q1.push(maxv * u / v - delta - q);q2.push(maxv - maxv * u / v - delta - q);delta += q;if (i % each == 0){printf("%lld ", maxv);f = 1;}} puts("");f = 0;for (int i = 1; i <= m + n; i ++) {int maxv = -NN, id = 0;if (pq.size() && pq.top() > maxv) {maxv = pq.top();id = 0;}if (q1.size() && q1.front() >maxv) {maxv = q1.front();id = 1;}if (q2.size() && q2.front() > maxv) {maxv = q2.front();id = 2; } if (id == 0) pq.pop();else if (id == 1) q1.pop();else q2.pop();if (i % each == 0){printf("%lld ", maxv + delta);f = 1;}}puts("");return 0; }總結(jié)
以上是生活随笔為你收集整理的[NOIP2016]蚯蚓的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7-301 sdut- C语言实验-数组
- 下一篇: 让我摘下星星送给你_有一首歌,歌词是,摘