acm
m0_37802215
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #430 (Div. 2) 842C Ilya And The Tree(暴力)
这题我个人觉得是有问题的. 想了很久,感觉想不出下至n上至nlogn的算法,非常难受,然后上网看题解,发现居然是一个暴力,遍历所有情况,居然不会超时,n^2logn的也行,真是无言以对.既然这样,这题也失去了意义. (好在我没打这场比赛啊,A题都过不了,b题估计也要wa个好几次,C就跟别提了,少说要掉100分,T_T)/* xzppp */#include <iostream>#incl原创 2017-08-31 13:17:16 · 224 阅读 · 0 评论 -
Codeforces Round #437 (Div. 2) B 865A Save the problem! (思维)
这题感觉很棒啊. 想了蛮久的. 事实上跟多重背包没什么关系,似乎只要1,2两个数,就可以构造出所有种类数量./* xzppp */#include <iostream>#include <vector>#include <cstdio>#include <string.h>#include <algorithm>#include <queue>#include <map>#i原创 2017-10-01 19:51:25 · 395 阅读 · 0 评论 -
Codeforces Manthan Codefest 17 C 855C Helga Hufflepuff's Cup(树型DP)
想哭,没有眼泪流出. 总算把这题做出来了… 记录一下把,要让自己的博客有价值.. 一棵树,每个节点属于1~m的种类之一,但是其中最多存在x个特殊种类,k. 与特殊节点相连的点,大小必须小于他. 用dp[i][j][k]来dp,i为当前节点号码,j为该点所属子树共有的特殊节点数量,k为当前节点的大小 0表示小于k,1表示等于k,2表示大于k. dp的过程,就是!!!!(一条一条树枝)!!!原创 2017-10-02 21:57:38 · 414 阅读 · 0 评论 -
HDU 6180 Schedule(水题)
这题怎么怎么看怎么水啊?? 很明显的贪心思路,就是数据看上去有点大.. 没有比赛打的我,非常废物了./* xzppp */#include <iostream>#include <vector>#include <cstdio>#include <string.h>#include <algorithm>#include <queue>#include <map>#inclu原创 2017-10-19 15:36:53 · 323 阅读 · 0 评论 -
HDU 6103 Kirinriki(思维尺取)
题意:在一个字符串中,选取两个长度相同且不重合的子串,计算dis值,定义为abcde efcgh 的a~h+b~g+c~c+d~f..即计算对应位置的差值和. 给定m,找到满足dis值小于等于m的最大子串对长度. 关键:枚举对称轴.进行尺取 复杂度 O(m^2).m<=5000 事实上,在见到小于等于m的时候,要想到尺取,对应位置差值和,应想到枚举对称轴.处理时注意可能对称到空处,*2后分奇原创 2017-10-04 20:11:09 · 249 阅读 · 0 评论 -
Codeforces Round #438 C 868C Qualification Rounds(思维,非状压dp)
注意到这题很多大佬都是用的类似状压dp的方法,但是我不会啊.. 虽然想了很久很久.. 菜如狗的我 具体看代码,虽然丑,但是清晰. 事实上,只要分四种情况特判即可. 只有第四种有一些难度. (似乎我这个思路挺奇怪的??)/* xzppp */#include <iostream>#include <vector>#include <cstdio>#include <string原创 2017-10-05 20:57:23 · 194 阅读 · 0 评论 -
HDU 5745 La Vie en rose(bitset优化dp)
事实上这题一开始没想到dp. 直接想的暴力,nm的. 后来无限t.. 然后搜题解,发现是改了数据和时限.只有用dp的方法,用bitset优化 (因为本来dp过程类似位运算,而bitset可以加速) 虽然过了,但是是看着题解过得,所以不能算数,代码后来补原创 2017-10-30 15:14:11 · 310 阅读 · 0 评论 -
Codeforces Round #426 (Div. 2) C The Meaningless Game
题意 检测两个数是否可以表示成a=k1^2*k2+k3*k4^2 b = k1*k2^2*k3^2*k4 即一个是平方,一个就是原本的. 我推了一些简单的必要条件,进行堆叠,勉强过了,但是具体还不知道,留待后考吧./* Farewell. */#include <iostream>#include <vector>#include <cstdio>#include <strin原创 2017-10-30 19:46:56 · 203 阅读 · 0 评论 -
HDU 6181 Two Paths(dijk的深入)
这题真是弄的心态血炸.. 虽然勉强写出来,但是要多回顾 题意:求一条与最短路!!(不同)!!的尽可能短的路. 先理解一下dijk. 他是每次用一个可以确定最短路的点,更新其他点的最短路. 那么我们想一想次短路, 假如是到n的次短路,和n相连的点有abc.. 那么只可能是1到abc的最短路加abc到n的边,或者1到abc的最短路加他们的边.注意区分一下就好./* xzppp */#原创 2017-10-23 11:21:05 · 223 阅读 · 0 评论 -
HDU 6206 Apple 2017ICPC青岛网赛 A (高精度+大数模版)
就是一个模版题,保存一下我的模版. 注意把除都换成乘就好/* xzppp */#include <iostream>#include <vector>#include <cstdio>#include <string.h>#include <algorithm>#include <queue>#include <map>#include <set>#include <stri原创 2017-09-17 18:17:49 · 664 阅读 · 2 评论 -
Codeforces 864E Fire(01背包)
记录一下我并没有死.. 虽然每天吃鸡的我 跟死了也差不多 这个01背包感觉有问题啊. 不是很懂他这个排序的道理/* xzppp */#include <iostream>#include <vector>#include <cstdio>#include <string.h>#include <algorithm>#include <queue>#include <map>原创 2017-09-29 22:48:38 · 248 阅读 · 0 评论 -
Codeforces Round #439 (Div. 2) C 869C The Intriguing Obsession(思维+简单组合)
题意. 三组岛屿,要求在岛屿间建桥,每一个桥距离为1.但是每一种建法,必须满足两个同组的岛屿要不就不可达,要不最短距离至少为3. 思路. 考虑到不可出现同组岛屿间有任何桥,所以仅考虑不同组岛屿的情况. 又不能出现两个同组间距离为2的情况,也就是,不可有任意两同组岛屿连在同一岛上.那么,考虑a,b两组岛屿,要使他们之间满足要求,(假设a < b),只需计算A(b,i)*C(a,i)(i=0,1原创 2017-10-07 15:20:09 · 213 阅读 · 0 评论 -
Aizu 2224 Save your cats(最大生成树)
emmm,其实也没什么,很简单的模版题. 提示了一个性质,取出生成树后,剩下的区域将不可能封闭. 不是很晦涩,但是也不是一定知道. aizu真好啊,日本真好啊,真好啊真好啊./* xzppp */#include <iostream>#include <vector>#include <cstdio>#include <string.h>#include <algorithm>原创 2017-09-01 16:04:50 · 288 阅读 · 0 评论 -
POJ 2395 Out of Hay(最小生成树)
挑战的专题最后一题.. 不知为什么,感觉现在做挑战的练习题跟以前感觉不一样,以前感觉每一题都特别难,现在感觉毫无压力,可能只是这里的特殊情况吧,模版题居多./* xzppp */#include <iostream>#include <vector>#include <cstdio>#include <string.h>#include <algorithm>#include <q原创 2017-09-01 16:22:38 · 195 阅读 · 0 评论 -
Codeforces Round #431 (Div. 2) 849A Odds and Ends(思维)
首先考虑假如首尾出现偶数,那么一定不行,然后如果总长度是奇数,那么一定可以,最后,如果总长度是偶数,则一定不可以了. 为什么呢,因为偶数是不可能被分成奇数个奇数的./* xzppp */#include <iostream>#include <vector>#include <cstdio>#include <string.h>#include <algorithm>#includ原创 2017-09-02 07:18:29 · 182 阅读 · 0 评论 -
Codeforces Round #431 (Div. 2) 849B Tell Your World(暴力+枚举)
这题一开始有点混乱,想着dfs什么的,有点傻. 枚举一号点的各种情况,假设他和之后的某一个点相连,得出该情况下第一条平行线能过几个点,然后根据平行,判断第一个没被第一条平行线过的点,如果这个时候,过的点总和是n,那么就可以了,复杂度是n^2. 最后加个特判,就是只有第一个点单一条线的情况. 我死在特判的if中,if(sg&&(!(((double)a[2]-a[1])==gd))) can =原创 2017-09-02 07:25:34 · 315 阅读 · 0 评论 -
Codeforces Round #431 (Div. 2) 848A From Y to Y(思维)
今早补题感觉思路不错,这题昨天连看都没看,真是菜到无法想象了. 一开始看到,有点懵逼,觉得很难,因为有一些,exactly,minimal,这样的词语,搞得好像这题状况很多一样. 但是仔细看会发现,每一种字符串的形式,他的”操作值”,是固定的,那么,这题就不那么难了. 又分析发现,假如是aaaa这种,他们要合在一起,操作值一定是1+2+3=6, aaaaa呢,一定是6+4 = 10,也就是一原创 2017-09-02 08:45:30 · 409 阅读 · 0 评论 -
POJ 1990 MooFest(树状数组)
一个树状数组的模版题,点对距离,没什么意思,前段时间做过一个类似的,没想到是这么普遍的一个题.. 加难版兄弟题 这题真的很随意,随便谢谢就过了./* xzppp */#include <iostream>#include <vector>#include <cstdio>#include <string.h>#include <algorithm>#include <queue>原创 2017-09-02 11:49:13 · 195 阅读 · 0 评论 -
9.10沈阳站网赛补题
6198 number number number 太简单,裸的斐波那契快速幂/* xzppp */#include <iostream>#include <vector>#include <cstdio>#include <string.h>#include <algorithm>#include <queue>#include <map>#include <strin原创 2017-09-11 16:07:55 · 211 阅读 · 0 评论 -
HDU 6201 transaction transaction transaction(dp)
这题是看题解的. 以后要多来看. 当时比赛很快过了四题,然后发现这题,两个人一直在想,四个小时wa了好几次,真的很废物了. 一方面这题似乎是有很多做法,但是那些spfa啊,网络流啊,我都完全不会,等下去学习一下好了,我觉得此题是一个很好的思维题. 我当时想到这个类似dp的做法,但是愚蠢的我忘记了他一棵树不一定等价于一条线.. 和以前的dfs不一样,以前的dfs是在进到最后一个点,或者走不下原创 2017-09-11 16:13:01 · 189 阅读 · 0 评论 -
Codeforces Round #434 (Div. 2) D Polycarp's phone book(字符串,字典树)
其实是个暴力题.. 枚举所有的九位子串,检查它是否会只在某个子串中出现. 具体实现方法是,把所有原串和他们的所有后缀存入字典树,进行一些标记,记录一个边被不同原串经历的次数. 然后就可以枚举遍历. D题还是不看题解做不出,看了题解也不能瞬间搞懂.. 代码强度也很高. 容易re,字典树放大一点. (不懂啊,为什么70还会RE啊??)/* xzppp */#include <iost原创 2017-09-20 16:48:33 · 155 阅读 · 0 评论 -
HDU 6153 A secret(kmp)
似乎正解是扩展kmp的模版题. 但是kmp也可以做. kmp有两种.一种是在每一次成功匹配后都算一次. 一种是在结束匹配是算一次,这种要等差数列计算. 反正这题很迷幻. 靠我总结不下去了,还是不懂啊. 就当存个kmp,我好菜啊/* Farewell. */#include <iostream>#include <vector>#include <cstdio>#include <原创 2017-11-09 13:41:16 · 176 阅读 · 0 评论 -
矩阵快速幂
希望能够得出两个对应的一维矩阵./* Farewell. */#include <iostream>#include <vector>#include <cstdio>#include <string.h>#include <algorithm>#include <queue>#include <map>#include <string>#include <cmath>#incl原创 2017-11-02 15:34:11 · 139 阅读 · 0 评论 -
atcoder checker 坐标图
给出k,k意味着,假如k=3,那么这个图形就如上所示,无限延伸,想要知道,给出n个坐标,和这n个坐标的颜色,问你,这个图在所有摆放方式中,那种可以满足最多坐标条件? 1.所有点,都可以通过%2k来收缩到一个2k*2k的图内. 2.假如一个点在(x,y)要为黑,那么这同时意味着,(x+k,y)一定要为白,所以,所有都可以转化为白,问题就是要最多点满足,不需要每个点讨论. 所以问题就是,在底图移原创 2018-01-28 16:57:37 · 266 阅读 · 0 评论 -
Codeforces Round #457 (Div. 2) 916B Jamie and Binary Sequence (二进制)
给一个数n,让你用k个2的幂来表示他.但是这种表示中,必须要找到最大幂次最小,且字典序最小的那个序列. 例如 23,5 = 3 3 2 1 0 核心思想是,任何一个longlong,都可以二进制表示出来(废话). 但是任何一个二进制数,都可以通过2^x = 2*2^x-1来加一.所以,任何int,都可以被表示(在k足够大的情况下,即便x放到很大的负数,仍然可以.) 做法是,先将n的二进制表原创 2018-01-20 22:57:51 · 159 阅读 · 0 评论 -
atcoder FT Robot(切割的dp)
一个机器人在(0,0)位置,给出一串指令和一个终点 FTFFTFFF 4 2 F即为向前走一格,T为顺时针或者逆时针转动. 问你能不能到终点, 指令最长为8000 一个dp的思路,dp[2][2][i],表示在该次行走后,能不能到i位置,0,1,分别表示x,y轴. 一般来说,在坐标轴的转移,都是[x][y]这样的平方转移,因为你不知道,下一次转移,可能是走x轴,也可能是走y轴,所以要原创 2018-01-30 16:33:51 · 217 阅读 · 0 评论 -
Educational Codeforces Round 39 D Timetable
500 有n天,每天m个小时,1为有课,0为没课,每天都必须要从第一节课开始待到最后一节课结束,但是可以翘课,最多翘k节,问你最少只需要在学校呆几天. 都是500的数量级 事实上..这是个很容易的dp.. 先处理一个zt[i][j],意为第i天如果翘j节课,最少再学校呆多少小时 n^3可以处理出来. (这个像一个格子移来移去的方法好像好常用啊,没什么好讲的就是..) 然后就是一个简单...原创 2018-03-08 16:03:46 · 157 阅读 · 0 评论 -
Gym 101158G Placing Medals on a Binary Tree(二进制 微操)
n<5e5,x<1e9希望把一些”奖杯”插入到完美二叉树中,一旦一个节点被插入,他的下层不能被插入.优先满足先出现的要求. 首先,想到用二进制来模拟,是容易的,但是遇到问题是这里的最大层数有1e9,所以我们不能用数组来存,用map. //map这个蛇皮东西,最近几次用它都出问题,好像是一旦用他连pair就不太稳.. 那么我们可以很容易模拟一次放入,就是二进制加法,...原创 2018-02-22 18:16:59 · 465 阅读 · 0 评论 -
Codeforces Round #470 Div. 2 D Perfect Security(字典树求异或最小 唯一)
给出一些数a[i],和一些数b[i],要你把a[i]中的数,依次找到b[i]中的某个数进行异或,使得越前的a,得到的值越小即可,但是b的数只能用一次. 显然是用字典树,在插入的过程中,每个数在他的路径上标记,那么在他被选中的时候,删去标记,就可以了.#include <iostream>#include <cmath>#include <cstring&...原创 2018-03-12 15:04:26 · 252 阅读 · 0 评论 -
埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛
五题菜狗… 那个自习室真是有毒..坐了一下子马上就感冒了..头痛…A Wasserstein Distance这题也是搞不懂,一开始狂wa,迷迷糊糊的.#include <iostream>#include <vector>#include <set>using namespace std;#define debug(x) std::cer...原创 2018-04-15 20:09:09 · 442 阅读 · 0 评论 -
hdu 6267 Master of Random
好菜啊…ccpc的签到题都做的这么吃力..T^T 大概是一个..数学题把.. 递推计算每个节点在最终情况可能为最终结果做贡献的可能种类,等于前面的节点每个做贡献的可能之和(自己作为子节点贴上去,就可以蹭到人家的了)+自己被选为子树根节点(阶乘,容易想到),然后此前的每一个节点做贡献可能,都要乘以当前的i(因为总数量会乘以i),这个就之后过一遍阶乘就好.. 最后的分母一定是 n!=((n-1...原创 2018-04-20 10:44:20 · 683 阅读 · 0 评论 -
hdu 6265 Master of Phi(数学)
数学题,主要是欧拉函数的简单应用和一个简单递推,一开始只是弄了个暴力,后来发现过不了,然后瞎逼搞了个递推一样的,就过了..每太清楚,晚上来补题解 其实只要拆分出互素因子之后发现是p-1/p就好,然后处理为1的情况,一开始我也是一个2^20,不过因为我是bitset遍历的,所以多20复杂度,过不了,如果dfs就可以过,这应该才是正解..现在这个做法感觉是阴差阳错..#include <i...原创 2018-04-28 16:24:25 · 891 阅读 · 0 评论 -
atcoder Wide Flip 翻转
给出一个01序列,问你假如每次至少翻转长度k,使得最后全为0或1,这个k最大多少. 容易知道(百度知道) 一个数可以由(x,x+k+1)和(x+1,k+x+1)完成变换,所以不能这样做的是中间的连续段,长度为2k-n,所以求出中间最长连续段即可.#include using namespace std;#define debug(x) std::cerr typedef long原创 2018-01-27 13:43:06 · 262 阅读 · 0 评论 -
cf 495人题 简单dp
就是python的语法,for之后一定要缩进,给出for或者statement的顺序,问你代码形式有多少种./* Farewell. */#include #include #include #include #include #include #include #include #include #include #include #include #inclu原创 2018-01-19 00:06:37 · 144 阅读 · 0 评论 -
爆搜dfs
太久没写搜素,这题很有意思. 注意vector效率很低/* Farewell. */#include <iostream>#include <vector>#include <cstdio>#include <string.h>#include <algorithm>#include <queue>#include <map>#include <string>#include <原创 2017-11-03 19:58:04 · 373 阅读 · 0 评论 -
强联通分量+缩点
强联通分量,一个有向图中的某一个子图,满足该子图中任意一点,都可以到达该子图中任意点. 计算的方法叫tarjan算法,也就是一个dfs方法,每次对未被访问过的一个点开始,因为如果该点是在一个强联通分量内(当然,假设不止是他一个人),那么该强联通分量肯定是一个”大于环的结构”.那肯定可以dfs下去,关键的地方来了,每个被他所到达的点,如果已经被找到过(特指在寻找该分量时被找到过,而不是此前已经被划入原创 2017-12-03 14:42:42 · 210 阅读 · 0 评论 -
Marco and GCD Sequence
好久没做题了,这场的b题还是看了题解.. 算了先说b题把. b题很巧啊,我一直再想一些排列组合,但是好像很难,无从下手. 题解中说,只要算2^((m-1)*(n-1))就可以了,为什么呢?因为空出的最后两排,是必可以完美适配的.自己想,+-1的传递.真的很妙. 当然这题也很妙,题意是说有一个序列,把其中每一个子序列的gcd放入一个set中,给出这个set,让你给出这个序列. 一开始就想啊,原创 2017-11-25 10:53:22 · 222 阅读 · 0 评论 -
cf 600人 bit+大量stl乱搞
Remove Extra One 给出一个排列,问你移除其中那个数,可以使得其中的record最多. record定义为该数前所有数都小于他. 反正就是一通乱搞把,好笨啊./* Farewell. */#include <iostream>#include <vector>#include <cstdio>#include <stack>#include <cstring>#inc原创 2017-12-14 21:10:12 · 230 阅读 · 0 评论 -
cf 644人 二进制 数位dp?
一个数变成他的二进制表示中的一的个数 6->2->1 问2^1000以下所有数中,可以进行这个操作k次的数有多少个. 找到每个数需要几次的思路是容易的,问题是这个组合数的计算过程 1,有自己和没自己,0则直接没自己#include #include #include #include #include #include using namespace std;#defin原创 2018-01-22 21:50:28 · 165 阅读 · 0 评论 -
CF 线段树 gcd改变
Bash and a Tough Math Puzzle 可以过100的数据 但是50w就过不了了,具体不明,没看过题解. 没加第二种情况的返回值..#include #include #include #include #include #include #include #include #include #include #include #include原创 2018-01-22 21:51:27 · 241 阅读 · 0 评论