2015年7月15日

摘要: 这道题目用DP来搞首先题目可以看成把所有的计算机分成很多组每一组的都关闭同一种服务,同时这一组的关闭能够关闭所有的计算机,那么另S为当前的所有计算机的集合另S0为S的子集另全集(所有计算机)为S′那么可以很容易的发现f(S)=max{f(S0)+(S′==cover(S0))}其中... 阅读全文
posted @ 2015-07-15 17:34 JeremyGuo 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 这倒题太坑了。。。简直。。。明明没有错误的代码就是A不了。。 题目分析另f(state,i,j) 表示在状态为state的情况下当前在i点前一个点是j点的所能够得到的最大的乘积那么很容易发现f(state+(1#include using namespace std;/******... 阅读全文
posted @ 2015-07-15 16:57 JeremyGuo 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 首先可以发现肯定这个图是一个森林,而且在这个森林之中只有一个环,那么只要找到这个环上的任意一条边(删掉这条边)然后对这条边的两个端点分别作两次最大独立集,然后分别取两个点中不取的情况的最大值,然后这个值就是要找的了,因为只有一个环,所以我找环的方法是用并查集的方法。。#includ... 阅读全文
posted @ 2015-07-15 10:44 JeremyGuo 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 首先很容易可以得到另f(i,j)表示第i盏灯的父亲是否点亮所以j=0|1如果父亲放了,那么自己放或者不放都可以那么f(i,j)=max{∑f(ison,0)∑f(ison,1)},如果父亲没有放置,那么自己必须放那么f(i,0)=∑f(ison,1)但是这个时候要让被灯照亮两次的边... 阅读全文
posted @ 2015-07-15 10:28 JeremyGuo 阅读(191) 评论(0) 推荐(0) 编辑

导航