- 博客(8)
- 收藏
- 关注
原创 Codeforces A. Copy-paste (#673 Div.2) (思维)
传送门 题意: 给你一个数列a,将a[i]的值加在a[j]上(i != j)且使得a[j] <= k。试问最多能操作多少次? 思路: 找到一个最小的数一直作为加数,试其他n-1个数都不超过k即可。 代码实现: #include<bits/stdc++.h> #define endl '\n' #define null NULL #define ll long long #define int long long #define pii pair<int, int> #def
2020-09-29 00:05:13 217
原创 Codeforces C. k-Amazing Numbers (#673 Div.2) (思维 / 区间枚举 / 最小前缀)
传送门 题意: 给出一个序列a,试问对于 1~n 的所有k,是否所有k长度的连续区间里的数都有共同的数交集,并输出这个数集中的min,否则输出 -1. 思路: 考虑相同数之间最少需要多长的k才能都包含到。枚举一个数和序列开头,中间数之间的差,最后一个数和序列结尾。 用一个ans[k]记录最少需要长度的k中最小的数字是哪个。ans[k]=min(ans[k],i)。 最后再维护下ans的最小前缀即可。 代码实现: #include<bits/stdc++.h> #define endl '
2020-09-28 23:36:35 317
原创 Codeforces D. Make Them Equal (#673 Div.2) (思维 / 构造)
传送门 题意: 给出一个数列,你可对其进行3n次操作,每次将位置i的数值减去 ix (0<=x<=1e9),然后另外一个位置j加上 ix。试问是否能在3n次操作内将所有数变成一样的数。 输出每次操作相应的 i, j, x. 思路: 由于要将数值均分,那么我们可以将所有权值加到同一个数上之后再来分配。 第一遍n-1次操作,将 2~n 的 a[i] 变成i的倍数。(比赛的时候没有想到该操作,还以为这是不满足条件的,┭┮﹏┭┮) 第二遍 n-1 次将 2~n的数值全部转移到a[1]上。 第三遍n-
2020-09-28 21:45:39 241 2
原创 L. Working Plan (优先队列 & 贪心思维 & 课表安排) ICPC Seoul 2018
思路: 现有m个人和n天的课表,要求安排一个可行方案,满足第j天有d[j]个人工作,第i个人总共工作w[i]天。且每个人一开始工作就必须连续工作w天,然后至少休息h天才能工作。如果有可行解第一行输出"1",然后输出m行,每i行含w[i]/w个数,表示第i个人每次工作的开头那天;无解直接输出"-1"。 从头按顺序开始安排每一天工作的任选,首选工作量最大的且可以工作(既没有在进行上一次工作,也休息了至少h天;且后w天都需要人工作)的人。 这个时候就用一个优先队列来存m个人的当前工作量情况,且用一个队列过渡。.
2020-09-05 22:06:00 234
原创 D. Go Latin (模拟 / 简单) ICPC Seoul 2018
思路: 就是那么个意思,就像英语单词的词性转换,模拟判断一下就好。 代码实现: #include<bits/stdc++.h> #define endl '\n' #define null NULL #define ll long long #define int long long #define pii pair<int, int> #define lowbit(x) (x &(-x)) #define ls(x) x<<1 #define rs(x) (x.
2020-09-05 20:13:23 158
原创 J. Easy Integration (逆元 & 分部积分) 2020牛客暑期多校训练营(第一场)
传送门 思路: 题意就是给你n,让求出下下列式子的结果: 很明显这就是数学方面的问题啦,这么菜的我在数学方面就更菜,反正最后看题解博客得知结果就是 (n)! / (2n+1)!。 代码实现: #include<bits/stdc++.h> //#define endl '\n' #define null NULL #define ll long long #define int long long #define pii pair<int, int> #define low
2020-09-05 16:58:44 135
原创 F. Infinite String Comparision (字符串 & 字典序) 2020牛客暑期多校训练营(第一场)
传送门 思路: 一般的思路无非就是模拟判断一下,当然就需要考虑到s和t的长度已经对应字符的字典序大小问题。 但是我看见一篇大佬博客写得妙啊! 代码实现: #include<bits/stdc++.h> #define endl '\n' #define null NULL #define ll long long #define int long long #define pii pair<int, int> #define lowbit(x) (x &(-x)) #
2020-09-05 16:38:28 126
原创 Codeforces1401D Maximum Distributed Tree (树dfs & 贪心)
传送门 题意: 给出一棵n个点的树,想让给每条边赋值,使得所有边权的乘积为k。因为k非常大,所有将k拆分成m个因子,换而言之就是n-1条边权的乘积得等于m个因子的乘积。 定义f(x, y)为点x到点y的简单路径所经过的所有边的权值和,现问怎么安排边权,才能让所有简单路径的 f 值和 (即下图所示公式)最大,并得到该max值。 思路: 若m < n-1,那么剩下的边用1来填充。 dfs找到每条边的经过次数,然后贪心一下将大的因子赋值给经过次数最多的边贡献就最多。 至于经过次数的计算,可以将 u -
2020-09-02 23:22:02 162
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人