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

抚州购物网站开发设计网站建设要代码有什么好处

抚州购物网站开发设计,网站建设要代码有什么好处,策划方案范文,网站开发后台需要什么技术前言 题解 因为这场七夕节&#xff0c;所以出的特别友好。 整体还是偏思维。 T6 额外提供组合数学解&#xff0c;还是蛮有趣的。 A. 喜鹊罢工 题型: 签到 365 可以有多少个 7 组成 365可以有多少个7组成 365可以有多少个7组成 向上取整即可 #include <iostream>usi…

前言

在这里插入图片描述


题解

因为这场七夕节,所以出的特别友好。

整体还是偏思维。

T6 额外提供组合数学解,还是蛮有趣的。


A. 喜鹊罢工

题型: 签到

365 可以有多少个 7 组成 365可以有多少个7组成 365可以有多少个7组成

向上取整即可

#include <iostream>using namespace std;int main()
{cout << ((365 + 6) / 7) << endl;return 0;
}

B. 牛郎取名

思路: 模拟

对字符进行按序重排,考察字符串API知识点。

#include <bits/stdc++.h>using namespace std;int main()
{int n;string s;cin >> n >> s;string r;for (int i = 0; i < n; i++) {int p; cin >> p;r.push_back(s[p - 1]);}cout << r << endl;return 0;
}

C. 织女的考验

思路: 找规律

可以把字符串拍平为 26维的向量

那么两个字符串能否相等(彼此各删除1个字符),在于这2个向量 差异 要么为0,要么为2

d i f f = ∑ i = 0 i = 25 a b s ( v 1 ( i ) − v 2 ( i ) ) diff = \sum_{i=0}^{i=25} abs(v_1(i) - v_2(i)) diff=i=0i=25abs(v1(i)v2(i))

这样的时间复杂度为 O ( n + 26 ) O(n+26) O(n+26)

#include <bits/stdc++.h>using namespace std;int main()
{int t;cin >> t;while (t-- > 0) {string s1, s2;cin >> s1 >> s2;// 向量化vector<int> h1(26), h2(26);for (char c: s1) h1[c - 'a']++;for (char c: s2) h2[c - 'a']++;// 求向量差int diff = 0;for (int i = 0; i < 26; i++) {diff += abs(h1[i] - h2[i]);}if (diff == 0 || diff == 2) {cout << "YES\n";} else {cout << "NO\n";}}return 0;
}

当然这题,也可以大模拟,在构建26维向量后,枚举去掉的字符

然后对比是否相同


D. 仙男仙女

思路: 模拟

需要注意的是,给出的坐标并不是按序的,需要额外排序下。

然后模拟即可,即比对前一位/后一位的差值。

#include <bits/stdc++.h>using namespace std;int main()
{int n;cin >> n;vector<array<int, 2>> arr(n);for (int i = 0; i < n; i++) {cin >> arr[i][0];}for (int i = 0; i < n; i++) {cin >> arr[i][1];}sort(arr.begin(), arr.end());int res = 0;for (int i = 0; i < n; i++) {bool c1 = (i == 0 || arr[i][0] - arr[i - 1][0] > arr[i][1]);bool c2 = (i == n - 1 || arr[i + 1][0] - arr[i][0] > arr[i][1]);if (c1 && c2) {res++;}}cout << res << endl;return 0;
}

E. 牛郎的微信群

思路: 思维题

  • 距离为1,就是节点的度
  • 距离为2, 就是节点u的相邻节点度总和 - 节点u的度

那这样求解,会不会遇到复杂度问题,比如菊花图等

不会,因为它是一个树结构,并不是一个完全图形态

它的枚举量为 O ( V ∗ 2 ) , V 为边数 {O(V * 2) , V为边数} O(V2),V为边数

#include <bits/stdc++.h>
using namespace std;int main()
{int n;cin >> n;vector<vector<int>> g(n);for (int i = 0; i < n - 1; i++) {int u, v;cin >> u >> v;u--; v--;g[u].push_back(v);g[v].push_back(u);}vector<int> res(n);for (int i = 0; i < n; i++) {for (int v: g[i]) {res[i] += g[v].size();}res[i] -= g[i].size();}for (int i = 0; i < n; i++) {cout << res[i] << " \n"[i == n - 1];}return 0;
}

F. 久别重逢

方法一:前缀和优化的DP

令dp[j] 为 以j结尾的方案数

d p [ j ] = ∑ i = 0 i = j − k d p [ i ] dp[j] = \sum_{i=0}^{i=j-k} dp[i] dp[j]=i=0i=jkdp[i]

公式转移代价为k,但是 n , k ≤ 1 0 5 n, k \le 10^5 n,k105, 所以必须加以优化

这边可以简单地使用前缀和优化,因为只有一侧有限制,控制右侧边界即可。

如果两侧有限制,则需要额外引入双端队列。

#include <bits/stdc++.h>
using namespace std;const int64_t mod = (int64_t)1e9 + 7;int main()
{int n, k;cin >> n >> k;int64_t res = 1;int64_t acc = 0;vector<int64_t> dp(n + 1);dp[0] = 1;for (int i = k; i <= n; i++) {acc = (acc + dp[i - k]) % mod;dp[i] = acc;res = (res + dp[i]) % mod;}cout << res << endl;return 0;
}

题外话:

方法二:组合数学

其实我一开始想到的是,枚举步数x,然后采用组合数学的方式来计算.

利用插板法,固定步数为x,接下来枚举y, y ∈ [ 0 , ( n − k x ) ] y \in [0, (n-kx)] y[0,(nkx)]

∑ y = 0 y = n − k x C ( y + x − 1 , y − 1 ) = C ( n − k x + x , x ) = C ( n − ( k − 1 ) ∗ x , x ) \sum_{y=0}^{y=n-kx} C(y+x-1, y-1) = C(n-kx+x, x) = C(n - (k-1)*x, x) y=0y=nkxC(y+x1,y1)=C(nkx+x,x)=C(n(k1)x,x)

然后在枚举x

最终结果为

∑ x = 0 x = n / k C ( n − ( k − 1 ) ∗ x , x ) \sum_{x=0}^{x=n/k} C(n - (k-1)*x, x) x=0x=n/kC(n(k1)x,x)

#include <bits/stdc++.h>
using namespace std;int64_t ksm(int64_t b, int64_t v, int64_t mod) {int64_t r = 1l;while (v > 0) {if (v % 2 == 1) r = r * b % mod;b = b * b % mod;v /= 2;}return r;
}int main()
{int n, k;cin >> n >> k;// 组合数计算const int64_t mod = (int64_t)1e9 + 7;vector<int64_t> fac(n + 1);vector<int64_t> inv(n + 1);fac[0] = 1;for (int i = 1; i <= n; i++) {fac[i] = fac[i - 1] * i % mod;}inv[n] = ksm(fac[n], mod - 2, mod);for (int i = n - 1; i >= 0; i--) {inv[i] = inv[i + 1] * (i + 1) % mod;}int64_t res = 0;    for (int i = 0; i * k <= n; i++) {int r = n - i * k;// C(r+i, i)res += fac[r + i] * inv[i] % mod * inv[r] % mod;res %= mod;}cout << res << endl;return 0;
}

写在最后

在这里插入图片描述

http://www.yayakq.cn/news/863211/

相关文章:

  • 南山建站公司中装建设重组消息
  • 德惠网站中国摄影在线网站
  • 做二手设备的网站宣传片拍摄设备清单
  • 口碑好的常州网站建设如何在网上推广信用卡
  • 网站管理助手 mysql个人社保缴费证明
  • asp与php做网站哪个好致远oa系统
  • 用什么网站做查重报告怎么免费注册自己的网站
  • 响应式旅游网站模版网站建设对企业经营
  • 帝国cms小说阅读网站模板个人电脑做服务器网站
  • 桂林市做网站的公司柬埔寨做网站网站
  • 面试网站建设问题郑州网站建设庄园
  • 网站建设与管理专业好找工作吗太原网站建设与维护
  • 江门网站优化经验人才网最新招聘信息网
  • 湛江购房网官方网站网站设计制作的服务好不好
  • 人和动物做的电影网站郑州建设高端网站
  • 门户网站属于数字媒体吗安微省住房和城乡建设厅网站
  • 房屋设计网站有哪些seo网上课程
  • 密云区社区建设网站环境设计案例网站
  • 做网站之前需要准备什么wordpress 图片分页
  • 海南公司网站建设海洋网站建设公司
  • 软件培训网站建设北京海淀区的房子多少钱一平
  • 高性能网站建设进阶指南怎样在手机上无货源开店
  • 怎样建设公司的网站菏泽外贸网站建设
  • 门户网站开发需要wordpress 附件搜索
  • 做网站可以干什么word里网站的超链接怎么做
  • 网站建好后如何上线网络营销公司起名
  • wordpress 域名邮箱设置seo优化教程自学
  • => wordpress 翻译 不显示网站优化公司哪家便宜
  • 做文案看什么网站微信客户端登录入口
  • 电脑上如何做网站爱营销app