当前位置: 首页 > wzjs >正文

国内信息图制作网站网站建设及网络推广

国内信息图制作网站,网站建设及网络推广,郑州网站建设的公司哪家好,百度爱采购网站G. 收集 由于稀有度相同的物品需要一起处理&#xff0c;我们先把他们聚集到一起。 类似这样&#xff1a; vector<int> g[maxn]; ... {cin >> x >> c;g[c].push_back(x); }那么我们需要一个贪心的思路&#xff1a; 肯定是按 c c c 从小往大收集的&#xf…

G. 收集

由于稀有度相同的物品需要一起处理,我们先把他们聚集到一起。
类似这样:

vector<int> g[maxn];
...
{cin >> x >> c;g[c].push_back(x);
}

那么我们需要一个贪心的思路:

  • 肯定是按 c c c 从小往大收集的;
  • 对于相同的 c c c 收集完最后一个肯定是要么停留最左边要么停留在最右边

故设 d p ( i , 0 ) dp(i,0) dp(i,0) 表示收集完稀有度为 i i i 的物品后停留在最左边, d p ( i , 1 ) dp(i,1) dp(i,1) 则表示停留在最右边。

对于转移,则是讨论一下:

  • 收集完第 i − 1 i-1 i1 层的物品后,在最左边还是最右边,将来要停留在这一层的最左边还是最右边,即 d p ( i − 1 , 0 / 1 ) dp(i-1,0/1) dp(i1,0/1) 转移到 d p ( i , 0 / 1 ) dp(i,0/1) dp(i,0/1)

注意的是,可能存在某一层是没有物品的,而下一层是有物品的,需要存储上一层的 c,设其为 pre。则状态转移使用 d p [ p r e ] [ ] dp[pre][] dp[pre][] 而不是 d p [ i − 1 ] [ ] dp[i-1][] dp[i1][]

#include <bits/stdc++.h>
using namespace std;
#define ll long longll a[200010][2], x;
ll dp[200010][2]; // dp[i][0]: 从小到大走;dp[i][1]:从大往小走
bool vis[200010];
int main() {int n, c;cin >> n;for (int i = 1; i <= n; ++i) {a[i][0] = INT_MAX; // c == i 的位置最小值a[i][1] = INT_MIN; // c == i 的位置最大值}for (int i = 1; i <= n; ++i) {cin >> x >> c;a[c][0] = min(a[c][0], x);a[c][1] = max(a[c][1], x);vis[c] = 1;}int p = 0; // 前一个 cvis[n + 1] = 1; // 最后一层回到位置 0, a[n+1][0] = a[n+1][1] = 0for (int i = 1; i <= n + 1; ++i) {if (!vis[i]) continue;for (int j = 0; j < 2; ++j) {dp[i][j] = min(abs(a[p][0] - a[i][j]) + dp[p][1], abs(a[p][1] - a[i][j]) + dp[p][0]) + a[i][1] - a[i][0]; }p = i;}cout << dp[n + 1][0] << endl;return 0;
}

H. 选择

对于每一个 i i i,我们考虑让 a i a_i ai b i b_i bi 之间建一条边,则这些边之间形成了若干个环
则原问题等价于对于每个环,任意两条相邻的边至少选一条,不同的环之间没有限制
dp 算出每个环选点的方案数,然后再乘起来,就是总的方案数

  • 相信大家都会做一排物品,相邻两件至少选一件,求方案数记作 f[i]

  • 现在处理环记作 g[i],将下面两个方案相加

    • 最后一个不选:f[i-3]
    • 最后一个选:f[i-1]

可以先递推计算 f,再递推计算 'g'

也可以整理得到: g[i] = f[i-3] + f[i-1] = (f[i-4]+f[i-5]) + (f[i-2]+f[i-3]) = (f[i-2]+f[i-4]) + (f[i-3]+f[i-5]) = g[i-1] + g[i-2]

#include <bits/stdc++.h>
using namespace std;using ll = long long;
const ll M = 998244353;
const int maxn = 2e5 + 10;// 相邻的数至少选一个
// 线性:f[i] = f[i-2] + f[i-1]
// 环形:g[i] = f[i-3] + f[i-1] --> g[i] = g[i-1] + g[i-2]
ll g[maxn];
int a[maxn], bi, nxt[maxn];
bool vis[maxn];
int main() {g[1] = 1, g[2] = 3;for (int i = 3; i < maxn; ++i) {g[i] = (g[i - 1] + g[i - 2]) % M;}int n, x, b;cin >> n;for (int i = 1; i <= n; ++i) cin >> a[i];for (int i = 1; i <= n; ++i) {cin >> bi;nxt[a[i]] = bi;}ll res = 1;for (int i = 1; i <= n; ++i) {if (!vis[i]) {int p = i, cnt = 0;while (!vis[p]) {vis[p] = 1, ++cnt;p = nxt[p];}res = res * g[cnt] % M;}}cout << res << endl;return 0;
}
http://www.dtcms.com/wzjs/205396.html

相关文章:

  • 动画视频制作关键词优化需要从哪些方面开展?
  • 网站规划与建设类毕业论文怎么写宁波网站推广专业服务
  • 怎么做网站里面的模块郑州做网站公司排名
  • 网站备案流程核验单抖音广告投放代理商
  • 网站的反链怎么做关键词挖掘网站
  • 网站建设的基本步骤有哪些网站seo推广员招聘
  • 商城网站 前置审批专业seo优化推广
  • 保定中小企业网站制作站长工具百度
  • 简单房地产网站在哪湖南疫情最新情况
  • wordpress初级教程黑帽seo是作弊手法
  • 企业网站怎样做可以搜索到企业网站seo哪里好
  • 哪个网站做黄金交易最好网络营销做得好的企业有哪些
  • 做网站是怎样赚钱的网站制作 网站建设
  • 昆明做凡科网站免费的精准引流软件
  • 沭阳那家做网站的seo推广软件代理
  • 电子建设网站的目的seo网站排名软件
  • 宁波高端网站制作公司优化设计六年级上册语文答案
  • 潮州建设网站广点通广告投放平台
  • 北京商地网站建设公司自己如何制作一个网页
  • 帝国cms做淘宝客网站厦门网站优化公司
  • wordpress整站搬家沈阳网站制作公司
  • 网页设计与网站建设ppt南京关键词优化软件
  • 网站建设职责要求百度官方优化指南
  • 顶做抱枕网站中文域名注册管理中心
  • wordpress配置文件如何修改seo优化网站快速排名
  • python 做网站教程网站模板源码
  • 网站建设和优司怎么样互联网营销推广方案
  • 怎样通过阿里巴巴网站开发客户怎么注册百度账号
  • 文化传媒建设网站个人怎么在百度上做推广
  • 洛阳网站建设太原seo排名优化软件