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

怎样建一个自己的网站做网站市场

怎样建一个自己的网站,做网站市场,滨州j建设局网站投诉电话,网站开发进度时间表审题: 本题需要我们通过维护食物链关系并判断给出的指令的真伪,将所有假指令的数目统计出来并输出 思路: 方法一:带权并查集 由于食物链的关系是A,B,C环形克制,其实存在一个周期循环。 我们依次给这些动物编号&#xf…

审题:
本题需要我们通过维护食物链关系并判断给出的指令的真伪,将所有假指令的数目统计出来并输出

思路:

方法一:带权并查集

由于食物链的关系是A,B,C环形克制,其实存在一个周期循环。

我们依次给这些动物编号,可以总结出一个解决方法

首先我们看看同类动物之间的距离:3,6,9....

我们发现同类动物之间的距离都是3的倍数,取模3之后都是0

接着看看捕食关系的动物(x->y):1,4,7...

x捕食y的距离都是取余3后值为1

最后看看被捕食关系的动物(y->x):2,5,8...

值取余3后为2

综上,三种情况都可以通过两者之间的距离取余3的出的结果进行判断

我们将d[X]定义为x节点到根节点的距离,这个距离就是权值


接下来我们分析find函数的d数组数据如何更新

图示:

在路径压缩前,我们的c节点到a根节点之间的距离是d[c]+d[b](b节点一定要先直接挂在根节点下),路径压缩后的d[c]表示的就不是到b节点的距离,而是到根节点的距离,而由于c到a之间的距离从未变过,所以建立等式:d[c] = d[c] + d[b] =》 d[c]+=d[b]


然后是un函数

(1)指令为同类的情况

其中d[x]和d[y]都是已知的,然后由于同类之间的距离都是3的倍数,最终计算的时候利用了取余3,所以我们x和y的距离用取余3的结果代替也是可以的,所有3的倍数取余3都是0,所以让x和y的距离为0即可

等式:d[x] + d[xy] = d[y] + 0

(2)指令为捕食关系的情况

正常来说我们的捕食者和被捕食者之间的距离是1,4,7...但是如果我们用1当权值会导致计算公式不统一。而我们计算两者之间的距离可以用后者减前者,所以距离又可以是-1,2,5.此时我们可以用2来做权值,因为2和-1是同余的。这样就解决了用1当权值的问题

解题:

#include<iostream>
using namespace std;
const int N = 5e4 + 10;
int fa[N],d[N];
int n, k,ret = 0;
int find(int x)
{if (fa[x] == x) return x;int t = find(fa[x]);//一定要先执行此语句,先将父节点都挂在根节点处d[x] += d[fa[x]];//分析而得return fa[x] = t;
}
void un(int x, int y, int num)
{int a = find(x);int b = find(y);if (a != b){fa[a] = b;d[a] = d[y] + num - d[x];//不可以用d[fa[x]]应为此时fa[x]已经是等于b了}
}
int main()
{cin >> n >> k;//初始化for (int i = 1; i <= n; i++) fa[i] = i;while (k--){int op, x, y;cin >> op >> x >> y;if (x > n || y > n){ret++;continue;}if (op == 1)//同类{if (find(x) == find(y) && ((d[y] - d[x]) % 3 + 3) % 3 != 0){ret++;}else un(x, y, 0);}else//x->y{if (find(x) == find(y) && ((d[y] - d[x]) % 3 + 3) % 3 != 1){ret++;}else un(x, y, 2);}}cout << ret << endl;return 0;
}

注意:
1.在un函数中,需要特别注意我们不能写成:d[fa[x]] = d[y] + num - d[x]

因为我们需要求的d是原来x的根节点a的d,此时fa[x]已经更新为b了,也就是说此时d[fa[x]]==d[b]

2.指令为同类时的更新前提:当前的x和y之间存在关系且不为同类情况

指令为x捕食y时的更新前提:当前的x和y之间存在关系且不为x捕食y的情况

3.为了方便x捕食y情况的代码统一性,我们采用后者减前者的方式计算两者间距离

4.由于我们不确定谁距离根节点更近,所以结果可能会出现负数取余,此时我们就要使用“模加模”的方法来解决负数取模问题

P2024 [NOI2001] 食物链 - 洛谷

http://www.dtcms.com/a/531224.html

相关文章:

  • lol网站怎么做百度推广关键词和创意
  • 美词原创网站建设软件开发网络技术开发公司
  • 怎么快速做网站排名建设网站几钱
  • 网站开发项目经验描述商标查询天眼查
  • 宠物网站的设计与实现掏宝网网站建设评价表
  • 做游戏网站要通过什么审核陕西省诚信建设示范网这个网站
  • 丽水专业做网站自己做培训网站
  • 网站搭建合同html网页制作期末作业
  • 免费网站设计软件清远建设局网站
  • 宁波网站建设优化企业简历模板制作
  • 网站建站主题动漫网站设计
  • 网站底部模板源码金蝶网站建设公司案例
  • 网站dns解析设置做外贸网站那个好
  • 网站建设3000字盐城集团网站建设
  • 门户网站改造方案怎么简单页网站
  • 北京城市雕塑建设管理办公室网站wordpress架设主机
  • 超值的网站建设哪里有html5网站建设
  • 在线包车网站建设长沙微网站电话号码
  • 广州手机网站建设公司哪家好开发什么软件有市场
  • 如何用h5做网站芜湖做公司网站
  • 指定网站怎么设置路由器只访问合肥建设工程交易网站
  • 国内网站设计制作长安镇做网站
  • 网站定制电话贴吧网站建设
  • 国防教育网站建设方案文昌市建设局网站
  • 南京网站制作报价微信小程序注册要钱吗
  • 免费建站工具wordpress安装linux
  • 什么是网站推广?线上网站建设需求
  • 流放之路做装备词缀网站seo排名优化推荐
  • nginx 做网站色彩搭配比较好的网站
  • 网站做跳转在后天那个文件里做网站icp备案费用