2018 CCPC 湘潭邀请赛 & 2018 JSCPC】的更多相关文章

Problem A Problem B Problem C 这题用主席树轻松解决 可以二分答案,每次查询:也可以直接开个全局变量在主席树上二分: 时间复杂度$O(nlog^{2}n)$或$O(nlogn)$ Problem D 设$f[i][j]$为$j$个球分成$i$段的乘积 首先不管环,考虑这样一个链,黑白黑白黑白黑白 反正就是保证:黑白段数相同,首尾两段颜色不一样 但是他是一个环,也就是,首尾两个球的颜色可以相同,那我们把最后那段的最后一个球,放到第一的位置的前面, 然后把倒数第二个球,再…
题意: 给出一个长度为n的序列,序列中包含0.定义f(i)为把所有0变成i之后的Lis长度,求∑ni=1i⋅f(i). 题解: 设不考虑0的Lis长度为L,那么对于每个f(i),值为L或L+1. 预处理f[j],g[j]代表在第j个数结束和从第j个数开始的Lis长度. 对于(1~n)的每个j,找到一个最大的a[k](k>j且a[k]>a[j]),使得g[j]+f[k] = L且j和k之间存在0.那么(a[j],a[k])区间内的数的f()值即为L+1. 从后面往前扫,对于当前点j,vis[L-…
题意: 给出一棵树以及m,a,b,x0,y0.之后加m条边{(x1,LCA(x1,y1)),(x2,LCA(x2,y2))...(xm,LCA(xm,ym))}.定义z = f(0)^f(1)^...^f(n-1),其中f(i)代表删掉点i的连通块数.则xi = (axi-1+byi-1+z)%n,yi = (bxi-1+ayi-1+z)%n.求xm和ym. 题解: 维护每个点的度数.初始的点的度数即为删掉该点后的连通块数. 第i次加边(xi,LCA(xi,yi))中xi到LCA(xi,yi)的…
题意: 给一个环,环上有n+m个点.给n个点染成B,m个点染成W.求所有染色情况的每段长度乘积之和. 题解: 染成B的段数和染成W的段数是一样的(因为是环). 第一段是可以移动的,例如BBWWW移动为BWWWB. 所以处理两个方程:b[i][j]代表把j分成i段的乘积和且第一段不能移动:f[i][j]代表把j分成i段的乘积和且第一段可以移动. 那么枚举分成的段数,对于当前枚举分成i段,答案就为:f[i][n]*b[i][m]+f[i][m]*b[i][n]. 问题是方程怎么转移了. 对于b[i]…
都tm快一年了我还没补这套题……再不补怕是要留给退役后乐 Problem A 把$n * (n + 1)$的矩阵补成$(n + 1) * (n + 1)$的,然后高斯消元. Problem B 一看题解:费用流,于是这个题直接交给队友. Problem C 又是高斯消元…… Problem D 直接输出即可. #include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i(a); i <= (b)…
选定最多m的区间,使区间和的绝对值最大.但是左右端点不能重复选取 首先涉及到区间和的问题,就应该想到用前缀和去优化 这里对前缀和排序 然后贪心的去选取最大.次大 (比赛的时候脑子堵的很,没想出来 可惜了) #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define ll long long int using namespace std; ll sum[1…
2018 CCPC网络赛 Buy and Resell 题目描述:有一种物品,在\(n\)个地点的价格为\(a_i\),现在一次经过这\(n\)个地点,在每个地点可以买一个这样的物品,也可以卖出一个物品,问最终赚的钱的最大值. solution 用两个堆来维护,一个堆维护已经找到卖家的,一个堆维护还没找到卖家的. 对于第\(i\)个地点,在已经找到卖家的堆里找出卖的钱的最小值,如果最小值小于\(a_i\),则将卖家换成\(i\),然后将原来的卖家放到没找到卖家的那里:如果最小值对于\(a_i\)…
TYPE: Onsite Contest NAME: 2018 - CCPC - Guilin PLAT: HUSTOJ TIME: 2018/10/28 09:00-14:00 CST LOCA: Guilin University Of Electronic Technology TEAM: Reconquista [lsmll, jiangshibiao, lzw4896s] RANK: 3/188 1.60% (Including unofficial teams) SOLVE: 7/1…
2018 CCPC 桂林站(upc复现赛)补题 G.Greatest Common Divisor(思维) 求相邻数的差值的gcd,对gcd分解素因子,对所有的素因子做一次遍历,找出最小答案. 几个样例: ans : 0 1 0 2 33 6 91112211 76 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #…
2018 CCPC 吉林站 H Lovers 传送门:https://www.spoj.com/problems/LIS2/en/ 题意: q次操作 1.将第l~r个数的左边和和右边都加上一个数d, 使得这个数变成 \(ds_id\)的形式 2.询问区间和 题解: 线段树题 这个update操作不好维护,我们来冷静分析一下 对于一个数x,他的长度为len,我们在他后面加上一个数d,那么他的长度就变成了len+1,这个数x就变成了\(x*10+d\) 同理,在前面加上一个数,这个数x就变成了\(d…