思维
文章平均质量分 65
tzteyang
这个作者很懒,什么都没留下…
展开
-
NWERC2020 A - Atomic Energy (背包 + 思维)
题意:给你nnn个神经元,从1−n1 - n1−n编号,我们可以认为编号为iii的神经元的体积为iii,带有aia_iai的能量。然后一共有qqq个询问,每个询问带有一个kkk,你需要回答,当一个体积为kkk的神经元分裂是会释放多少能量,能量释放按照以下规则:一个体积为kkk的神经元,每次可以分解为两个体积分别为i,ji,ji,j的神经元,需要保证i+j=ki + j = ki+j=k,当一个神经元体积v≤nv \leq nv≤n时,他将立即释放ava_vav的能量。每次询问,你需要回答能释放的最原创 2021-05-25 20:23:51 · 774 阅读 · 0 评论 -
2020ICPC昆明 J - Parallel Sort 思维 + 构造
题意:给定你一个长度为nnn的排列。你一共可以进行若干轮的操作,每一轮的操作是,你在这一轮中可以选择若干对的下标位置(x1,y1),(x2,y2),...,(xk,yk)(x_1,y_1),(x_2,y_2),...,(x_k,y_k)(x1,y1),(x2,y2),...,(xk,yk)然后这2∗k2 * k2∗k个数必须要两两不相同,即一个数最多只能出现一次,然后问你最少能经过多少轮操作,使得这个初始的排列变得有序起来。思路:当时比赛的时候,不知道pairwise dist原创 2021-05-24 21:50:32 · 138 阅读 · 0 评论 -
HDU6258(2018XTCPC)J - Vertex Cover (组合计数)
题意:思路:考虑如何构造连边使得BoboBoboBobo当前选择的点是最优的选择,需要一直以维护这个最优为目的来构造。考虑当前点如果被涂色且序号为iii的话,那么表示这个点至少要连出去一条边,为了避免重复计数答案,我们只考虑比iii大的jjj点,即点权值2j>2i2^j > 2^i2j>2i,很明显所有的点权值比当前大的点我都可以和它连边,但是不可以不连,(因为不连边的话,而又要保证当前点是被染色的点,那么就一定要向小的点权节点连边,但是如果这样的话,完全可以不染色iii点,就可以原创 2021-05-04 10:34:29 · 96 阅读 · 0 评论 -
Codeforces 439 C - Devu and Partitioning of the Array(思维)
题意:给定你nnn个互不相同的数,然后给定一个k,pk,pk,p表示把这nnn个数分为kkk组,一组内的数可以是不连续的。问你能否使得其中的ppp组每组的和为偶数,剩下的k−pk-pk−p组的和为奇数。思路:因为偶数之间无论怎么组合变化都不可能变成奇数,所以k−pk-pk−p组的奇数我们只能通过奇数构造,我们先令k−pk-pk−p组每一组都含有一个奇数,填任意奇数个的奇数与填一个奇数是没有区别的,所以肯定是尽可能留更多的奇数放到后面填充是更好的。然后再填kkk个偶数,也是每组填一个即可,如果偶数不够原创 2021-04-27 19:08:17 · 118 阅读 · 0 评论 -
Codeforces 437 D - The Child and Zoo (思维 + 并查集)
题意:给定你nnn个点,mmm条边,每个点都有一个点权值viv_ivi,然后我们这样定义f(p,q)f(p,q)f(p,q),假设从点ppp到qqq的有若干条简单路径,每条路径中都有一个最小值,f(p,q)f(p,q)f(p,q)等于这个若干个最小值中的最大值。然后现在让你求出所有的点对(u,v)的f(u,v)f(u,v)f(u,v)的和,并除点对数,求平均值。思路:我们的目标就是要求的这个点对的和为多少。很明显数据范围就告诉我们,我们应该考虑算每个点权的贡献,这里需要第一个转化把点权值转化成边权原创 2021-04-27 15:39:54 · 111 阅读 · 0 评论 -
Codeforces Round #710 F,G
F.题意:给定你一棵这样的图,每一行的标号为rir_iri,在第rir_iri行中,每一列的标号又为cic_ici,每个点都会有两条边向下延出,规定如果ri+cir_i+c_iri+ci是偶数,就是左侧的那条边被激活,否则的话就是右边的那条边被激活,假如走一条被激活的边是不需要花费,如果想走没有被激活的那条边就要先把未被激活的那条边和激活的那条边用一的花费对换一下,然后就可以了。然后问你假如要从(1,1)(1,1)(1,1)点开始走,走完这nnn个点的话,最小的花费是多少。思路:题目既原创 2021-04-22 15:01:56 · 103 阅读 · 0 评论 -
Codeforces Round #709 A - D
A-CA-Prison BreakB-Restore ModuloC - Basic DiplomacyA-Prison Break题意:给定你一个a∗ba*ba∗b的矩阵,把它看做一个监狱,然后问你最少打通多少面墙能使得一个人处于矩阵的任意一个方格内都可以逃脱。思路:找规律发现就是a∗ba * ba∗b面。#include <bits/stdc++.h>using namespace std;#define pb emplace_back#define MP make_p原创 2021-04-15 17:00:31 · 87 阅读 · 0 评论 -
BAPC 2020 Preliminaries G-Group project (思维)
题意:n个人分别编号为1-n,然后给出你m对的不喜欢关系,(u,v)(u,v)(u,v)代表u和v为无法配对,这个dislike关系是没有传递性并且题目保证不会一定有解,也就是不会出现(1,2),(2,3),(3,1)(1,2),(2,3),(3,1)(1,2),(2,3),(3,1)这种关系,问你最多满足题目条件的情况下,能构造多少对二元组。思路:模拟把这n个人分为两组,假设i属于第一个组,那么和i相连的点都把他放到第二个组里,也就是保证每个组内都是可以互相配对的,假如最后两个组的人数都是偶数,很明原创 2021-04-13 14:28:21 · 168 阅读 · 0 评论 -
Codeforces 707(Div2) D - Two chandeliers (二分 + 拓展中国剩余定理)
题意:很长一大串的题意,可以化简为给定你两个序列,每个序列中都不会有重复的数,然后这两个序列都可以分别看做是可无限延伸循环的,然后给定你一个数字kkk,iii从111开始,问你iii到达多少后,前iii对ai,bia_i,b_iai,bi中,有kkk个位置ai≠bia_i \neq b_iai=bi。很明显影响iii因素是有多个位置他们的ai=bia_i = b_iai=bi,假如对于一个值valvalval,它在aaa中位置是xxx,在bbb中的位置时yyy,那么也就是找到一个最小的.原创 2021-03-15 14:31:14 · 497 阅读 · 0 评论 -
Codeforces Round #706 (Div. 2) C,D
Codeforces Round #706 C-Diamond MinerD-Let's Go HikingC-Diamond Miner题意: 分别给定你一堆在y轴的上的点,和x轴上的点,一个y轴有且只有一个x轴的点和它连接,问最后这些点都互相链接之后,所有点对的距离和最小为多少?思路:我们把所有的点按照距离原点的距离排一下序,画一下图就可以发现,一定是从y轴距离原点最近的点去连此时还未连接的x轴上距离原点最近的点。把这个四个点放到一个平行四边形中,很明显的两条对角线的和一定大于两条边的和。原创 2021-03-11 21:56:16 · 118 阅读 · 0 评论 -
Codeforces Round #698 (Div. 2) C - Nezzar and Symmetric Array (找规律)
题意:定义一下对称序列,对于序列的每个元素,它和它的相反数均存在于这个序列中。然后按照题目的要求定义数组d,问你给定一个数组d,能否找到一个序列a来生成数组d。思路:一开始并没有什么思路,但是看到数据和对称的性质,手写几组数据就会发现,假如一个绝对值较大的数和两个绝对值较小的对称数做差绝对值求和的话,就会发现结果是等于这个大的绝对值的两倍的,例如4,-4,2,2,1,-1。既然是两倍,那么d数组中的数一定是偶数,并且是成对出现的,不符合这种情况的可以直接输出NO。然后,我们去找d数组的最大值dmaxd.原创 2021-01-29 13:53:55 · 166 阅读 · 0 评论 -
2020 ICPC Asia Taipei-Hsinchu Regional C - Pyramid (思维)
题意:一个倒三角金字塔的每个节点上都有一个开关,然后开关初始状态都是向左打开,每次当小球经过一个节点时,该节点的开关状态就会改变,从左变为右,或者从右变为左。然后问你第K次放置的小球会从哪个出口离开,对角线线上的点就是出口的位置。思路:思维的点就是,看上一层和下一层之间的节点状态变化关系,因为只有左右两种方向,那么对于某个节点,假如一个小球经过他x次,那么他左边的顶点就会经过(x+1)/2次,右边就是x/2次,这样我们就可以从开始的节点往下递推一下,得到整张图的某个节点经过的次数,它的第k次的节点状态也.原创 2021-01-27 10:42:54 · 644 阅读 · 0 评论 -
Codeforces Global Round 12 D.Rating Compression (单调栈 + 思维 + 树状数组)
题意:给定你一个序列,然后假如给你一个k,然后对原序列每k个元素求一下最小,这样会求出n-k+1的最小值,如果这个n-k+1个最小值能组成一个1到n-k+1的排列那么对应答案的第k位1,否则为0,然后问你对于所有的1<=k<=n,对应的k为多少?思路:方法来自这个大佬我们考虑用两个单调栈一个维护aia_iai作为最小的的左端点在哪里,另一个维护aia_iai作为最大值的右端点在哪里。这样就能够求出aia_iai作为最小值的区间是[Li,RiL_i,R_iLi,Ri],区间长度即为.原创 2020-12-08 13:09:22 · 333 阅读 · 0 评论 -
Codeforces Round #688 (Div. 2)B.Suffix Operations (思维)
题意:给定你一个长度为n的序列,你有两种操作,给这个序列的后缀加一或者减一,序列的后缀定义和字符串的后缀定义相同,还有你开始在所有的操作开始的时候,选择把一个数变成任意的数,这个操作不计入总的操作次数,然后问你最少需要操作几次,才能将这个序列都变成相等的数。思路:如果不看那个额外的操作,我们想把a1a_1a1和a2,a3,....ana_2,a_3,....a_na2,a3,....an都变成相等的,那么就一定要先把a2,a3,....ana_2,a_3,....a_na2,a3,....a.原创 2020-12-07 18:33:51 · 129 阅读 · 0 评论 -
2020CCPC绵阳站 L-Lottery (很好的思维题 + 二进制思想)
代码:#include<bits/stdc++.h>using namespace std;const int mod=1e9+7;struct Node{ long long a,x;}a[100010];long long b[100010];bool cmp(Node a,Node b){ return a.a<b.a;}long long q_pow(long a,long b){ long long res = 1; a %= mod; while.原创 2020-11-11 21:55:54 · 821 阅读 · 1 评论