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

做会计需要了解的网站及软件查pv uv的网站

做会计需要了解的网站及软件,查pv uv的网站,做个网站要多少钱,沈阳企业网站制作哪家好题目描述 a180285非常喜欢滑雪。他来到一座雪山#xff0c;这里分布着M条供滑行的轨道和N个轨道之间的交点#xff08;同时也是景点#xff09;#xff0c;而且每个景点都有一编号i(1≤i≤N)和一高度Hi​。a180285能从景点ii滑到景点j当且仅当存在一条i和j之间的边#xf…题目描述 a180285非常喜欢滑雪。他来到一座雪山这里分布着M条供滑行的轨道和N个轨道之间的交点同时也是景点而且每个景点都有一编号i(1≤i≤N)和一高度Hi​。a180285能从景点ii滑到景点j当且仅当存在一条i和j之间的边且i的高度不小于j。 与其他滑雪爱好者不同a180285喜欢用最短的滑行路径去访问尽量多的景点。如果仅仅访问一条路径上的景点他会觉得数量太少。于是a180285拿出了他随身携带的时间胶囊。这是一种很神奇的药物吃下之后可以立即回到上个经过的景点不用移动也不被认为是a180285 滑行的距离。请注意这种神奇的药物是可以连续食用的即能够回到较长时间之前到过的景点比如上上个经过的景点和上上上个经过的景点。 现在a180285站在11号景点望着山下的目标心潮澎湃。他十分想知道在不考虑时间胶囊消耗的情况下以最短滑行距离滑到尽量多的景点的方案即满足经过景点数最大的前提下使得滑行总距离最小。你能帮他求出最短距离和景点数吗 输入格式 输入的第一行是两个整数N,M。 接下来1行有N个整数Hi​分别表示每个景点的高度。 接下来M行表示各个景点之间轨道分布的情况。每行3个整数Ui​,Vi​,Ki​。表示编号为Ui​的景点和编号为Vi​的景点之间有一条长度为Ki​的轨道。 输出格式 输出一行表示a180285最多能到达多少个景点以及此时最短的滑行距离总和。 题解 对于高度不同的两点他们之间的边是有向的对于同于高度的点有边就可以互相到达我们只需要选取最短的一些边使他们仍联通即可。 若按照正常思路以边权排序直接跑Kruskal的话会发现可能出现有下面的点连接上面的点如他会直接选取两条边权为5的边      我们考虑如何消除高度的影响我们以终点高度为第一关键字边权为第二关键字排序那么就不可能出现上面的情况因为他会先选20的边。 相当于选点是逐层进行的上面的点一定会先被选取所以这个点选了之后不可能再连一条向上的边。 接着愉快地打出了代码。 #includebits/stdc.h using namespace std; #define ll long longconst int maxn1000005; int n,m; ll ans; int fa[maxn],h[maxn]; struct edge{int x,y;ll k; }a[maxn];templateclass Tinline void read(T x){x0;char chgetchar();while(!isdigit(ch)) chgetchar();while(isdigit(ch)) {x(x1)(x3)(ch^48);chgetchar();} }void swap(ll x,ll y){ll tx;xy;yt;}bool cmp(edge a,edge b){if(h[a.y]h[b.y]) return a.kb.k;return h[a.y]h[b.y]; }int find(int x){if(fa[x]x) return x;return fa[x]find(fa[x]); }void kruskal(){sort(a1,am1,cmp);int k0;for(int i1;im;i){int dxfind(a[i].x),dyfind(a[i].y);if(dx!dy){fa[dx]dy;ansa[i].k;k;}if(kn-1) break;;}printf(%d %lld,k1,ans); }int main(){read(n);read(m);for(int i1;in;i) read(h[i]),fa[i]i;for(int i1;im;i){int x,y,z;read(x);read(y);read(z);if(h[x]h[y]) swap(x,y);a[i](edge){x,y,z};}kruskal(); } View Code 然后。。。。。 我们会发现是什么没考虑到呢接着便可以发现可能有出发点达不到的地方这些地方是没用的。 那么就可以考虑记录1可以利用的边用这些边跑Kruskal。在最初读入时对于高度不同的点建有向边 高度相同建双向边跑一边dfs要判断是否遍历过。 #includebits/stdc.h using namespace std; #define ll long longconst int maxn1000005; int n,m,_n1,cnt; ll ans; int fa[maxn],h[maxn]; bool vis[maxn]; vectorpairint,ll e[maxn]; struct edge{int x,y;ll k; }a[maxn];templateclass Tinline void read(T x){x0;char chgetchar();while(!isdigit(ch)) chgetchar();while(isdigit(ch)) {x(x1)(x3)(ch^48);chgetchar();} }void swap(ll x,ll y){ll tx;xy;yt;}bool cmp(edge a,edge b){if(h[a.y]h[b.y]) return a.kb.k;return h[a.y]h[b.y]; }int find(int x){if(fa[x]x) return x;return fa[x]find(fa[x]); }void kruskal(){sort(a1,acnt1,cmp);int k0;for(int i1;icnt;i){int dxfind(a[i].x),dyfind(a[i].y);if(dx!dy){fa[dx]dy;ansa[i].k;k;}if(k_n-1) break;}printf(%d %lld,_n,ans); }void dfs(int u,int f){for(unsigned int i0;ie[u].size();i){int ve[u][i].first;if(vf) continue;a[cnt](edge){u,v,e[u][i].second};if(!vis[v]){vis[v]true;_n;dfs(v,u);}} }int main(){read(n);read(m);for(int i1;in;i) read(h[i]),fa[i]i;for(int i1;im;i){int x,y,z;read(x);read(y);read(z);if(h[x]h[y]) swap(x,y);e[x].push_back(make_pair(y,z));if(h[x]h[y]) e[y].push_back(make_pair(x,z));}vis[1]true;dfs(1,0);kruskal(); } View Code  转载于:https://www.cnblogs.com/sto324/p/11172209.html
http://www.zqtcl.cn/news/457798/

相关文章:

  • 石家庄网站推广专家php网站分类目录源码
  • 盐城市城乡建设局门户网站低代码开发软件
  • 网站建设中的html深圳建设网站需要多少钱
  • 南阳公司网站制作品牌推广工作内容
  • 网站被刷流量怎么办红色php企业网站模板下载
  • 做现货黄金的金融网站设计平台app
  • 淘宝客手机网站搭建网站设计专业公司
  • 做网站用的图片怎样压缩钓鱼网站的制作教程
  • 建设网站类型wordpress竖版图片尺寸
  • 网站建设数据库ER图怎么画公司网站建设建议书
  • 网站建设网站制作有限排名优化课程
  • 绵竹网站建设佛山网络营销推广
  • 网站备案名称重复学会网站建设目的
  • 网站套餐到期什么意思孝感的网站建设
  • 网站制作费用多少钱房地产建筑设计公司
  • 网站优化要素做网站看百度脸色
  • 软件开发 网站开发区别seo怎么刷关键词排名
  • python 网站开发必会智能网站
  • 重庆建设摩托车官方网站网络是干什么的
  • 建筑工程网站源码wordpress 多域名 图片不显示
  • 大型网站建设优化排名wordpress 投稿 插件
  • 二维码的网站如何做静安免费网站制作
  • 微网站免费模板管理网络的网站
  • 网站下载软件政企网站建设
  • 网站设计为什么要域名北京移动端网站设计
  • 自做网站多少钱哪个网站的课件做的好
  • 网站开发实现页面的跳转怎么添加网站关键词
  • 个人签名设计网站企业网站html模板
  • 做网站编辑大专可以吗小网站搜什么关键词好
  • 百度网首页登录入口宁波seo管理