Good Bye 2014 F - New Year Shopping】的更多相关文章

F - New Year Shopping 对于一种特殊的不可逆的dp的拆分方法.. 也可以用分治写哒. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PII pair<int, int> #define y1 skldjfskldjg #define y2 skldfjsklejg using namespac…
序 在我写下“在”这个字的时候已经是2014-12-31 19:59,14年最后一天了,总觉得不写点东西祭奠一下那些被自己虐死的脑细胞,心里就不舒服. 那就从生活,工作,学习三个方面,总结一下吧. 生活 仍是一个人,这是2014年唯一的遗憾,没脱单!关键是真没有那个想法,总感觉自己是一个目标很强,事业心很重的人,目标不实现,没有事业,没那个心情去谈对象.也始终相信,该来的总会来,何必特意的去找呢? 话锋一转,说说今年开心的事,话说大学我们专业做开发的唯独我一个,之前大学同学在北京的也是我一个,今…
D. New Year Santa Network   New Year is coming in Tree World! In this world, as the name implies, there are n cities connected by n - 1 roads, and for any two distinct cities there always exists a path between them. The cities are numbered by integer…
F - New Year and Cleaning 这题简直是丧心病狂折磨王.. 思路:容易想到这样一个转换,把整个矩形一起移动,矩形移出去的时候相当于一行或者一列. 为了优化找到下一个消去的点,我先把原数组扩大两倍,用了st表加二分去找,然后就MLE, 我又换了 线段树TLE,最后不把数组扩大两倍ST表+二分过的.. 每次消去的点都是不变的,所以可以做到线性复杂度. #include<bits/stdc++.h> #define LL long long #define fi first #…
题目链接 题意:给n个数,要求这n个数字小的尽量放到前面,求一个最小的. 给一个矩阵s[i][j]==1,表示位置 i 的数字可以和 位置 j 的数字交换. 分析: 刚开始用的是3个循环,每次都找一个能直接连接的最小的放到前面,过了小数据,快结束的时候被hack了. 其实不应该这么做,因为还有间接相连提前交换的最小的解. 正解是用floyd,先预先处理出来同一堆,也就是 直接和间接相连的所有 标记,然后根据标记从前向后找最小的. 这个题也可以用并查集做,当时想到了,感觉B题的程度应该考虑暴力神马…
可能是因为这次没有分Div.1和Div.2,所以感觉题的难度比较大. 题意: 给出一个1~n的排列和一个邻接矩阵A,Aij = 1表示可以交换排列的第i项和第j项,问经过若干次交换后,求能够得到最小字典序的排列. 分析: 如果a和b可交换,b和c可交换,则a和c也可以交换位置.如果把这n个位置看做顶点,两个可交换的位置连一条边,则图中在同一连通分量的顶点都是可以交换元素的.所以用并查集做就很方便了. 要想得到字典序最小的排列,直接贪心就可以了.从第一个数开始,首先试试1能不能交换到第一个位置去,…
题目链接 \(Description\) 有一棵高度为\(h\)的满二叉树,点从\(1\)到\(2^h-1\)编号(无序).每次你可以询问一个点的编号,交互库会返回其所有邻接点的编号.你需要在\(16\)次询问内确定这棵树根节点的编号. \(h\leq 7\). \(Solution\) 考虑随便问一个点,然后任意找个相邻点走.这样如果不往回走,最差情况下是一直走到一个叶子,这样找走两遍,扩展出一条叶子到叶子的链,就可以往上扩展了.这样最多扩展\(1+2+\ldots+7=28\)个点,但是确定…
E - New Year Domino 思路:我用倍增写哒,离线可以不用倍增. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PII pair<int, int> #define y1 skldjfskldjg #define y2 skldfjsklejg using namespace std; ; cons…
解题思路:给出一列数an,再给出一个矩阵d[i][j],在满足d[i][j]=1的情况下,称a[i]和a[j]可以交换,问经过交换最后得到字典序最小的数列a[n] 首先是贪心的思想,大的能换就换到后面去,这样尽可能使小的在前面. 然后是判断a[i]和a[j]能不能交换, 如果d[i][j]=1,表示a[i]和a[j]可直接交换 如果d[i][k]=1&&d[k][j]=1,表示a[i]可以通过a[k]和a[j]交换 比如 1 7 3 4  2 5 假如 7能和4交换,4能和2交换,那么7也…
本节内容: 线程: a:基本的使用: 创建线程: 1:方法 import threading def f1(x): print(x) if __name__=='__main__': t=threading.Thread(target=f1,args=(,)) t.start() t=threading.Thread(target=f1,args=(1,))创建线程,target=动作(执行什么,需要是可被调用的函数)args参数元组,要求参数最后加个逗号. 当我们创建一个线程时候,t.star…