多比特杯武汉工程大学第六届ACM新生赛 A,L

为什么要演奏春日影!!!

看到题目所说,若 b i b_i bi i i i 之前,则…,那么很容易联想到拓扑排序,再仔细看题,对于每个 b i b_i bi,我们都想其对应的 i 进行连边,那么我们很容易得到到一个图,又因为题目所给定的为 n +1 个点,n 条边,所以显然整个图的构成为一条链加上多个环,且0这个点一定是处于链上,若在链上的 b i b_i bi不为 0 ,那么其贡献一定为 c ,否则贡献则为 a。再考虑环对于答案的贡献,对于环上的点,其中一个点的贡献为 a ,剩余点的贡献为 c ,我们贪心去算出每个点为 a 时其环的对应的价值即可,然后取最大。

整个题的实现方法有两种,第一种就是拓扑排序找链,然后剩下入度不为 0 的点则为环,然后对环去dfs即可。

#include <bits/stdc++.h>using namespace std;
const int N = 4e5 + 5;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef array<ll, 3> p3;
int mod = 1e9+7;
const int maxv = 4e6 + 5;
// #define endl "\n"vector<pll> e[N];
int d[N];
ll res;
void dfs(int x)
{for(auto [u,w]: e[x]){if(d[u]){d[u]=0;res=max(res,w);dfs(u);}}
}
void solve()
{int n;cin>>n;ll ans=0;for(int i=1;i<=n;i++){int a,b,c;cin>>a>>b>>c;if(b==0){ans+=a;}else ans+=c;e[b].push_back({i,a-c});d[i]++;}//cout<<ans<<endl;queue<int >q;for(int i=0;i<=n;i++){if(!d[i]) q.push(i);}while(!q.empty()){auto t=q.front();q.pop();for(auto [x,y]: e[t]){d[x]--;if(d[x]==0) q.push(x);}}for(int i=1;i<=n;i++){if(d[i]){res=-1e18;dfs(i);ans+=res;
//             cout<<i<<" ";
//             cout<<res<<endl;}}cout<<ans<<endl;
}int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;t=1;//cin>>t;while(t--){solve();}system("pause");return 0;
}

第二种则是求出每个强连通分量,对于强连通分量大小为 1 的点,其一定在链上,可以直接计算其价值,否则直接对所在的强连通分量进行遍历即可。

#include <bits/stdc++.h>using namespace std;
const int N = 1e5 + 5;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef array<ll, 3> p3;
int mod = 1e9 + 7;
const int maxv = 4e6 + 5;
// #define endl "\n"struct node
{ll a,b,c;
}z[N];
vector<int> e[N];
int n;
int tot, dfsn[N], ins[N], low[N];
stack<int> s;
vector<vector<int>> scc;
vector<int> b(N);
ll val[N];
void dfs(int x)
{low[x] = dfsn[x] = ++tot, ins[x] = 1, s.push(x);for (auto u : e[x]){if (!dfsn[u]){dfs(u);low[x] = min(low[x], low[u]);}else if (ins[u])low[x] = min(low[x], dfsn[u]);}if (dfsn[x] == low[x]){vector<int> c;while (1){auto t = s.top();c.push_back(t);ins[t] = 0;s.pop();b[t] = scc.size();val[scc.size()]+=z[t].c;if (t == x)break;}scc.push_back(c);}
}void solve()
{cin>>n;ll tar=0;for(int i=1;i<=n;i++){ll a,b,c;cin>>a>>b>>c;z[i]={a,b,c};int u=b,v=i;e[u].push_back(v);if(b==0) tar+=a-c;}for (int i = 1; i <= n; i++){if (!dfsn[i]){dfs(i);}}ll ans=0;for(int i=0;i<scc.size();i++){if(scc[i].size()==1) ans+=val[i];else{ll res=-1e18;for(auto u: scc[i]){res=max(val[i]-z[u].c+z[u].a,res);}ans+=res;}}cout<<ans+tar<<endl;
}int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;t = 1;// cin>>t;while (t--){solve();}system("pause");return 0;
}

开心消消乐

一道很新奇的并查集。
因为数据范围只有1e5,所以我们可以预处理出所有情况,我们暴力处理出 1e5 内的所有数字,然后去O(n) 的统计即可。

#include <bits/stdc++.h>using namespace std;
const int N = 1e5 + 5;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef array<ll, 3> p3;
int mod = 1e9+7;
const int maxv = 4e6 + 5;
// #define endl "\n"int find(int x)
{if(p[x]!=x){return p[x]=find(p[x]);}return x;
}
int p[N];
void solve()
{int n;cin>>n;vector<int> a(N);for(int i=1;i<N;i++) p[i]=i;for(int i=1;i<=n;i++){int x;cin>>x;a[x]=1;}for(int i=1;i<N;i++){for(int j=i;j<N;j+=i){if(a[i]&&a[j]){int fa=find(i),fb=find(j);p[fa]=fb;}}}int cnt=0;for(int i=1;i<N;i++){if(a[i]){if(p[i]==i) cnt++;}}cout<<cnt<<endl;
}int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;t=1;//cin>>t;while(t--){solve();}system("pause");return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/133928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

webgoat-client side客户端问题

client side Bypass front-end restrictions 用户对 Web 应用程序的前端有很大程度的控制权。 它们可以更改 HTML 代码&#xff0c;有时也可以更改脚本。这就是为什么 需要特定输入格式的应用也应在服务器端进行验证&#xff0c;而不是只在前端做限制。 0x02 先提交请求&am…

win10虚机扩容C盘

需求&#xff1a; 在虚机管理平台上&#xff0c;将win10虚机的C盘空间扩容至200G&#xff0c;当前空间为100G 操作步骤 1.在虚机平台上&#xff0c;将硬盘1的大小增加至200G 如下图 点击保存&#xff1b; 查看win10虚机&#xff0c;发现C盘空间还是100G&#xff0c;如下图…

使用Redis实现缓存及对应问题解决

一、为什么需要Redis作缓存&#xff1f; 在业务场景中&#xff0c;如果有些数据需要极高频的存取&#xff0c;每次都要在mysql中查询的话代价太大&#xff0c;假如有一个存在于客户端和mysql之间的存储空间&#xff0c;每次可以在这空间中进行存取操作&#xff0c;就会减轻mys…

go程序获取工作目录及可执行程序存放目录的方法-linux

简介 工作目录 通常就是指用户启动应用程序时&#xff0c;用户当时所在的文件夹的绝对路径。 如&#xff1a;root用户登录到linux系统后&#xff0c;一顿cd&#xff08;change directory&#xff09;后, 到了/tmp文件夹下。此时&#xff0c;用户要启动某个应用程序&#xff0…

mediapipe流水线分析 二

目标检测 Graph 一 流水线上游输入处理 1 TfLiteConverterCalculator 将输入的数据转换成tensorflow api 支持的Tensor TfLiteTensor 并初始化相关输入输出节点 &#xff0c;该类的业务主要通过 interpreter std::unique_ptrtflite::Interpreter interpreter_ nullptr; 实现…

Python教程---Python基础语法2

1.变量和字面量(常量) 字面量就是一个一个的值&#xff0c;比如&#xff1a;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6&#xff0c;‘HELLO’ 字面量所表示的意思就是它的字面的值&#xff0c;在程序中可以直接使用字面量 变量&#xff08;varia…

利用大语言模型(LLM )提高工作效率

日常工作就是面向 google/ 百度编程&#xff0c;除了给变量命名是手动输入&#xff0c;大多时候就是通过搜索引擎拷贝别人的代码&#xff0c;或者找到旧项目一段代码拷贝过来使用。这无疑是开发人员的真实写照&#xff1b;然而&#xff0c;通过搜索引擎搜索答案&#xff0c;无疑…

Go 面向对象,多态

面向对象 工程结构 新建一个oop.go package _oop // Package _oop 引用名称import ("fmt""strconv" )// GIRL 常量 const (// GIRL 自增GIRL Gender iotaFIRSTSECONDTHIRD )type Gender uint8 // 无符号的8位整数类型// User 结构体 type User struct…

Vue 跨域的两种解决方式

一、通过 proxy 解决跨域 1.1 baseURL 配置 对 axios 二次封装时&#xff0c;baseURL 设置为 /api。 const serviceAxios axios.create({baseURL: /api,timeout: 10000, // 请求超时设置withCredentials: false, // 跨域请求是否需要携带 cookie });1.2 vue.config.js 配置…

SQLite 3.44.0 发布!

SQLite 开发团队于 2023 年 11 月 01 日发布了 SQLite 3.44.0 版本&#xff0c;带来了一些 SQL 和优化器增强&#xff0c;本文给大家做一个简要分分析。 新增 concat() 函数 新版本增加了两个连接字符串的函数&#xff1a;concat() 以及 concat_ws()。它们可以兼容 PostgreSQ…

代码冲突解决

远程仓库修改 本地代码修改 接下来我们push一下 如果使用IDE 冲突内容如下&#xff1a; 我们可以使用自带的工具进行修改 我们选择接受自己改动的即可 如果使用git工具怎么去处理呢 远程分支是这样 本地是这样的 add和commit之后&#xff0c;再pull&#xff0c;最后pus…

若依:用sqlite3随便掰饬掰饬

“若依”这个开源项目&#xff0c;感觉是外包公司标配了啊&#xff0c;都在用。从README感觉像是某位阿里员工的工作之余的小整理。对于SprintBoot&#xff0c;个人感觉太重型&#xff0c;不过人家生态起来了&#xff0c;不是那么容易玩完。但是随着VMware被博通收购&#xff0…

关键词搜索亚马逊商品数据接口(标题|主图|SKU|价格|优惠价|掌柜昵称|店铺链接|店铺所在地)

亚马逊提供了API接口来获取商品数据。其中&#xff0c;关键词搜索亚马逊商品接口&#xff08;item_search-按关键字搜索亚马逊商品接口&#xff09;可以用于获取按关键字搜索到的商品数据。 通过该接口&#xff0c;您可以使用API Key和API Secret来认证身份&#xff0c;并使用…

BP神经网络的数据分类——语音特征信号分类

大家好&#xff0c;我是带我去滑雪&#xff01; BP神经网络&#xff0c;也称为反向传播神经网络&#xff0c;是一种常用于分类和回归任务的人工神经网络&#xff08;ANN&#xff09;类型。它是一种前馈神经网络&#xff0c;通常包括输入层、一个或多个隐藏层和输出层。BP神经网…

关于iOS:如何使用SwiftUI调整图片大小?

How to resize Image with SwiftUI? 我在Assets.xcassets中拥有很大的形象。 如何使用SwiftUI调整图像大小以缩小图像&#xff1f; 我试图设置框架&#xff0c;但不起作用&#xff1a; 1 2 Image(room.thumbnailImage) .frame(width: 32.0, height: 32.0) 在Image上应用…

浅析刚入门Python初学者的注意事项

文章目录 一、注意你的Python版本1.print()函数2.raw_input()与input()3.比较符号&#xff0c;使用!替换<>4.repr函数5.exec()函数 二、新手常遇到的问题1、如何写多行程序&#xff1f;2、如何执行.py文件&#xff1f;3、and&#xff0c;or&#xff0c;not4、True和False…

Unity项目转微信小游戏保姆教程,繁杂问题解决,及微信小游戏平台简单性能测试

前言 借着某人需求&#xff0c;做了一波简单的技术调研&#xff1a;将Unity项目转换为微信小游戏。 本文主要内容&#xff1a;Unity转换小游戏的步骤&#xff0c;遇到问题的解决方法&#xff0c;以及简单的性能测试对比 微信小游戏的限制 微信小游戏对程序包体大小有严格限制…

Manopt使用

本文记录一些黎曼流型的优化工具箱的使用 入手 安装 https://www.manopt.org/tutorial.html#gettingstarted

JavaScript高级编程

JavaScript是以对象为基础、函数为模型、原型为继承的基于对象的开发模式。JavaScript不是面向对象的编程语言&#xff0c;在ECMAScript 6规范之前&#xff0c;JavaScript没有类的概念&#xff0c;仅允许通过构造函数模拟类&#xff0c;通过原型实现继承。ECMAScript 6新增类和…

飞桨平台搭建PP-YOLOE模型

一、创建项目 此博客仅是运行PP-YOLOE源码&#xff0c;这里以变压器渗漏数据集为例COCO数据集太大了&#xff0c;跑不动&#xff0c;V100训练预估计得7天左右&#xff0c;即便是A100也得4天半&#xff0c;变压器渗漏油数据集跑一个小时左右&#xff0c;还可以接受&#xff0c;…