codeforce 884C - Bertown Subway DFS+图论

分析

题意说输入数据有两个规则:
1 每个i只有一个pi表示i站的目的地 i可以等于pi
2 每个pi都指向唯一的一个站i
那么也就是说i指向的目的只有一个且唯一 每个目的由唯一的始发站出来 所以也就是说 图中的每一个点只有一条单向边 那么当我们求最大的数量的可达对时 也就是尽可能构造大圈 所以每一个点 要么形成自回路 要么在一个多点圈中 而连接任意两个圈的花费就是修改两站的目的地 所以 把两个圈构造成一个大圈的花费就是2
所以这道题可以任选两个最大的圈 连成一个 那么最多的点对 就是这个圈中的点数的平方

题意归纳出来就是尽可能构造大的圈,注意数据有可能会超int

code

#include<bits/stdc++.h>
using namespace std;
typedef long long ll; 
const int maxn = 100010;
struct node{int id,val;node(int a,int b):id(a),val(b){}
};
bool cmp(node a,node b){return a.val>b.val;
}
vector<node>ans;
int k,nex[maxn];
bool bok[maxn];
void dfs(int s){if(!bok[s]){bok[s]=1;k++;dfs(nex[s]);}
}
int main()
{int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&nex[i]);}for(int i=1;i<=n;i++){if(!bok[i]){k=0;dfs(i);ans.push_back(node(i,k));}}sort(ans.begin(),ans.end(),cmp);ll sum=0,add=0;bool f=0;if(ans.size()>=2){for(int i=0;i<ans.size();i++){if(i<2){add+=ans[i].val;    }else {sum+=1LL*ans[i].val*ans[i].val;//防止溢出}}   sum+=1LL*add*add;//防止溢出}else{sum = 1LL*n*n;}printf("%lld\n",sum);return 0;
}

WA在爆int…

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

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

相关文章

笔记03

linux 创建连接命令 ln -s 软链接 这是linux中一个非常重要命令&#xff0c;请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同不的链接&#xff0c;这个命令最常用的参数是-s, 具体用法是&#xff1a;ln -s 源文件 目标文件。 当 我们需要在不同的目录&#…

[Leedcode][JAVA][第209题][长度最小的子数组][滑动窗口][前缀和][二分查找][双指针]

【问题描述】[中等] 给定一个含有 n 个正整数的数组和一个正整数 s &#xff0c;找出该数组中满足其和 ≥ s 的长度最小的连续子数组&#xff0c;并返回其长度。如果不存在符合条件的连续子数组&#xff0c;返回 0。示例: 输入: s 7, nums [2,3,1,2,4,3] 输出: 2 解释: 子数…

UVa-10820 Send a Table 欧拉函数

题意 交表 由于f(k∗x,k∗y)可以由f(x,y)递推出来 让我们求 在x&#xff0c;y都不大于n的情况下 计算最少需要计算多少不同的项 n<50000 分析 那么也就是说两个数由共因子的不必计算 只计算两个数没有共因子的 那么也就是说 每个数我们只需要找到与他互质的个数就可以了…

29使用QRcode方式生成二维码

首先idea导入jar包 链接&#xff1a;https://pan.baidu.com/s/1IZvMHzL2tx1zB2UIbQtiOg 提取码&#xff1a;garc 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import…

Mybatis入门---一对多、多对多

前几天自己配置了Mybatis的高级查询&#xff1a;一对多和多对多&#xff0c;现在记录一下&#xff0c;方便以后用到的时候再回顾&#xff0c;下面是具体的操作步骤 一、首先就是配置Mybatis的xml文件及mapper的xml文件&#xff0c;在这里就不多说了&#xff0c;之前写过这个基本…

[Leedcode][第215题][JAVA][数组中的第K个最大元素][快排][优先队列]

【问题描述】[中等] 在未排序的数组中找到第 k 个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k 2 输出: 5 示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k 4 输出: 4 说明:你可…

CF#420 B. Okabe and Banana Trees 思维|暴力|几何

Okabe needs bananas for one of his experiments for some strange reason. So he decides to go to the forest and cut banana trees. Consider the point (x, y) in the 2D plane such thatx andy are integers and0 ≤ x, y. There is a tree in such a point, and i…

30jquery-qrcode生成二维码

链接&#xff1a;https://pan.baidu.com/s/1KHzX_jFFBaw4QBKBR8UrgA 提取码&#xff1a;qmdo 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 如上所示&#xff0c;建立一个web程序 <% page language"java" contentType"text/html; charsetUTF-…

Linux系统添加永久静态路由的方法

一、使用route命令添加 使用route 命令添加的路由&#xff0c;机器重启或者网卡重启后路由就失效了&#xff0c;方法&#xff1a;A、添加到主机的路由# route add –host 192.168.1.10 dev eth0# route add –host 192.168.1.10 gw 192.168.1.1B、添加到网络的路由# route add …

[剑指offer]面试题第[50]题[JAVA][第一个只出现一次的字符][哈希表][HashMap]

【问题描述】[简单] 在字符串 s 中找出第一个只出现一次的字符。如果没有&#xff0c;返回一个单空格。 s 只包含小写字母。示例:s "abaccdeff" 返回 "b"s "" 返回 " "【解答思路】 1. 哈希表 时间复杂度&#xff1a;O(N) 空间复…

31.javaweb简介

1 2 3 4 5 6 7javaweb程序简介

K-Dominant Character CodeForces - 888C 思维 构造

题意 让我们在这个字符串中找一定k长度的字串中都至少含有一个相同的字符 让求这个字串的最小长度 分析 也就是说当我们最终确定了 字串的最小长度后 每个以此长度的字串都至少含有一个相同字符 那么当我们找这个长度的时候 也就是说 每个k长度的字串中都至少出现一个相同的…

display:table的用法

目前&#xff0c;在大多数开发环境中&#xff0c;已经基本不用table元素来做网页布局了&#xff0c;取而代之的是divcss&#xff0c;那么为什么不用table系表格元素呢&#xff1f; 1、用DIVCSS编写出来的文件k数比用table写出来的要小&#xff0c;不信你在页面中放1000个table和…

[剑指offer]面试题第[38]题[JAVA][字符串的排列][回溯法]

【问题描述】[中等] 输入一个字符串&#xff0c;打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组&#xff0c;但里面不能有重复元素。示例: 输入&#xff1a;s "abc" 输出&#xff1a;["abc","acb","bac",&qu…

32tomcat的目录结构

<% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>歌谣</title> </head> <bod…

Codeforces Round #413 C-Fountains 树状数组

题意 本题给我们给我们两种货币初始金额 每种货币分别对应能买不同种类的喷泉 每个喷泉有花费和价值 问我们如果单纯建造两个喷泉在限定金额内的最大值 分析 考虑一下 发现有三种情况 &#xff11; 两个喷泉从coin中里建造 &#xff12; 两个喷泉从diamond中建造 &…

[剑指offer]面试题第[52]题[Leedcode][第160题][JAVA][相交链表][双指针]

【问题描述】[简单] 【解答思路】 1. 双指针法 时间复杂度&#xff1a;O(N^2) 空间复杂度&#xff1a;O(1) public ListNode getIntersectionNode(ListNode headA, ListNode headB) {if (headA null || headB null) return null;ListNode pA headA, pB headB;while (pA !…

redis 分布式锁实现

<?php /*** 实现Redis分布锁*/$key test; //要更新信息的缓存KEY $lockKey lock:.$key; //设置锁KEY $lockExpire 10; //设置锁的有效期为10秒 //获取缓存信息 $result $redis->get($key); //判断缓存中是否有数据 if(empty($result)) { $status TRUE…

33tomcat目录结构

1创建一个myhome文件 2创建一个index.jsp文件 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%><!DOCTYPE html><html><head><meta charset"utf-8"><title>歌…

CodeForces 799B (B) T-shirt buying

分析 本题实质上就是对数据处理一下就可以了 就是数据结构实现题 我们要求对应索引下按照某种排序规则的线性表时 取最优时 可以用堆 每次拿出一个元素 堆内元素调整顺序 然后用三个堆 就可以表示三张表 每次我们得到顾客的一个喜欢颜色 就可以利用这个颜色去查堆 找到就输出…