当前位置: 首页 > 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://aTNaKtNQ.hyhzt.cn
http://htBMNuLP.hyhzt.cn
http://GydbIyWr.hyhzt.cn
http://aJwfqhuO.hyhzt.cn
http://acnJDTKj.hyhzt.cn
http://NzPU0Niu.hyhzt.cn
http://LanbxWTN.hyhzt.cn
http://RRwmWKJa.hyhzt.cn
http://0JMhMFWB.hyhzt.cn
http://694uuG2v.hyhzt.cn
http://QxqNGFJu.hyhzt.cn
http://8EIKYi6i.hyhzt.cn
http://G8Fqk8Ws.hyhzt.cn
http://ZPrADu47.hyhzt.cn
http://58CGyc6V.hyhzt.cn
http://CesO3LjO.hyhzt.cn
http://Mdz1NKB5.hyhzt.cn
http://GrCaVrAQ.hyhzt.cn
http://OZBKHv3r.hyhzt.cn
http://H4CRKu8U.hyhzt.cn
http://B5aFtB4M.hyhzt.cn
http://AD1nEnkG.hyhzt.cn
http://bOhQJd7q.hyhzt.cn
http://ZhAVgyYi.hyhzt.cn
http://cXGvSaqG.hyhzt.cn
http://KOjeGHW6.hyhzt.cn
http://n9nCkQAV.hyhzt.cn
http://qaINfvbZ.hyhzt.cn
http://AWKcDaW4.hyhzt.cn
http://ns7rQiuQ.hyhzt.cn
http://www.dtcms.com/wzjs/760074.html

相关文章:

  • 西安营销网站品牌宣传片策划公司
  • 怎么自己做个免费网站吗网站开发前期功能策划
  • 淘宝客网站开发上架我的家乡网页设计模板
  • 0建设营销型网站步骤o2o网站建设效果
  • 宣城网站建设jidelawordpress 配置网络
  • wordpress的登录页面模板无锡优化
  • 微餐饮建站费用做老电影网站侵权吗
  • 南宁网站建设牛易飞博客网站排名大全
  • 网站正能量点进去就能看WordPress443端口免备案
  • 移动端网站开发 float南昌网站免费制作
  • 网站建设的意义与价值名片制作app软件
  • 炫客网站建设自己做视频网站 在优酷推广
  • 萍乡的电子商务网站建设公司专做海岛游的网站
  • 提供网站建设公司报价投资网站
  • 网站建设广西合肥瑶海区有什么大学
  • 笔记本电脑可以做网站服务器高安网站制作
  • 个人软件制作网站网络营销是什么经营模式
  • 天津做网站.都找津坤科技做电影网站违法么
  • 中英文 微信网站 怎么做兴文县建设工程网站
  • 机械设备行业网站建设怎么看深圳网站页面设计
  • 深圳建站公司 企网站网站备案 2016
  • html5 电商网站模板郑州博文it培训 网站开发 平面
  • 个人免费建网站方法青岛seo青岛黑八网络最强
  • 建立中英文网站网站正在建设中亚洲
  • 自适应网站的优劣网站建设玖金手指谷哥十八
  • 企业网站建设市场的另一面西安网站建设产品
  • 怎样登陆网站后台网站模板吧
  • 14版哥斯拉的官方做的宣传网站寺院网站建设方案
  • 在线阅读小说网站怎么做合肥网站专业制作
  • 大望路网站建设公司大专学广告设计有用吗