解题思路:给出一列数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也…
可能是因为这次没有分Div.1和Div.2,所以感觉题的难度比较大. 题意: 给出一个1~n的排列和一个邻接矩阵A,Aij = 1表示可以交换排列的第i项和第j项,问经过若干次交换后,求能够得到最小字典序的排列. 分析: 如果a和b可交换,b和c可交换,则a和c也可以交换位置.如果把这n个位置看做顶点,两个可交换的位置连一条边,则图中在同一连通分量的顶点都是可以交换元素的.所以用并查集做就很方便了. 要想得到字典序最小的排列,直接贪心就可以了.从第一个数开始,首先试试1能不能交换到第一个位置去,…
题目链接 题意:给n个数,要求这n个数字小的尽量放到前面,求一个最小的. 给一个矩阵s[i][j]==1,表示位置 i 的数字可以和 位置 j 的数字交换. 分析: 刚开始用的是3个循环,每次都找一个能直接连接的最小的放到前面,过了小数据,快结束的时候被hack了. 其实不应该这么做,因为还有间接相连提前交换的最小的解. 正解是用floyd,先预先处理出来同一堆,也就是 直接和间接相连的所有 标记,然后根据标记从前向后找最小的. 这个题也可以用并查集做,当时想到了,感觉B题的程度应该考虑暴力神马…
http://www.lydsy.com/JudgeOnline/problem.php?id=2014 这应该是显然的贪心吧,先排序,然后按花费取 #include <cstdio> #include <cstring> #include <cmath> #include <string> #include <iostream> #include <algorithm> #include <queue> using na…
序 在我写下“在”这个字的时候已经是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 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…
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…
解题报告 题意,有n个机器.m个任务. 每一个机器至多能完毕一个任务.对于每一个机器,有一个最大执行时间Ti和等级Li,对于每一个任务,也有一个执行时间Tj和等级Lj.仅仅有当Ti>=Tj且Li>=Lj的时候,机器i才干完毕任务j,并获得500*Tj+2*Lj金钱. 问最多能完毕几个任务,当出现多种情况时,输出获得金钱最多的情况. 对任务和机器进行从大到小排序,从最大时间且最大等级的任务開始,选取全部符合时间限制的机器中等级要求最低的,这样能保证以下任务可选择的机器最多,如果选择的机器中等级要…
B. New Year Permutation time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output User ainta has a permutation p1, p2, ..., pn. As the New Year is coming, he wants to make his permutation as pretty…