ZOJ 3734 LIKE vs CANDLE
题目意思:(13年长沙站的一道水DP,本人也去了,当时太水笔) 说俩个人竞争选票,每个人可以随机选择支持谁。每个人带有权重不同。
现在已经结束了投票阶段,你一个骇客 支持LIKE 你写了一个软件可以 用LIKE 的 X点能量翻转某个个节点,这个节点的儿子也一样跟着翻转(转自他的就是他的儿子,孙子也一样,支持的人变了);
有的点已经被人用 同样 的方法翻转过。这样的先需用Y能量,问LIKE-CANDLE最大和最小值:
解法:对于每个节点最多一次操作,对吧,不解释;所以DP[num][flag]//代表LIKE-CANDLE最大和最小值:
多以我们只要维护俩个值支持LINK-CANDLE就可以了;
代码注释如下:
#include <cstring>
#include <cmath>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
using namespace std;
const int maxn=;
struct Edge
{
int to,pre;
Edge(int to=,int pre=):to(to),pre(pre){}
};
Edge edge[maxn<<];
int head[maxn],pos;
int val[maxn];
int used[maxn];
int suport[maxn];
int n,x,y;
int dp[maxn][];
void inint()
{
memset(head,-,sizeof(head));
pos=;
}
void add_edge(int s,int to)
{
edge[pos]=Edge(to,head[s]);
head[s]=pos++;
}
void dfs(int s,int cnt)
{ int ans,key;
if(used[s])cnt++;
if( ((cnt&) && (suport[s]==)||( !(cnt&) &&(suport[s]==) ) ))
{
dp[s][]=val[s];
dp[s][]=-val[s];
}
else
{
dp[s][]=-val[s];
dp[s][]=val[s];
}//上面是初始化初始的权值
for(int i=head[s];~i;i=edge[i].pre)
{
Edge &tmp=edge[i];
dfs(tmp.to,cnt);
dp[s][]+=dp[tmp.to][];
dp[s][]+=dp[tmp.to][];
}
//这是整棵树的最大最小
if(s)
{
int need;
if(used[s])need=y;
else need=x;
dp[s][]=max(dp[s][],dp[s][]-need);
dp[s][]=max(dp[s][],dp[s][]-need);
}
//中是否翻转后的最大和最小
}
int main()
{
int s;
while(~scanf("%d%d%d",&n,&x,&y))
{
inint();
for(int i=;i<=n;i++)
{
scanf("%d%d%d%d",&val[i],&s,&used[i],&suport[i]);
add_edge(s,i);
}
dfs(,);
if(dp[][]>=) printf("%d\n",dp[][]);
else puts("HAHAHAOMG");
}
return ;
}
ZOJ 3734 LIKE vs CANDLE的更多相关文章
- HDU 4430 & ZOJ 3665 Yukari's Birthday(二分法+枚举)
主题链接: HDU:pid=4430" target="_blank">http://acm.hdu.edu.cn/showproblem.php?pid=4430 ...
- ZOJ People Counting
第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ 3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...
- ZOJ 3686 A Simple Tree Problem
A Simple Tree Problem Time Limit: 3 Seconds Memory Limit: 65536 KB Given a rooted tree, each no ...
- ZOJ Problem Set - 1394 Polar Explorer
这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...
- ZOJ Problem Set - 1392 The Hardest Problem Ever
放了一个长长的暑假,可能是这辈子最后一个这么长的暑假了吧,呵呵...今天来实验室了,先找了zoj上面简单的题目练练手直接贴代码了,不解释,就是一道简单的密文转换问题: #include <std ...
- ZOJ Problem Set - 1049 I Think I Need a Houseboat
这道题目说白了是一道平面几何的数学问题,重在理解题目的意思: 题目说,弗雷德想买地盖房养老,但是土地每年会被密西西比河淹掉一部分,而且经调查是以半圆形的方式淹没的,每年淹没50平方英里,以初始水岸线为 ...
- ZOJ Problem Set - 1006 Do the Untwist
今天在ZOJ上做了道很简单的题目是关于加密解密问题的,此题的关键点就在于求余的逆运算: 比如假设都是正整数 A=(B-C)%D 则 B - C = D*n + A 其中 A < D 移项 B = ...
- ZOJ Problem Set - 1001 A + B Problem
ZOJ ACM题集,编译环境VC6.0 #include <stdio.h> int main() { int a,b; while(scanf("%d%d",& ...
- zoj 1788 Quad Trees
zoj 1788 先输入初始化MAP ,然后要根据MAP 建立一个四分树,自下而上建立,先建立完整的一棵树,然后根据四个相邻的格 值相同则进行合并,(这又是递归的伟大),逐次向上递归 四分树建立完后, ...
随机推荐
- ORACLE数据库常见问题汇总
提交事务的时候提示(数据库被一个用户锁住的解决方法) select object_id,session_id,locked_mode from v$locked_object; select t2.u ...
- c语言太easy笔误的,这将做
调试发现时间写的一样NB代码 test.c int add(string); int main() { char* p = "11222"; add(p); return 0; } ...
- c++各类变量汇总
一.局部变量和全局变量: (1)局部变量:局部变量也叫自动变量,它声明在函数开始,生存于栈,它的生命随着函数的返回而结束. #include <stdio.h> int main(void ...
- [置顶] Android常用适配器控件
Android常用适配器控件 列表控件用于显示数据集合,Android不是使用一种类型的控件管理显示和数据,而是将这两项功能分布用列表控件和适配器来实现.列表控件扩展了android.widget.A ...
- 阿里云免费试用之体验——阿里云serverECS试用心得
自上次參加了阿里云的开发人员大会回来 心里就一直惦记着阿里云 由于曾经各种各样什么的server也用了不少 年前開始接触阿里云 一直没有给予很多其它的关注 參加了这次的开发人员大会后 就想更进一步的了 ...
- SqlServer操作远程数据库
exec sp_addlinkedserver 'srv2','','mssql2008','服务器IP' exec sp_addlinkedsrvlogin 'srv2','false',null, ...
- java与c/c++进行socket通信
比如Server端只接收一个结构Employee,定义如下: struct UserInfo { char UserName[20]; int UserId; }; struct Employ ...
- Linux lamp环境编译安装
1.安装准备: 1)httpd-2.0.52.tar.gz 2)mysql-4.1.12.tar.gz 3)libxml2-2.6.27.tar 4)freetype-2.1.10.tar 5)gd- ...
- Win7+ubuntu kylin+CentOS 6.5三系统安装图文教程
Win7+ubuntu kylin+CentOS 6.5三系统安装图文教程 引言:原本机子上已经装好了win7+Ubuntu Kylin 由win7引导,而不是Ubuntu的grub引导的双系统(安装 ...
- Java的内存泄漏和垃圾回收机制
JAVA会产生内存泄露吗?首先,答案是肯定的. Java尽管有垃圾回收器,但依旧存在泄漏. Java内存泄漏跟C/C++内存泄漏的概念不一样:C/C++的内存泄漏是指Malloc了一些资源.最后没有f ...