![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Xcpc
文章平均质量分 53
_Jyq
这个作者很懒,什么都没留下…
展开
-
第十一届山东省大学生程序设计竞赛 K Piggy Calculator 笛卡尔树+倍增
link 题意:定义运算符号x(i), A x(i) B =(A+B)*i,i越大优先级越大,其次从左往右。,给定一个只有该符号的式子,q次询问求区间表达式的值。 题解:对符号建笛卡尔树,区间操作转化为在树上跑链的操作(要先维护前驱结点),存储一些信息后倍增就可以了。 #include<bits/stdc++.h> #define mp make_pair #define pb push_back #define SZ(x) (int)(x.size()) #define all(x) x.原创 2021-05-11 16:09:11 · 341 阅读 · 1 评论 -
cf 1485 F Copy or Prefix Sum 奇怪的dp
link 题意 有一数组BBB,求满足以下条件的数组AAA的个数B[i]=A[i],ORB[i]=∑j=1iA[j]B[i]=A[i] ,OR \\B[i]=\sum_{j=1}^{i}A [j]B[i]=A[i],ORB[i]=j=1∑iA[j] 题解 dp[i][j]dp[i][j]dp[i][j]表示∑k=1iA[k]=j\sum_{k=1}^{i}A[k]=j∑k=1iA[k]=j的方案数,那么显然有n2log2nn^2\log_{2}^{n}n2log2n的转移方程dp[i][j]原创 2021-02-14 21:59:54 · 258 阅读 · 1 评论 -
Educational Codeforces Round 97 (Rated for Div. 2) F ,G
link F: Emotional Fishermen 题意:n个数,求这n个数满足下面要求的排列数量 max[i-1]2<=a[i] OR max[i-1]>=2a[i] 思路:对于每一个前缀来说,出现的数字个数最多为 num[max[i]]+1,其中num表示max[i]>=a[j]的j的数量。 所以有dp[i]表示最大值为ai时的方案数 转移方程为:dp[i]=sigma(dp[j]A(n-num[j]-2,num[i]-num[j]-1)) 其实就是在更新前缀最大值时,考虑他所原创 2020-10-30 19:03:22 · 226 阅读 · 0 评论 -
D. Bouncing Boomerangs 模拟
link 题意:n*n的矩阵,上面放着障碍物。现在有一个人分别在第i列投掷一个飞镖,沿着投掷方向前进,在遇到障碍物时会向右转弯,直到飞出矩阵。 现在给你在每列投掷飞镖遇到的障碍数Ai<=3。还原障碍物所在位置,要求每行每列障碍物不能超过2个。 思路:由于在考虑如何放当前列的障碍物时要考虑当前咧后面的列的障碍物是怎样放的,所以要从后往前枚举每一列来放障碍物, ai=1时在当前列随意放一个就行 ai=2时那么只能放在i之后的j使得aj==1并且每个j只能用一次 ai=3时有两种情况: 1.放在之后的aj=原创 2020-10-23 10:53:50 · 159 阅读 · 0 评论 -
Codforces 1248 G Lucky Numbers (多重背包)
题意:把n划分成k个数,求最大价值,每个数的价值 由Fi和该数的第i位上是否为3的倍数决定。 给定k<1e6,Fi i<6。Q次询问n 思路:按位考虑的k个数的贡献,那么可以将第i位看成容量为3k的背包,就是一个多重背包,可以用二进制优化,但是这样直接分有问题。因为只能在3的倍数之间转移。那只需要先直接求出每个数的价值,然后背包容量就变成了3(k-1)接着转移就可以了。 #include<bits/stdc++.h> using namespace std; typedef long原创 2020-10-21 19:40:21 · 166 阅读 · 0 评论 -
牛客练习赛71 C 数学考试
link 题意:求长度为n的排列有多少个 要求满足 m个条件 :pi 表示前pi个数不是1~pi的全排列 m<n<=2000 思路: 1️⃣:考虑用总方案数减去不符合条件的方案数:即对于位置 x 为,x! - (不符合条件)。设F[i]为前i-1个条件满足,第i个条件不满足的方案数,并且我们增加一项p[m+1]=n,那么F[m+1]即为答案 转移方程:F[i]=sigma(F[j]*(j-i)!)(1<=j<i) 第一次遇到这样的dp状态-_- 很奇妙。。 它是通过枚举最后一个不满足原创 2020-10-10 17:18:25 · 174 阅读 · 0 评论 -
CodeForces 1417 F Graph and Queries 无向图连通块问题转化为树上问题 重构树
link 题意:给一无向连通图,每个点有一个权值,q次操作 每次操作有两种 1,v 寻找v所在连通块内权值最大的点,并输出这个权值并且把改点权值变成0 2.x 删掉第i条边 思路: 查询图上连通块内最大值和修改我们只学过在一棵树上利用dfs序,然后线段树维护。 那么考虑如何将此题转化成一棵树。 我们把删边考虑为倒着加边。在加边过程中利用并查集维护连通块。并且将每一时刻每一个点的连通块转化为一颗’子树’,这样在查询的时候就可以通过查询子树点权最大值来得到结果。 如何将各个时刻的连通块转化为一颗树? 只需要在加原创 2020-10-03 22:32:02 · 869 阅读 · 0 评论 -
Grakn Forces 2020 D E F
D n个人,m个摄像坐落于二维平面上,x,y位置摄像能监视到的范围为(0 x, 0 y)每次移动可以选择将所有人x+1,或者将所有人y+1;问最少移动次数使得所有人都不在监视范围内;坐标<1e6 考虑枚举操作x+1多少次,然后O1计算此时还需要操作y+1多少次来更新答案。 mx[i][j]表示第i个人执行x+1 j次后还需要执行 y+1 的次数。 那么所有人执行j次x+1后 还需执行y+1 的最少次数就为 max(mx[1~n][j]) 预处理即可。 E MST 好题 题意:有m个由1~n中的若干不同原创 2020-10-01 10:16:25 · 1697 阅读 · 2 评论 -
The 13th Chinese Northeast Collegiate Programming Contest
文章目录B. Balanced DietC. Line-line IntersectionE. Minimum Spanning TreeG. Radar ScannerH. SkyscraperJ. Time Limit 链接 B. Balanced Diet 贪心,假设最大天数为k,那么所有物品最大得k项都拿(再满足题意的情况下) #include <bits/stdc++.h> ...原创 2020-03-31 00:23:39 · 420 阅读 · 0 评论 -
2019 ccpc 哈尔滨
文章目录Justifying the ConjectureFixing BannersKeeping RabbitsInteresting PermutationExchanging GiftsLRU Algorithm补Binary Numbers补Artful Paintings补 Justifying the Conjecture 显然,构造一个偶数和一个质数是最方便的,那么直接判断奇偶性选...原创 2020-03-26 00:13:33 · 258 阅读 · 0 评论 -
2017 icpc 沈阳
5/13Little BoxesRabbitsHeron and His TriangleInfinite Fraction PathTree 链接 就这几个题目来说感觉都偏技巧性,考验思维能力。 Little Boxes 输出a+b+c+d JAVA就行 Rabbits 分析题目得到 答案最多就是a[n]-a[1]-n+1 即最大值和最小值之间的空隙,那么由于每次移动一个点时,会有k个间隙被浪费...原创 2020-03-23 00:09:59 · 222 阅读 · 0 评论 -
2017 CCPC 哈尔滨
链接 Permutation 根据题意构造一个A[i]-A[i-2]=1的数列即可 easy A Simple Stone Game 很容易想到求出N堆石子的总数量后,枚举每种因子得到一个解(将每堆石子模mid后贪心的凑出k堆)然后取最小值。但是因子的数量可能会很多会超时,那么我们在仔细想想发现其实只需要要枚举素因子就能得到正确的答案。 Geometry Problem 由于有N/2个点都在圆上,...原创 2020-03-21 13:49:19 · 235 阅读 · 0 评论