题目传送门

似乎是我的第一篇 IOI 题解?

思路

虽然说是 IOI 题,但是其实并没有那么难。

这个题目描述比较杂乱,简单的描述就是:给你一些关系,你需要选出一些点,使这些点的权值和最大,并且这些点之间两两都没有关系。

似乎像是一个 DP,所以我们不妨设出状态:\(f_{i,0/1}\) 表示第 \(i\) 个点,选/不选的最大权值和。

设 \(w_i\) 表示第 \(i\) 个点的权值,\(x\) 表示当前的主持人。

我们来一种一种操作分析:

  • IAmYourFriend:就是一个简单的没有上司的舞会,\(f_{x,0}=w_x+f_{i,1},f_{x,1}=\max(f_{i,0},f_{i,1})\)。
  • MyFriendsAreYourFriends:意为 \(i\) 是 \(x\) 所有朋友的朋友,那么既然选了 \(i\),那么 \(x\) 的朋友必须不选,那么 \(x\) 显然可以选,所以 \(f_{x,0}=\max(w_x+f_{i,0},w_x+f_{i,1},f_{x,1}+f_{i,0},f_{x,1}+f_{i,1}),f_{x,1}+=f_{i,1}\)。
  • WeAreYourFriends:相当于第一种情况和第二种情况拼起来,不再赘述。

代码

#include<bits/stdc++.h>
using namespace std;
int const N=1e6+10;
int f[N][2],co[N],ho[N],pr[N];
int findSample(int n,int confidence[],int host[],int co[]){
for (int i=0;i<n;++i) f[i][0]=confidence[i];
for (int i=n-1;i;--i){
int x=host[i];
if (co[i]==0)
f[x][0]+=f[i][1],f[x][1]+=max(f[i][0],f[i][1]);
else if (co[i]==1)
f[x][0]+=max(f[i][0],f[i][1]),f[x][0]=max(f[x][0],f[x][1]+max(f[i][1],f[i][0])),f[x][1]+=f[i][1];
else if (co[i]==2)f[x][0]+=f[i][1],f[x][0]=max(f[x][0],f[x][1]+f[i][0]),f[x][1]+=f[i][1];
}
int ans=0;
for (int i=0;i<n;++i) ans=max(ans,f[i][0]),ans=max(ans,f[i][1]);
return ans;
}

[IOI2014]friend 朋友的更多相关文章

  1. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  2. QQ空间/朋友圈类界面的搭建

    类似于QQ空间的布局主要是在说说信息.点赞.回复三大部分的自适应布局上. 当我们需要搭建类似QQ空间.微信朋友圈的界面的时候,可做如下操作: 创建一个对应的model类: 创建一个对应model类的f ...

  3. 2017《时间的朋友》罗振宇跨年演讲ppt

    2016年12月31日晚,罗辑思维的罗振宇将在深圳湾春茧体育馆进行2017<时间的朋友>跨年演讲,很多网友一直在找直播的地址还是没找到,现在ytkah就第一时间分享一些精彩ppt弥补网友的 ...

  4. Python微信-- 分享接口(分享到朋友圈、朋友、空间)

    生成JS-SDK权限验证的签名 获取signature(签名)首先要获得 1.#获得jsapi_ticket 2.#获取当前页面的url #获取当前页面的url url="{}://{}{} ...

  5. Apple Watch版微信来了 收发微信刷朋友圈不在话下

    昨晚果粉守了一夜的Apple Watch发布会,意料中的惊喜不少,最让人兴奋的是微信成为首批支持的应用.是的,在全球拥有4.68亿月活跃用户的微信怎么可能不第一时间入驻呢?之前我们就有聊过Apple ...

  6. UC浏览器 分享到朋友圈和微信好友 分类: JavaScript 2015-04-28 14:45 615人阅读 评论(1) 收藏

    用手机UC浏览器访问新浪微博,会注意到有这样的两个分享按钮: 在手机端浏览器里,点击分享按钮,就可以启动微信客户端并分享到微信.研究了下其源代码,存在这样的一个js:http://mjs.sinaim ...

  7. <把时间当做朋友>读书笔记

    这本书我早就看过,还想再来一遍 开始这一行动是看李萌在朋友圈晒101计划,每天健身,读书半小时之类的,我也想做点啥,那就每天睡前读书半小时吧,怎么坚持下去呢? 我不想晒到朋友圈里,那就晒给玉玉看吧, ...

  8. MWeb 2.0 测试版可以下载啦,这次是公开测试,感兴趣的朋友可以试试

    2.0 版是 MWeb 发布以来,最重要的一个版本.MWeb 自去年一月份发布以来,获得了很多朋友的建议,在此非常感谢!没有你们,2.0 版可能就不能出来!然后再次感谢 Producter: http ...

  9. hduoj 1286 找新朋友

    http://acm.hdu.edu.cn/showproblem.php?pid=1286 找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...

  10. iOS版微信朋友圈数据库的简要分析

    本文版权归cxun所有,如有转载请注明出处与本文链接,谢谢!原文地址:http://www.cnblogs.com/cxun/p/4550523.html 之前写了一些关于微信聊天记录的博文之后,不少 ...

随机推荐

  1. day12 多线程1.进程与线程 & 2.线程生命周期 & 3.线程同步机制

    day12 bigDecimal,用于计算钱的数据类型 多线程 线程与进程 进程 1)执行中的应用程序 2)一个进程可以包含一个或者多个线程 3)一个进程至少要包含一个线程(如main方法) 线程 线 ...

  2. Crane如何做到利用率提升3倍稳定性还不受损?

    作为云平台用户,我们都希望购买的服务器物尽其用,能够达到最大利用率.然而要达到理论上的节点负载目标是很的,计算节点总是存在一些装箱碎片和低负载导致的闲置资源.下图展示了某个生产系统的CPU资源现状,从 ...

  3. socet网络编程

    一. 网络模型 应用层   -----     HTTP协议 传输层   -----     TCP协议 网络层   -----       IP协议 链路层   -----     以太网协议 二. ...

  4. 如何让铁威马NAS可以通过互联网访问?

    当你在家或者出差去外地时候,可能要通过互联网访问你的TNAS设备,而使用远程访问功能,你可以随时随地访问你的TNAS 设备.读取你TNAS 中的文件或是对你的TNAS 设备进行配置.远程访问能给你的工 ...

  5. python循环结构之for循环

    在python中,for循环是应用非常广的循环语句,遍历字典.遍历列表等等... # for语句结构 for 遍历 in 序列: 执行语句 遍历字典 lipsticks = {"Chanel ...

  6. Spring IoC的一些知识点

    在日常开发中,接触得比较多的算是Spring生态了,Spring Ioc是Spring Framework重要的组成部分,下面整理了一些Spring Ioc的知识点. 1. 什么是IoC IoC(In ...

  7. Sql Server中order by对varchar类型排序结果不对

    1.问题描述 我写一个sql想要把查询结果根据LineNumber升序进行排序,即1.0,1.1,1.2,...1.3.2....2.0,......10.0,......15.2,......这样子 ...

  8. [python]《Python编程快速上手:让繁琐工作自动化》学习笔记3

    1. 组织文件笔记(第9章)(代码下载) 1.1 文件与文件路径 通过import shutil调用shutil模块操作目录,shutil模块能够在Python 程序中实现文件复制.移动.改名和删除: ...

  9. [R语言] ggplot2入门笔记2—通用教程ggplot2简介

    文章目录 通用教程简介(Introduction To ggplot2) 2 ggplot2入门笔记2-通用教程ggplot2简介 1. 了解ggplot语法(Understanding the gg ...

  10. 主题 2 Shell工具和脚本

    主题 2 Shell工具和脚本 Shell 工具和脚本 · the missing semester of your cs education (missing-semester-cn.github. ...