题解
文章平均质量分 52
WarYan
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final)
Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final)A. Kids Seating题意给你一个数n,让你输出n个数,在1~4n范围内,且他们之间任意两个数都不能直接相除,且gcd不等于1思路因为要使他们gcd不等于1而且任意两个数都不能直接相除,那么要满足这么多数必然是个偶数,在偶数的前提下要使两个数不能直接相除,则倒序输出#include<bits/stdc++.h>using namespace st原创 2021-01-28 17:40:30 · 206 阅读 · 0 评论 -
Codeforces Round #697 (Div. 3)
Codeforces Round #697 (Div. 3)A. Odd Divisor题意给你一个n(2≤n≤10142\leq n\leq 10^{14}2≤n≤1014)问你n是否有奇数因子不包括1但包括它本身。思路在质因数分解时只有2是偶数,所以不断对一个数除以2,然后判断最后是不是为1就可以。#include<bits/stdc++.h>using namespace std;typedef long long LL;#define int long longcon原创 2021-01-27 20:09:08 · 208 阅读 · 0 评论 -
Codeforces Round #690 (Div. 3)
Codeforces Round #690 (Div. 3)B. Last Year’s Substring题意让你在字符串中删除一段连续的区间是否能凑齐2020思路如果要删除一段连续的区间那么直接讨论所有情况,因为2020只有4个字符。全在左,全在右…#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 10;typedef long long LL;void solve() { int n; ci原创 2021-01-25 18:28:59 · 240 阅读 · 0 评论 -
Codeforces Round #695 (Div. 2)C. Three Bags(思维)
C. Three Bags题意给你三个集合,然后让你将其变为1个,问你最大和。每次操作可以从两个不同的集合中选择a,b然后进行a - b后将a-b放回a所在集合,b丢弃思路参考:https://www.cnblogs.com/JDFZ-ZZ/p/14254933.html每次选择a,b其实就是给a,b建一条边当我们给a,b建一条边后,我们再加入一条边,我们发现整个过程只有深度为奇数的点被减去了(根深度为0),问题转换为,我们需要找到和最小的奇数点来作为转移。[外链图片转存失败,源站可能有防原创 2021-01-22 23:01:56 · 117 阅读 · 0 评论 -
Codeforces Round #692 C. Peaceful Rooks
Codeforces Round #692 (Div. 2, based on Technocup 2021 Elimination Round 3)C. Peaceful Rooks题意给你一个n*n的表格和m个(m<n)棋子,棋子不会在同一行或同一列中出现两个,问你最少要多少步才能将其全部移到主对角的位置思路起初想的是我去判断少量的点,来判断他的特殊性,然后我发现(2,3),(3,2)这样的坐标点需要3次,然后如果不是横纵坐标刚好相反的点,但是其所在位置的对角线位置横纵坐标均有棋子存在,原创 2021-01-22 11:07:28 · 170 阅读 · 0 评论 -
Codeforces Round #696 (Div. 2) D. Cleaning(思维)
题意给你n堆石头,每次你能让相邻的两个石头-1,且开局时你有一个特殊操作可以交换两个相邻的堆。问你能否实现将所有的堆都减为0思路考虑消除过程:给定一个序列:a1,a2,a3,a4...an−2,an−1,ana_1,a_2,a_3,a_4...a_{n-2},a_{n-1},a_na1,a2,a3,a4...an−2,an−1,an正向消除:a1−0,a2−(a1−0),a3−(a2−(a1−0))...a_1-0, a_2-(a_1-0),a_3-(a_2-(a_1-0))..原创 2021-01-21 18:05:37 · 184 阅读 · 1 评论 -
Codeforces Round #685 (Div. 2)B. Non-Substring Subsequence(思维)
B. Non-Substring Subsequence题意给你一个长度为n的01字符串,然后有q次询问,每次询问为l,r,问你有没有不连续的子序列与l,r这段区间内的字符串相等思路刚开始的思路比较奇怪,以为自己猜到了重点,结果vp完以后发现只需要判断第一位和最后一位即可。刚开始我是想如果没有其他解,那么一定是从刚开始连续一直到结尾的这一种解,但是我似乎没有想到l,r区间本身就是这样的。于是我判断了第一位开始是否有r-l位连续的,如果有的话我需要判断下一位的位置是否有多种,如果没有r-l位连续的话原创 2021-01-20 11:56:21 · 95 阅读 · 0 评论 -
Codeforces Round #688 (Div. 2)C. Triangles(思维+贪心)
题意给你一个n*n的由0~9组成的矩阵,问你相同数组组成的三角形,其中一条边必须平行于x轴或y轴,而且可以自己随机加一个点,然后问你0~9数组分别组成的三角形的面积乘以2的最大值。思路首先找出每个数字的x轴方向最大最小,y轴方向最大最小,然后去遍历每个相应的点和这些最大最小组合后的最大面积。自己选的一个点一定是选在边界的#include<bits/stdc++.h>using namespace std;const int N = 2e3 + 100;typedef long l原创 2021-01-19 10:34:16 · 80 阅读 · 0 评论 -
Codeforces Round #688 (Div. 2)B. Suffix Operations(思维+贡献)
B. Suffix Operations题意给你n个数,然后有两个规则:给后缀增1给后缀减1其中有一个特殊操作,可以任意修改一个数字。问你使n个数变为相同的最小操作书是多少。思路考虑不加特殊操作的使ai+1a_{i+1}ai+1变为aia_iai的最小代价,ans=abs(ai+1−ai)+abs(ai+2−ai+1)...abs(an−an−1)ans = abs(a_{i + 1} - a_i) + abs(a_{i+ 2}- a{i +1})...abs(a_{n} - a_{原创 2021-01-19 10:33:46 · 163 阅读 · 0 评论 -
Codeforces Round #689 (Div. 2, based on Zed Code Competition)D. Divide and Summarize(分治+dfs)
D. Divide and Summarize题意给你n个数,q次询问,问你能否具有满足和为s的序列。思路再求其有多少种和时需要使用mid=max+min>>1mid = max + min >> 1mid=max+min>>1来寻找有多少种和。然后dfs,但是需要判断一下左面或者右面全部相等情况,否则会爆栈#include<bits/stdc++.h>using namespace std;const int N = 2e5 + 100;t原创 2021-01-18 23:19:46 · 150 阅读 · 0 评论 -
Codeforces Round #689 (Div. 2, based on Zed Code Competition)B. Find the Spruce(dp + 重复利用)
B. Find the Spruce题意给你一个n行m列由*或者.组成的图形,一个图形高度为k时当且仅当满足1≤i≤k1 \leq i \leq k1≤i≤k时,第x+i−1x + i - 1x+i−1行必须满足在区间[y−i+1,y+i−1][y - i + 1, y +i-1][y−i+1,y+i−1]全部都是’*’思路暴力解决方法我们暴力判断当前行是否满足,如果满足我们继续将k加大然后继续向下判断,判断k的整个过程具有连续性,比如说当k=3k=3k=3时会重复判断k=2k=2k=2时的情况,原创 2021-01-18 23:14:26 · 81 阅读 · 0 评论 -
Codeforces Round #689 (Div. 2, based on Zed Code Competition)C. Random Events(思维)
B. Find the Spruce题意给你一个n行m列由*或者.组成的图形,一个图形高度为k时当且仅当满足1≤i≤k1 \leq i \leq k1≤i≤k时,第x+i−1x + i - 1x+i−1行必须满足在区间[y−i+1,y+i−1][y - i + 1, y +i-1][y−i+1,y+i−1]全部都是’*’思路暴力解决方法我们暴力判断当前行是否满足,如果满足我们继续将k加大然后继续向下判断,判断k的整个过程具有连续性,比如说当k=3k=3k=3时会重复判断k=2k=2k=2时的情况,原创 2021-01-18 21:33:10 · 103 阅读 · 0 评论 -
Educational Codeforces Round 101 (Rated for Div. 2)D. Ceil Divisions
D. Ceil Divisions题意给你n个数,每次可以这样操作(x≢y,ax=⌈ay/ax⌉)(x\not\equiv y,a_x = \lceil{a_y/a_x}\rceil)(x≡y,ax=⌈ay/ax⌉),问你最多操作n+5次使最后变为一个2和n-1个1思路首先考虑时间复杂度3≤∑n≤2∗1053 \leq \sum n \leq 2*10^53≤∑n≤2∗105我们发现必须在O(nlogn)O(nlogn)O(nlogn)以为来解决这个问题,然后通过找规律我们发现要使其在n原创 2021-01-18 21:17:42 · 124 阅读 · 0 评论 -
Educational Codeforces Round 101 (Rated for Div. 2)C. Building a Fence(思维+区间处理)
C. Building a Fence题意给你n个基础高度和一个栅栏的长度k,如果建造这整个栅栏的过程可以满足所有规则,那么输出yes规则是:两个连续的相邻栅栏之间必须有长度为1的接触第一个和最后一个栅栏必须和地接触需要注意的是除了第一个和最后一个其他的栅栏也均不能超过地的高度大于k-1思路我们发现我们可以通过处理整个过程的最大高度和最小高度的所处区间来解决问题。设lll为当前的最小高度,rrr为当前的最大高度,当最小高度大于最大高度的时候输出no,然后我们在整个过程中的个原创 2021-01-18 20:53:36 · 310 阅读 · 0 评论 -
Codeforces Round #693 (Div. 3)G. Moving to the Capital(dfs)
G. Moving to the Capital题意给你n个点m条长度为1的单向边,其中顶点1为中心城市,然后d[i]表示1−>i1->i1−>i的距离。要求:有一次特殊操作可以从d[i]>d[j],i−>jd[i] > d[j], i -> jd[i]>d[j],i−>j,其他的都只能d[i]<d[j],i−>jd[i] < d[j], i ->jd[i]<d[j],i−>j。问你各个顶点在符合要求的条件下移动原创 2021-01-18 20:28:50 · 199 阅读 · 0 评论 -
Codeforces Round #693 (Div. 3)E. Correct Placement
E. Correct Placement题意你有n个朋友,每个朋友具有hi,wih_i,w_ihi,wi两个属性,让你在满足条件下,求第i个朋友是否具有能放在其前面的朋友,输出对应的id思路因为h,w可以交换,所以我们将所有的h,w中大的作为y,小的作为x,然后按一定的规则排序。排序后我们用双指针去寻找在i前面的最小的朋友,然后将其放到i的前面即可。注意要时刻更新最小值。#include<bits/stdc++.h>using namespace std;const int原创 2021-01-17 19:34:11 · 135 阅读 · 0 评论 -
Codeforces Round #694 (Div. 2)F. Strange Housing(染色)
题意:给你n个点和m条双向边,让你在满足两个老师不相邻的情况下输出老师的点的集合。思路可以发现是一个染色问题,让你输出染色为某个值的所有点。vis[i]=1vis[i] = 1vis[i]=1表示染成学生,vis[i]=2vis[i] = 2vis[i]=2表示染成老师。假设将u染色为2,则与其相邻的边必须全部染为1如果图不联通输出NO。#include<bits/stdc++.h>using namespace std;const int N = 3e5 + 100;/原创 2021-01-17 19:23:46 · 130 阅读 · 0 评论 -
Codeforces Round #694 (Div. 2)D. Strange Definition(hash+数学+思维)
D. Strange Definition题目大意:给你nnn个数,qqq次询问。其中xxx和yyy相邻需要满足lcm(x,y)/gcd(x,y)lcm(x,y) / gcd(x,y)lcm(x,y)/gcd(x,y)是一个平方数。每经过1秒,相应的序列会变为和他相邻的集合的乘积。定义did_idi是和aia_iai相邻的元素的个数。让你求最大的did_idi思路:首先化简lcm(x,y)/gcd(x,y)−>x∗y/gcd(x,y)2lcm(x,y)/gcd(x,y)->x原创 2021-01-17 11:33:52 · 129 阅读 · 0 评论 -
Educational Codeforces Round 102 (Rated for Div. 2)D. Program
D. Program题意给你一个xxx初始值为0,然后给你一系列+−+-+−操作,问你忽略掉[l,r][l, r][l,r]区间的操作后,经过一系列操作,操作过程中会出现多少个不同的数字。比如说:0,1,2算三种,0,1, 0算2种思路容易发现一个区间[x,y][x,y][x,y]其中出现的数的可能有max([x,y])−min([x,y])max([x,y])-min([x,y])max([x,y])−min([x,y])但是需要注意和0的关系问题,因为xxx的初始值为0。三种情况分情况讨论:原创 2021-01-16 22:24:48 · 118 阅读 · 0 评论 -
(NC208350)牛客小白月赛28F.牛牛的健身运动
题意给出nnn种健身器材,还有mmm天进行比赛。第iii种健身器材有两个属性ai,bia_i,b_iai,bi。牛牛和可乐要进行马拉松大赛,牛牛比较自信,在mmm天中他准备选择一天来健身房锻炼。牛牛只能选择两种健身器材进行锻炼,从第一天开始,第k天第i种器材将会增加牛牛k∗ai+bik*a_i+b_ik∗ai+bi的力量,但是牛可乐为了胜利,所以每天都会来健身房只留下两个增加力量最小的健身器材,牛牛想增加最大的力量,那么他在哪一天来会增加最大的力量。思路我们假设选择了的两种器材会增加k∗(a原创 2020-12-10 11:33:20 · 236 阅读 · 0 评论 -
L3-1 那就别担心了 (30分)
题目下图转自“英式没品笑话百科”的新浪微博 —— 所以无论有没有遇到难题,其实都不用担心。博主将这种逻辑推演称为“逻辑自洽”,即从某个命题出发的所有推理路径都会将结论引导到同一个最终命题(开玩笑的,千万别以为这是真正的逻辑自洽的定义……)。现给定一个更为复杂的逻辑推理图,本题就请你检查从一个给定命题到另一个命题的推理是否是“逻辑自洽”的,以及存在多少种不同的推理路径。例如上图,从“你遇到难题了吗?”到“那就别担心了”就是一种“逻辑自洽”的推理,一共有 3 条不同的推理路径。输入格式:输入首先在一行原创 2020-12-01 13:06:01 · 660 阅读 · 0 评论 -
E. Number of Simple Paths(基环树 + 思维)
题意给你n个点n条边的图,让你求树上的简单路径数。简单路径:从a->b的方法,需要注意的是1->2>3,3->2->1算一种思路显然建成后的图是一棵树多了一条边,这种图又叫环基树。从下图开始分析该题:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AUVzuPnl-1606305306866)(https://gitee.com/waryan/pictures/raw/master/img/P25L5TCLEAF~S9C]D4Q}XBC原创 2020-11-25 19:55:37 · 495 阅读 · 0 评论 -
(NC213863)牛客小白月赛29J.克隆
题意给你n个点m条边的无向连通图。并且给你k个分身。每个分身在一个晚上只能经过(2∗n−k−1)/k(2 * n - k - 1) / k(2∗n−k−1)/k个点,并且经过的相邻的两点之间必须有连边(这些点可以重复)。想知道存不存在一种方案使得每个点至少被一个分身经过。思路根据2∗n2*n2∗n和只能经过相邻的点的提示,我们想到欧拉序,在欧拉序上走必然是可以经过每个点的。然后我们考虑分身放在哪些点。显然我们以最大步长去枚举即可,多出来的分身都走0个点就好了。欧拉序在dfsdfsdfs序的基础上原创 2020-11-23 20:37:47 · 101 阅读 · 0 评论 -
(NC213862修改)牛客小白月赛29I.修改
题意给你m种操作,第i中操作可以吧[li,ri][l_i,r_i][li,ri]之间的数全部加一或减一,但是使用这种操作你需要花费wiw_iwi的费用,然后就可以无限次的使用这种才做。需要输出让一个数列的所有数都变为0的最小花费代价。思路给一个区间内的数加减,我们想到了差分数组,但是如何利用这个差分数组的性质来解决问题呢?为了让数列内的所有数都能变为0那么我们需要可以修改任意一个点的值,因为这个数列是不确定的。我们考虑建立一个虚点,使其他任意点都在以虚点为根的树上,此时,虚点可以和任意地方原创 2020-11-23 19:25:01 · 116 阅读 · 0 评论 -
(NC213758种树)牛客小白月赛29D种树
思路直接猜测深度大于m的用小剪刀,小于等于m的用大剪刀(在根的深度为1的情况下)#include<bits/stdc++.h>using namespace std;//#define int long longconst int maxn = 5e5 + 10;int lson[maxn], rson[maxn], val[maxn], dep[maxn];int m = 0;void dfs(int u) { if (!lson[u]) return;原创 2020-11-23 19:23:58 · 86 阅读 · 0 评论 -
(NC213756 二进制)牛客小白月赛29B-二进制
NC213756 二进制题意要你制作的计算机中给你3中操作,分别是(仅接受0 220−10~2^20-10 220−1)opi=1op_i = 1opi=1时,表示这次操作xxx与aia_iai做与运算opi=2op_i = 2opi=2时,表示这次操作xxx与aia_iai做或运算opi=3op_i = 3opi=3时,表示这次操作xxx与aia_iai做异或运算给你n多次操作让你减少到小于等于5次思路每次叙述都是a的最后一位。当op=1op=1op=1时原创 2020-11-23 19:21:37 · 175 阅读 · 0 评论 -
Codeforces Round #683 (Div. 2, by Meet IT)D. Catching Cheaters
题意给你两个字符串A,BA,BA,B,让你从A,BA,BA,B中找到连续的子串CCC,DDD其4∗LCS(C,D)−∣C∣−∣D∣4 * LCS(C,D) - |C| - |D|4∗LCS(C,D)−∣C∣−∣D∣最大,LCSLCSLCS是最长公共子序列思路最长公共子序列的变形,只需要求出每一步的贡献即可。当s1[i]==s2[j]s1[i]==s2[j]s1[i]==s2[j]时,贡献+2+2+2,但是需要注意负数的情况当s1[i]!=s2[j]s1[i]!=s2[j]s1[i]!=s2[j]时原创 2020-11-16 12:29:43 · 463 阅读 · 0 评论 -
Codeforces Round #683 (Div. 2, by Meet IT)C. Knapsack
题意给你一个上界WWW和一系列权值wiw_iwi,让你找到权值中任意一个或多个的和满足(W+1)/2≤sum≤W(W + 1) / 2\leq sum \leq W(W+1)/2≤sum≤W思路从大到小贪心。证明: 假设我贪到了一个这个数本身是满足(W+1)/2≤sum≤W(W + 1) / 2\leq sum \leq W(W+1)/2≤sum≤W那么我可以直接输出。 假设所有的权值都是不满足(W+1)/2≤sum≤W(W + 1) / 2\leq sum \leq W(W+1)/2≤s原创 2020-11-16 12:29:20 · 218 阅读 · 0 评论 -
Codeforces Round #682 (Div. 2)C. Engineer Artem(思维)
题意让你构造一个矩阵使某个数字与周围的不能相等思路我们考虑行+列的奇偶性,我们容易发现的是如果行+列是奇数那么他对应的是一个全部不相交的数,行+列为奇数的则是剩下的数,我们发现只要让这两类的数各位奇偶便可以构造成功,这里让行+列是偶数的构造为偶数,为奇数的构造为奇数。#include<bits/stdc++.h>using namespace std;const int mod = 1e9 + 7;int ma[105][105];void solve() { i原创 2020-11-15 22:20:17 · 424 阅读 · 0 评论 -
Codeforces Round #680 (Div. 2)C. Division
Codeforces Round #680 (Div. 2, based on Moscow Team Olympiad)C. Division题意让你找到最大的xxx满足pi%x==0x%qi!=0p_i \% x == 0\\x \% q_i !=0pi%x==0x%qi!=0思路分为三类情况:如果 p<qp < qp<q,那么直接输出ppp如果p%q!=0p\%q!=0p%q!=0,也是直接输出ppp当p%q==0p\%q==0p%q==0时,我们需要将pp原创 2020-11-07 11:54:05 · 113 阅读 · 2 评论 -
D. Minimal Height Tree
Educational Codeforces Round 97 (Rated for Div. 2)D. Minimal Height Tree题意给你一个bfs序列让你还原树,求树的最大深度。需要注意的是给你的序列中如果是升序的那么他们是属于一个父亲的。思路建图模拟整个过程。整个代码中最细节的是if(a[j]<a[j-1]){ q.push(a[j]),edge[u].push_back(a[j]);++j;}保证了可以考虑到每一种情况。#include<bits原创 2020-10-29 20:07:11 · 185 阅读 · 0 评论 -
C. Chef Monocarp
思路dp[i][j]表示前i秒选了j个。容易得状态转移方程:dp[i][j]=min(dp[i−1][j],dp[i−1][j−1]+abs(a[j]−i))dp[i][j]=min(dp[i-1][j],dp[i-1][j-1]+abs(a[j]-i))dp[i][j]=min(dp[i−1][j],dp[i−1][j−1]+abs(a[j]−i))再考虑aaa数组为什么要排序,为了保证符合dp的’性质’,不排序的话dp是不对的。#include<bits/stdc++.h>us原创 2020-10-28 21:35:35 · 170 阅读 · 0 评论 -
Codeforces Round #120 (Div. 2) C. STL
Codeforces Round #120 (Div. 2) C. STLCodeforces Round #120 (Div. 2) C. STL给出只会出现pair和int的字符串,要求按照给出pair和int的顺序,添加’<’ , ‘>’ , ','这三个符号,使得给出的串成为一个合法的类型.Input第一行一个整数 n (1 ≤ n ≤ 105), 表示包含n个int第二行是一些 “pair” 和 “int”字符串总数不超过 105Output输出合法类型,若不合法则输出原创 2020-10-25 02:30:26 · 148 阅读 · 0 评论 -
G. Reducing Delivery Cost(最短路)
Codeforces Round #677 (Div. 3) G. Reducing Delivery Cost题目大意n个点,m条边,k个路径。你可以选择删除图中的一条边,问你删除后k个路径的长度和最小值。思路先n2lognn^2lognn2logn处理出所有路径。然后枚举m条边去掉其中一条后的最小路径值和。#include<bits/stdc++.h>using namespace std;const int maxn=1010;typedef long long ll;原创 2020-10-24 19:25:35 · 274 阅读 · 0 评论 -
HDU - 6736 F - Forest Program
题意给你n个点m条边,并且保证整个图是仙人掌。仙人掌:每条边仅属于1条或者0条回路且无重边和自环让你删掉一些边使其变成一棵树(拥有点数-1条边)注意一个点也是森林图可能是不联通的思路考虑环,显然一个环可以随便去掉几条边但是至少一条(也就是说不能是Cn0C_n^0Cn0)2x2^{x}2x-1,然后考虑非环那么共有m-(所有环的边数),然后可以随便去除边共2m−cnt2^{m-cnt}2m−cnt在找环时,求环的边数见dfsdfsdfs#include<iostream>#原创 2020-10-19 21:19:41 · 98 阅读 · 0 评论 -
HDU6739 2019CCPC秦皇岛I - Invoker
题意给你长度为3的字符串其可以变成{B, C, D, F, G, T, V, X, Y, Z}中的一种。给你一字符串str有{B, C, D, F, G, T, V, X, Y, Z}组成,让你变成相应的长度为3的字符串且要加R使其变成{B, C, D, F, G, T, V, X, Y, Z}中一种比如QQQR就变成了Y。长度为三的字符串顺序不定思路将无序的长度为3的字符串全排列写出来,然后根据条件写状态转移方程每种长度为3的字符串最多的排列是6种,后一种由前一种变化而来状态转移方程:dp原创 2020-10-18 22:13:29 · 169 阅读 · 0 评论 -
Codeforces Round #665 (Div. 2)
A. Distance and Axis题意:给出n,kn,kn,k分别表示A点的位置和abs(OB−AB)abs({OB}-{AB})abs(OB−AB)绝对值,现在让你找到点BBB合题目要求思路分为n≤kn\leq kn≤k此时显然移动距离为k−nk-nk−n当n>kn>kn>k时,显然需要把点BBB放到nnn和kkk之间又分为两种情况,如果nnn为奇数,kkk为偶数那么需要一步操作。如果nnn为偶数kkk为奇数那么也需要一步操作。#include<bits/s原创 2020-10-18 10:07:10 · 71 阅读 · 0 评论 -
D. Maximum Distributed Tree
题意给你n个点n-1条边的树,再给你m个素数pip_ipi其乘积为k,k很大。让你给每条边赋权,且n−1n-1n−1条边权乘积为klet∑i=1n−1∑j=i+1nf(i,j)\sum_{i=1}^{n-1}\sum_{j=i+1}^{n} f(i,j)∑i=1n−1∑j=i+1nf(i,j)思路建图后跑dfs求出sz数组,然后考虑每条边被经过的次数sz[i]∗(n−sz[i])sz[i]*(n-sz[i])sz[i]∗(n−sz[i])(为什么是这个公式,是因为他是一个全经过且不重边的图)原创 2020-10-18 10:06:36 · 139 阅读 · 0 评论 -
C. Mere Array
题意能否把他改为non−decreasingnon-decreasingnon−decreasing序列且更换时只能二者的gcdgcdgcd为数组最小的数时可以更换题意显然因为他说的数组中最小的数,那么要更换二者的gcdgcdgcd为该数就只能,每一个数和这个最小的数gcdgcdgcd都为最小的数。所以看一下不在位置上的gcd(x,minn)gcd(x,minn)gcd(x,minn)是否为minnminnminn即可#include<bits/stdc++.h>using na原创 2020-10-18 10:06:01 · 103 阅读 · 0 评论 -
B. Ternary Sequence
题意ci={aibiifai>bi0ifai=bi−aibiifai<bic_i=\begin{cases}a_ib_i\quad ifa_i>b_i\\0\quad \quad ifa_i=b_i\\-a_ib_i\quad ifa_i<b_i\end{cases}ci=⎩⎪⎨⎪⎧aibiifai>bi0ifai=bi−aibiifai<bi根据a数组和b数组相应关系定为权值,求最大权值和思路我们看到要想有收入只能aaa为2原创 2020-10-18 10:05:27 · 101 阅读 · 0 评论