
Round
文章平均质量分 78
orz11111111
这个作者很懒,什么都没留下…
展开
-
ARC 081 D(讨论),E(DP),F(规律.最大子矩形变形)
题意:2*N方格,已知1*2,2*1的多米诺排列方式,现在有3种颜色,问相邻多米诺颜色要不同的染色方案? n竖着为X,横着为Y. 前i-1组染色方案为res最后一组..Xi-1,Xi则Xi有两种方案, 最后是两个横着连两个横着的,则前面任意一种方案,最后这两个横着的都有3种染色方案. 其余类似#include using namespace std;typedef long l原创 2017-08-20 23:14:20 · 643 阅读 · 0 评论 -
DCPC 2015 三星题(10/10)
Problem B水题.#include using namespace std;typedef long long ll;const int N=3e2+5,inf=0x3f3f3f3f;int main(){ int T,n; cin>>T; while(T--) { int lx=inf,rx=-inf,uy=inf,dy=-原创 2017-10-20 10:04:42 · 309 阅读 · 0 评论 -
CS R51 C(构造) D(数学,计数) E(???)
Round 51:Problem C;题意:给出三个整数点的曼哈顿距离d1,d2,d3,若有解,输出这三个整数点.否则输出-1, d[i]首先什么时候无解? 两边之和不能小于第三边,然后按x1其余情况都有解 构造(0,0),(d1,0),((d1+d2-d3)/2,d2-(d1+d2-d3)/2). (。。。。。)#include using namespace std;t原创 2017-10-05 10:14:42 · 212 阅读 · 0 评论 -
CS R26 C(双指针),D(观察,模拟),E(LIS经典 好题)
Problem C:题意;给出序列a,问有多少个区间,其长度在[c,d]并且该区间不包含相同的元素.n,c,d双指针 枚举左端点i,维护最远能达到的右端点rg.则左端点为i的合法区间最长为rg-i+1,所以贡献为max(0,min(rg-i+1,d)-c+1)#include using namespace std;typedef long long ll;const int原创 2017-10-03 17:58:51 · 248 阅读 · 0 评论 -
CS R25 C(BFS+二维前缀和) D(好题,合理枚举+树状数组维护) E(建图,连通分量,割点)
Problem C题意:n*m矩阵,a[i][j]=1代表禁止的格子.现在有一个h*w的矩形,其左上角为(sx,sy).操作:每次可以将该矩形整个向4个方向移动,注意移动后 矩形不能包含禁止的格子 不能超出界外.n,m跑bfs,用二维前缀和判断矩阵是否包含1即可.#include using namespace std;typedef long long ll;c原创 2017-10-02 18:58:12 · 379 阅读 · 0 评论 -
CS R17 C(思维DP) D(二进制,淘汰) E(好题:博弈+DP)
题意:给出排列a,操作:将任意一个数放到开头或者结尾.n显然每个元素只要移动一次,若同一个元素有多次移动,则用其最后一次移动 造成的效果是相同的.每个元素要么不移动要么移动一次, 求最少需要操作元素 -> 求最多不需要操作的元素有多少个?假如不需要移动的元素集合S 则S显然为连续的一段数,否则需要移动.设dp[a[i]]为以a[i]结尾的最长的一段连续序列,dp[a[i]]原创 2017-09-13 12:47:02 · 268 阅读 · 0 评论 -
CS R19 C(套路,二分or two pointer). D(构造,相邻位不同,字典最小),E(???)
Problem B:套路:暴力确定前两个(或者一个)配对状态 则剩余状态也能确定. 这种类型前期感觉经常出.Problem C:题意:一条直线先有n个点 每个点在位置x[i],价值为a[i],初始在s点 最多走K单位距离.n从s起 刚开始向左 或者 向右 然后最多改变一次方向(一直改变方向不是很迷...)然后枚举刚开拿了左边多少个点,二分最远还能到右边哪一个点.对于初始右原创 2017-09-14 15:37:51 · 311 阅读 · 0 评论 -
CF 652 C(思维好题) D(排序+BIT维护) E(边双联通分量+缩点).
题意:给出[1.n]排列的序列a,m对数(xi,yi) 定义区间合法为:区间不能包含着m对数中的任意一对,即x[i],y[i]不能同时出现在一个区间,问有多少个区间为合法的? n,m首先注意到若[l,r]为合法区间 则[l+1,r]肯定也为合法区间.尝试用two pointer解决 发现正着做好麻烦 移动l时还要删除操作.[l,r]为合法,[l,r+1]为非法 则l-1开头的左原创 2017-09-23 10:22:36 · 323 阅读 · 0 评论 -
CS R46 C(思维套路),D(好题,数据结构维护) E(???)
题意:长度为n的序列a,其每个元素减去一个正数X得到序列bnmn肯定为序列b元素,并且有个元素在序列a中和它对应(枚举该元素即差值)则接下来未被标记中最小的肯定也为序列b元素,(若为序列a元素,则要存在一个比它小的能和它配对)根据差值 用map记录其对应元素.#include using namespace std;typedef pair ii;typede原创 2017-09-07 23:41:56 · 213 阅读 · 0 评论 -
CS R12 C(排序),D(思维(二进制)),E(计数,分类大讨论)
Round 12: Problem C题意:给出n个二元组(wi,hi) 若不存在j同时满足 wj>wi && hj>hi 则称j为合法的.n按w从小到大顺序排序,维护一个h非单调递增的单调栈 则最后栈中元素为合法的wa! 相等的w 较大的h会淘汰掉小的h.排序时将相等的w h从大到小排序即可.#include using namespace std;typedef原创 2017-09-11 11:15:47 · 247 阅读 · 0 评论 -
CS R14 C(模拟+二维前缀和) ,D(好题,前缀第i位异或+滑动区间),E(树计数+DP(前缀和优化))
Round 14:Problem C:题意:n*m(01)矩阵,n,m画几个样例 可以发现任意一个合法的全1子矩形都形成一个全'1'联通分量.dfs搜出全1的联通分量 并记录左上和右下位置.不能落在边界.在利用行/列前缀判断左上和右下一圈是否都为0,二维前缀和判断搜出来的子矩形是否全部为1即可.#include using namespace std;typedef l原创 2017-09-12 13:36:10 · 493 阅读 · 0 评论 -
CS R20 C(贪心+二分) D(套路(n后第k个合法数)二分+数位DP.) E(好题:回文,字符串哈希)
Round 20:Problem B:题意:给出[1..n]排列,找到一对(i,j) 要求i记录每个数位置以后 按数值排序,则比a[i]大的a[j]都在a[i]之后 和a[i]最大距离为mx-pos,找到此时后缀i位置的最大值mx即可.#include using namespace std;typedef long long ll;const int N=2e5+20;s原创 2017-09-28 13:38:09 · 280 阅读 · 0 评论 -
CS R22 C(dfs暴力),D(字符串循环节,模拟),E(贪心+线段树维护)
Problem C:题意:n*m矩阵只包含01,每个1可以到达相邻4个1上n,m先dfs一遍对每个联通分量编号并记录其size.枚举要改变的格子,算新产生的联通分量size.只要把它上下左右4个1联通分量编号记录下来(防止重复),最后加上其size即可.#include using namespace std;typedef long long ll;const in原创 2017-09-30 16:58:25 · 299 阅读 · 0 评论 -
CS R23 C(排列循环节+前缀和),D(好题,列式子,取交集), E(套路,二分图,最大独立集,最小割)
Problem B:题意:平面上n个点,任意两点距离为其曼哈顿距离,n个点中有些点是特殊的.特殊点间的有快速通道为距离T.Q次询问:A->B的最短距离.Q,n建图? 不用阿,两点之间直线最短,所以A->B要么为dis(a,b),要么走快速通道 暴力枚举一个离a最近的特殊点即可 O(n^2).#include using namespace std;typedef long原创 2017-10-01 17:47:06 · 260 阅读 · 0 评论