如何设计满足建行网站的电子商务需求?
摘要:建行网站网址,电子商务网站的设计要求包括,wordpress 所以文章,关于网站关停的申请E. 题意:n本书,每本书有颜色a[i],一次操作可以将其中一本书放在末尾,求满足:相同颜色的书都是相邻的 的最小操作次数. 显然最多只需要n次,考虑
建行网站网址,电子商务网站的设计要求包括,wordpress 所以文章,关于网站关停的申请E. 题意:n本书,每本书有颜色a[i],一次操作可以将其中一本书放在末尾,求满足:相同颜色的书都是相邻的 的最小操作次数.
显然最多只需要n次,考虑能节省多少次.倒着考虑,记f[i]为i~n最多能节约的次数.先预处理出每种颜色的出现的位置范围l[i],r[i].
1.不节约这本书f[i] f[i 1]…E. 题意:n本书,每本书有颜色a[i],一次操作可以将其中一本书放在末尾,求满足:相同颜色的书都是相邻的 的最小操作次数.
显然最多只需要n次,考虑能节省多少次.倒着考虑,记f[i]为i~n最多能节约的次数.先预处理出每种颜色的出现的位置范围l[i],r[i].
1.不节约这本书f[i] f[i 1]
2.if i l[a[i]], f[i] cnt[a[i]] f[r[a[i]]1]
3.if i ! l[a[i]], f[i] cnt[a[i]](位置i后的a[i]个数),为什么不加上f[r[a[i]]1]呢?首先这个转移必然不可能是最优的,肯定会被前面i l[a[i]]时替换掉,所以我们只考虑这部分被继承时的情况.如果被继承只有可能前面出现i l[a[i]],并且r[a[i]]i,那么f[i] cnt[a[i]] f[r[a[i]1]],此时我们保留a[i]和i以及i后面的a[i]不动,先将i前面i后面的a[i]移到末尾,再把其他与a[i],a[i]不同的数移到末尾即可.
#include bits/stdc.h
#define int long long
#define IOS ios::sync_with_stdio(false), cin.tie(0)
#define ll long long
// #define double long double
#define ull unsigned long long
#define PII pairint, int
#define PDI pairdouble, int
#define PDD pairdouble, double
#define debug(a) cout #a a endl
#define point(n) cout fixed setprecision(n)
#define all(x) (x).begin(), (x).end()
#define mem(x, y) memset((x), (y), sizeof(x))
#define lbt(x) (x (-x))
#define SZ(x) ((x).size())
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
// namespace nqio { const unsigned R 4e5, W 4e5; char* a, * b, i[R], o[W], * c o, * d o W, h[40], * p h, y; bool s; struct q { void r(char x) { x a b (b (a i) fread(i, 1, R, stdin), a b) ? -1 : *a; } void f() { fwrite(o, 1, c - o, stdout); c o; } ~q() { f(); }void w(char x) { *c x; if (c d) f(); } q operator (char x) { do r(x); while (x 32); return *this; } q operator (char* x) { do r(*x); while (*x 32); while (*x 32) r(*x); *x 0; return *this; } templatetypename t q operator(t x) { for (r(y), s 0; !isdigit(y); r(y)) s | y 45; if (s) for (x 0; isdigit(y); r(y)) x x * 10 - (y ^ 48); else for (x 0; isdigit(y); r(y)) x x * 10 (y ^ 48); return *this; } q operator (char x) { w(x); return *this; }q operator (char* x) { while (*x) w(*x); return *this; }q opera
