随笔分类 -  CODEFORCES

摘要:```c++ include include include include include const int maxLength = 2005; char s[maxLength], t[maxLength]; int letterOfS[30]; int letterOfT[30]; std: 阅读全文
posted @ 2018-03-21 23:19 basasuya 阅读(180) 评论(0) 推荐(0)
摘要:我一开始把题目看错了 我以为是博弈。。 这题就是一个简单的判环+dfs(不简单,挺烦的一题) c++ include include include include include include const int N = 2e5 + 5; struct GraphNode { int toVer 阅读全文
posted @ 2018-03-08 16:23 basasuya 阅读(235) 评论(0) 推荐(0)
摘要:```c++ include include include include include using namespace std; const int N = 2e5 + 5; vector result; std::set unExistedMap; int nextPoint[N]; int 阅读全文
posted @ 2018-02-08 23:34 basasuya 阅读(179) 评论(0) 推荐(0)
摘要:提供两种思路 一种线段树区间更新 另一种用map维护连续的区间,也是题解的思路 第二种很难写(我太渣,看了别人的代码,发现自己写的太烦了) #include<iostream> #include<map> #include<iostream> #include<cstring> #include<c 阅读全文
posted @ 2018-01-23 21:45 basasuya 阅读(149) 评论(0) 推荐(0)
摘要:先按照绿点进行分块 第一个绿点和最后一个绿点之后很好处理不说了 两个绿点之间的讨论: 有两种方案 1:红(蓝)点和绿点顺序连接,距离为相邻绿点距离(也就是双倍绿点距离) 2:红(蓝)点和绿点的点阵中寻找最大的距离边,不连这一条,其他都顺序连,当然这样不连通,最后再绿点连接。(一个绿点距离+红(蓝)点 阅读全文
posted @ 2018-01-02 21:24 basasuya 阅读(149) 评论(0) 推荐(0)
摘要:看了别人的题解 首先这题是一个dp dp[i][j] i是当前有多少个a j是当前有多少个ab子序列 dp[i][j] = dp[i+1][j]*Pa + dp[i][i+j]*Pb; i,j 时加一个a之后会变成i+1, j i,j 时加一个b之后会变成i, i+j 除此之外的话对于i+j >= 阅读全文
posted @ 2017-12-31 21:23 basasuya 阅读(128) 评论(0) 推荐(0)
摘要:分三类 1 1: 一个就好了 3 3:特殊讨论下 n≥4 或 m≥4 : 第一行奇序号的数放前面,偶序号的数放后面,第二行奇序号的数放前面,偶序号的数放后面,第二行依次类推 有点难写,真的菜 #include<iostream> #include<map> #include<iostream> #i 阅读全文
posted @ 2017-12-30 17:37 basasuya 阅读(219) 评论(0) 推荐(0)
摘要:因为抑或,一眼字典树 但是处理起来比较难 #include<iostream> #include<map> #include<iostream> #include<cstring> #include<cstdio> #include<set> #include<vector> #include<qu 阅读全文
posted @ 2017-09-18 21:46 basasuya 阅读(138) 评论(0) 推荐(0)
摘要:首先容易想到,每种素数是独立的,相互sg就行了 对于一种素数来说,按照的朴素的mex没法做。。。 所以题解的简化就是数位化 多个数同时含有的满参数因子pk由于在博弈中一同变化的,让他们等于相当于2k,那么这样就是一个数了 之后就是模拟,牛逼的思路 #include<iostream> #includ 阅读全文
posted @ 2017-09-08 19:19 basasuya 阅读(126) 评论(0) 推荐(0)
摘要:qtmd的复习pat,老子不想看了,还不如练几道cf 这题首先可以很容易想到讨论最后的共因子为素数 这个素数太多了,1-1e6之间的素数 复杂度爆炸 所以使用了前缀和,对于每个素数k的每个小区间 (kg, k(g + 1)]是可以直接求这个区间的最佳方案的 #include<iostream> #i 阅读全文
posted @ 2017-09-08 19:11 basasuya 阅读(199) 评论(0) 推荐(0)
摘要:本题是个简单的区间dp dp[l][r]=dp[l][mid]+1 最近都没时间做题了,被我妈强制喊回去,然后颓废了10天(回家也没发控制住自己= = 我的锅),计划都打乱了,本来还报名了百度之星,然后没时间参加 #include<cmath> #include<map> #include<iost 阅读全文
posted @ 2017-08-16 12:20 basasuya 阅读(114) 评论(0) 推荐(0)
摘要:我奇特的脑回路的做法就是 树链剖分 + 树状数组 树状数组是那种 区间修改,区间求和,还有回溯的 当我看到别人写的是lca,直接讨论时,感觉自己的智商收到了碾压。。。 #include<cmath> #include<map> #include<iostream> #include<cstring> 阅读全文
posted @ 2017-07-25 23:56 basasuya 阅读(155) 评论(0) 推荐(0)
摘要:我只能说真的看不懂题解的做法 我的做法就是线段树维护,毕竟每个数的顺序不变嘛 那么单点维护 区间剩余卡片和最小值 每次知道最小值之后,怎么知道需要修改的位置呢 直接从每种数维护的set找到现在需要修改的数的在初始卡片的位置 #include <cstdio> #include <cstdlib> # 阅读全文
posted @ 2017-07-17 21:21 basasuya 阅读(185) 评论(0) 推荐(0)
摘要:写了3小时 = =。这两天堕落了,昨天也刷了一晚上hihocoder比赛,还爆了零。之后得节制点了,好好准备考研。。 首先很容易想到 压缩数据 + 线段树 然后对于Pushdown真很难写。。需要牵涉到状态修改(所以我又写了一个adjust函数,辅助修改) 我一直跪在test7,因为3号修改在一开始 阅读全文
posted @ 2017-06-26 16:00 basasuya 阅读(122) 评论(0) 推荐(0)
摘要:一道树形dp裸体,自惭形秽没有想到 首先由于两两圆不能相交(可以相切)就决定了一个圆和外面一个圆的包含关系 又可以发现这样的树中,奇数深度的圆+S,偶数深度的圆-S 就可以用树形dp 我又写挫了= = #include<cmath> #include<map> #include<iostream> 阅读全文
posted @ 2017-06-22 20:40 basasuya 阅读(117) 评论(0) 推荐(0)
摘要:题意 给你一个1−8的排列,求一个满足条件的最长子序列 每种数字的差小于等于1,并且每种数字之内是连续的 解法 首先单纯认为用dp肯定不行的 所以应该考虑二分答案(所求长度具有二分性) 再用dp判断是否可行,这个dp很简单就是dp[N][1<<8] #include<iostream> #inclu 阅读全文
posted @ 2017-02-25 14:29 basasuya 阅读(138) 评论(0) 推荐(0)
摘要:比赛看不懂 之后不确定题意去瞄了题解,需要分类讨论?囧 之后按照队友已经ac的题意 就是求外面一圈周长,直接可以求得 #include<bits/stdc++.h> using namespace std; #define sz(X) ((int)X.size()) typedef long lon 阅读全文
posted @ 2016-10-24 21:42 basasuya 阅读(177) 评论(0) 推荐(0)
摘要:最近好弱做什么题目都是做一晚上 这是合肥站炼铜后遗症? 这题就是贪心 我已开始还写了1小时………三分……………. #include<bits/stdc++.h> using namespace std; #define sz(X) ((int)X.size()) typedef long long 阅读全文
posted @ 2016-10-24 20:40 basasuya 阅读(140) 评论(0) 推荐(0)
摘要:比赛写了一小时还是改不出来有bug就弃疗回寝室了 自己其实是很怕写这种题的 虽然状态不好昨晚,但是还是不熟练 #include<bits/stdc++.h> using namespace std; const int N = 1e5+5; const int INF = 0x3f3f3f3f; t 阅读全文
posted @ 2016-10-09 16:21 basasuya 阅读(157) 评论(0) 推荐(0)
摘要:贪心 如果有0先变成非0 如果负数的个数 应该变为偶数 之后就是每次将绝对值最小的值加K #include<bits/stdc++.h> using namespace std; const int MAXN = 2e5+5; typedef long long ll; int N,K,X; ll 阅读全文
posted @ 2016-10-01 13:50 basasuya 阅读(136) 评论(0) 推荐(0)