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

南宁党员两学一做网站拉新奖励的app排行

南宁党员两学一做网站,拉新奖励的app排行,wordpress 菜单插件,北京市教学名师奖建设项目网站目录 题目算法标签: 贪心, 二分, 动态规划, 树状数组思路不翻转原数组写法代码翻转原数组写法代码*警示后人 题目 P1020 [NOIP 1999 提高组] 导弹拦截 算法标签: 贪心, 二分, 动态规划, 树状数组 思路 因为洛谷对本题数据进行了加强, 因此需要更高效的做法, 第一问求的是最…

题目

P1020 [NOIP 1999 提高组] 导弹拦截

算法标签: 贪心, 二分, 动态规划, 树状数组

思路

因为洛谷对本题数据进行了加强, 因此需要更高效的做法, 第一问求的是最长不上升子序列, 可以使用树状数组维护前缀最大值求解, 第二问是贪心问题, 将每个导弹放到第一个大于等于该导弹高度的位置上, 如果不存在那么新创建一个系统, 可以发现每个系统的最后的高度是单调上升的, 因此可以二分求解, 算法时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn)

不翻转原数组写法代码

#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>using namespace std;const int N = 1e5 + 10;int tr[N];
vector<int> w, disc;int lowbit(int x) {return x & -x;
}void update(int u, int val) {for (int i = u; i < N; i += lowbit(i)) tr[i] = max(tr[i], val);
}int query(int u) {int res = 0;for (int i = u; i > 0; i -= lowbit(i)) res = max(res, tr[i]);return res;
}int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int val;while (cin >> val) w.push_back(val);disc = w;sort(disc.begin(), disc.end());disc.erase(unique(disc.begin(), disc.end()), disc.end());int res = 0;for (int i = 0; i < w.size(); ++i) {//因为树状数组下标从1开始 因此需要 + 1int idx = lower_bound(disc.begin(), disc.end(), w[i]) - disc.begin() + 1;idx = disc.size() - idx + 1;int curr = query(idx) + 1;update(idx, curr);res = max(res, curr);}vector<int> g;for (int num : w) {auto it = lower_bound(g.begin(), g.end(), num);if (it == g.end())  g.push_back(num);else *it = num;}cout << res << "\n" << g.size() << "\n";return 0;
}

翻转原数组写法代码

#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>using namespace std;const int N = 1e5 + 10;int tr[N];
vector<int> w, disc;int lowbit(int x) {return x & -x;
}void update(int u, int val) {for (int i = u; i < N; i += lowbit(i)) tr[i] = max(tr[i], val);
}int query(int u) {int res = 0;for (int i = u; i > 0; i -= lowbit(i)) res = max(res, tr[i]);return res;
}int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int val;while (cin >> val) w.push_back(val);disc = w;sort(disc.begin(), disc.end());disc.erase(unique(disc.begin(), disc.end()), disc.end());int res = 0;reverse(w.begin(), w.end());for (int i = 0; i < w.size(); ++i) {//因为树状数组下标从1开始 因此需要 + 1int idx = lower_bound(disc.begin(), disc.end(), w[i]) - disc.begin() + 1;int curr = query(idx) + 1;update(idx, curr);res = max(res, curr);}reverse(w.begin(), w.end());vector<int> g;for (int num : w) {auto it = lower_bound(g.begin(), g.end(), num);if (it == g.end())  g.push_back(num);else *it = num;}cout << res << "\n" << g.size() << "\n";return 0;
}

*警示后人

因为树状数组的下标是从 1 1 1开始的, 因此在进行下标映射的时候需要 + 1 + 1 +1, 然后因为数据范围很大需要对数进行离散化

http://www.dtcms.com/wzjs/413962.html

相关文章:

  • 做网站要买什么app推广多少钱一单
  • 泉州网站建设网站制作排名优化公司哪家好
  • 郏县住房和城乡建设局网站鹤壁网站seo
  • 湛江网站建设策划方案广州疫情最新新增
  • 织梦网站调整免费网站搭建
  • 官方网站建设账务处理seo按照搜索引擎的
  • 北京最新楼盘广告网站关键词怎样优化
  • 免费的高清视频素材网站市场营销培训
  • iframe 网站前台模板bt搜索引擎最好用的
  • 怎么做网络乞丐网站google chrome谷歌浏览器
  • 做网站可以用自己的主机宁宁网seo
  • 甘肃崇信县门户网站今日头条官网登录入口
  • 郑州市建设局官方网站爱站网综合查询
  • 郑州网站建设兼职谷歌广告联盟官网
  • 陕西城乡建设网百度搜索优化建议
  • 制作网站app网站主页
  • 商务网站开发论文网站seo视频狼雨seo教程
  • 优化网站排名怎么制作做网站需要什么条件
  • 下载爱南宁官方网站搭建网站的五大步骤
  • 医院网站建设平台公司网站策划宣传
  • 网赌网站国外空间内蒙古最新消息
  • 海口h5公司关键词优化的最佳方法
  • 如何创建自己公司网站竞价托管代运营公司
  • 沅江网站设计青岛seo青岛黑八网络最强
  • 怎么让人搜索到自己做的网站亚马逊站外推广网站
  • 做任务赚q币的网站知名网站排名
  • 5g空间大吗企业网站一手渠道推广平台
  • 罗湖做网站的公司哪家好百度交易平台
  • 找做课件的网站郑州网站排名优化公司
  • 免费的ps软件天津放心站内优化seo