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

做网站有啥软件在线视频下载网站如何做

做网站有啥软件,在线视频下载网站如何做,网站的功能模块,一个网站交互怎么做的目录 D. Forbidden Difference E. Forbidden Prefix D. Forbidden Difference 与此题类似的是不相邻取数,区别在于不相邻取数针对的是下标,限定条件在下标上,不能够取相邻的下标。但此题的要求是在数值上,限定数值相差 d 的不能同…

目录

        D. Forbidden Difference

        E. Forbidden Prefix 


D. Forbidden Difference

        与此题类似的是不相邻取数,区别在于不相邻取数针对的是下标,限定条件在下标上,不能够取相邻的下标。但此题的要求是在数值上,限定数值相差 d 的不能同时取。因此 for 循环的变量就是数值。

        为了避免重复,第一层循环用来枚举首项,范围是 0 到 d - 1。实质上是把所有数模 d 分类。

        分好类之后,第二层循环从首项开始,依次加上 d。这是一个调和级数的复杂度,不会超时。

        此时的下标已经是具体数值,所以转移就会有 - d 和 - 2 * d 两种方式转移过来。

        关键的一个处理是,把题目中要求的最少删多少转化成最多选多少,就转化成了不相邻取数问题。这一类的思想很常见。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5 + 5, N2 = 1e6 + 5, INF = 1e18;int T, n, d, ans, a[N], cnt[N2], dp[N2];
set<int> se;signed main()
{cin >> n >> d;for (int i = 1; i <= n; i ++){cin >> a[i];se.insert(a[i]);cnt[a[i]] ++;}if (d == 0){cout << n - se.size();return 0;}int tot = 0;sort(a + 1, a + n + 1);for (int i = 0; i < d; i ++){int ed = i;for (int j = i; j <= a[n]; j += d){if (j == i)dp[j] = cnt[i];else if (j == i + d)dp[j] = max(cnt[i], cnt[j]);elsedp[j] = max(dp[j - d], dp[j - d - d] + cnt[j]);ed = j;}tot += dp[ed];}ans = n - tot;cout << ans;return 0;
}

E. Forbidden Prefix 

        字符串哈希:把字符串转成一个 int 型整数。和直接 map <string, int> 相比,大大优化时空复杂度。

        首先需要维护 x 集合中有哪些哈希值,也就是有哪些字符串前缀。因此用一个 set 来维护。

        对于 y 集合的操作,需要维护两个东西:

        (1)y 集合里有多少哈希值

        (2)y 集合现存的所有字符串,所有的前缀(每一个字符串的所有前缀)。同一个前缀可能同时有多个字符串拥有,因此还需要知道每一个前缀,有哪些字符串拥有。这样在 x 集合中插入一个字符串,只需要去 y 里面查找是否有拥有该前缀的字符串,如果有就全部删掉。

        维护第一个只需要一个 set,第二个用 map <int, set<int> >,键可以索引到哈希值,后面跟了一个 set 就是这个哈希值集合内的字符串编号。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 5, INF = 1e18;int T, n, opt;
string s;
set<int> xhs;	// x 集合中有哪些 hs 值
set<int> ans;	// y 集合
map<int, set<int> > mp; 	// 所有活着的前缀 hs 值对应的编号 id int geths(string s)
{int hs = 0;for (int i = 0; i < s.size(); i ++)hs = hs * 131 + s[i];return hs;
}signed main()
{cin >> n;for (int i = 1; i <= n; i ++){cin >> opt >> s;if (opt == 1){int hs = geths(s);if (mp.count(hs) != 0){for (auto id : mp[hs])if (ans.find(id) != ans.end())ans.erase(id);mp[hs].clear();}xhs.insert(hs);cout << ans.size() << '\n';}else{int hs = 0, p = 0;for (auto ch : s){hs = hs * 131 + ch;if (xhs.find(hs) != xhs.end()){p = 1;break;}mp[hs].insert(i);}if (p == 0)ans.insert(i);cout << ans.size() << '\n';}}return 0;
}

文章转载自:

http://BXAStkxg.mbpzw.cn
http://WM0wA94e.mbpzw.cn
http://9WbAphou.mbpzw.cn
http://ltuYqftB.mbpzw.cn
http://iAA6sHly.mbpzw.cn
http://fkodkvee.mbpzw.cn
http://FFMWQcWe.mbpzw.cn
http://ZxTV20nw.mbpzw.cn
http://QKel7t0C.mbpzw.cn
http://EOt0gdoP.mbpzw.cn
http://uIVnotVq.mbpzw.cn
http://00NVsVLw.mbpzw.cn
http://Qq4wiCzV.mbpzw.cn
http://hN3R0i7Y.mbpzw.cn
http://W7cyEFFx.mbpzw.cn
http://fpApMmUr.mbpzw.cn
http://QC2Ze6Zc.mbpzw.cn
http://Ii23xHnt.mbpzw.cn
http://GYXZDAFi.mbpzw.cn
http://iy0Wi1RI.mbpzw.cn
http://Mp1r5h6H.mbpzw.cn
http://JpAbPgCP.mbpzw.cn
http://Wf4rf3eA.mbpzw.cn
http://wgjL0vxq.mbpzw.cn
http://mN2FmpuP.mbpzw.cn
http://qHIswgik.mbpzw.cn
http://zwmAJdPG.mbpzw.cn
http://lg9Z2LUF.mbpzw.cn
http://gsq0MA4N.mbpzw.cn
http://LPRwzC7o.mbpzw.cn
http://www.dtcms.com/wzjs/766304.html

相关文章:

  • 西安企业门户网站建设怎么制作游戏修改器
  • 青海建设局网站大兴58网站起名网站制作
  • 湖北建站哪个网站可以学做包子
  • 选择一个域名进行网站建设网络整合营销的含义
  • 零基础学做衣服的网站咨询公司简介
  • app推荐网站做网站不备案
  • 奉化网站建设网站点击推广
  • 潍坊品牌网站建设公司建协网官方网站
  • 做衬衫的网站怎么把平台推广出去
  • 新开网站做内贸业务员好做杭州建设工程信用平台
  • 男女做那个那个的视频网站创建公众号的步骤
  • 网站制作公司在哪里找国外营销型网站设计
  • aspcms网站栏目调用公司做网站多少钱
  • 养殖网站模版中时讯通信建设有限公司网站
  • 网站建设合同是否属于技术服务合同wap和网页的区别
  • 网站建设观点一卡2卡三卡4卡入口天堂
  • 有凡客模版怎么建设网站视频号下载软件免费
  • 免费微网站与公众号平台对接汽车网站和移动端建设方案
  • 高端网站开发设计北京icp网站备案
  • 广州皮具网站建设wordpress 模特模板
  • 中山市城乡和住房建设局网站网络营销咨询机构
  • 猪八戒网站找做微信小程序的公司logo设计logo
  • 台州网站开发外贸系统软件有哪些
  • qq在线网站代码生成网站建设人员岗位设置
  • 手机网站模板 织梦网站开发嫌工时长
  • 青岛旅游网站建设岳阳优化营商环境
  • 原创网站设计手机优化游戏性能的软件
  • wordpress适合大型网站吗浙江建设三类人员报名网站
  • 做众筹网站怎么赚钱网站设计用的技术
  • 直播网站建设费用网店运营推广中级实训