当前位置: 首页 > news >正文

餐饮vi设计一套多少钱win10优化

餐饮vi设计一套多少钱,win10优化,公司网站建站软件,wordpress后台不好用又是一道优美的dp Description 给一棵m个结点的无根树,你可以选择一个度数大于1的结点作为根,然后给一些结点(根、内部结点和叶子均可)着以黑色或白色。你的着色方案应该保证根结点到每个叶子的简单路径上都至少包含一个有色结点&…

又是一道优美的dp

Description

给一棵m个结点的无根树,你可以选择一个度数大于1的结点作为根,然后给一些结点(根、内部结点和叶子均可)着以黑色或白色。你的着色方案应该保证根结点到每个叶子的简单路径上都至少包含一个有色结点(哪怕是这个叶子本身)。 对于每个叶结点u,定义c[u]为从根结点从U的简单路径上最后一个有色结点的颜色。给出每个c[u]的值,设计着色方案,使得着色结点的个数尽量少。

Input

第一行包含两个正整数m, n,其中n是叶子的个数,m是结点总数。结点编号为1,2,…,m,其中编号1,2,… ,n是叶子。以下n行每行一个0或1的整数(0表示黑色,1表示白色),依次为c[1],c[2],…,c[n]。以下m-1行每行两个整数a,b(1<=a < b <= m),表示结点a和b 有边相连。

Output

仅一个数,即着色结点数的最小值。

Sample Input

5 3
0
1
0
1 4
2 5
4 5
3 5

Sample Output

2

HINT

M<=10000

N<=5021


 

题目分析

这题的限制有些诡异,并且长得非常不像dp。仿佛我们需要三个状态$f[i][0/1/2]$来表示当前涂色状态,而且这样转移起来甚是麻烦。

但是细细一想,若一个点$node$有众多子节点,那就意味着有众多的叶子节点。而每一个叶子节点都是要上色的,况且上的色非黑即白就两种。

那么不论$node$子树内白多黑多,$node$这个节点当然要承担起父节点的责任,涂成一种颜色,这样肯定是不会更差的。

于是只有两个状态的树形dp就不难想到也不难打出了。

 1 /**************************************************************
 2     Problem: 1304
 3     User: AntiQuality
 4     Language: C++
 5     Result: Accepted
 6     Time:20 ms
 7     Memory:1600 kb
 8 ****************************************************************/
 9  
10 #include<bits/stdc++.h>
11 const int maxn = 10035;
12 const int INF = 2e9;
13  
14 int n,m,c[maxn];
15 int f[maxn][2];
16 int edgeTot,edges[maxn<<1],nxt[maxn<<1],head[maxn];
17  
18 int read()
19 {
20     char ch = getchar();
21     int num = 0;
22     bool fl = 0;
23     for (; !isdigit(ch); ch = getchar())
24         if (ch=='-') fl = 1;
25     for (; isdigit(ch); ch = getchar())
26         num = (num<<1)+(num<<3)+ch-48;
27     if (fl) num = -num;
28     return num;
29 }
30 void addedge(int u, int v)
31 {
32     edges[++edgeTot] = u, nxt[edgeTot] = head[v], head[v] = edgeTot;
33     edges[++edgeTot] = v, nxt[edgeTot] = head[u], head[u] = edgeTot;
34 }
35 void dp(int now, int fa)
36 {
37     if (now <= n){
38         f[now][c[now]] = 1, f[now][1-c[now]] = INF;
39         return;
40     }
41     f[now][0] = 1, f[now][1] = 1;
42     for (int i=head[now]; i!=-1; i=nxt[i])
43     {
44         int v = edges[i];
45         if (v!=fa){
46             dp(v, now);
47             f[now][0] += std::min(f[v][1], f[v][0]-1);  //可能这里为什么f[v][1]不加1,而是f[v][0]减1会有点疑问
48             f[now][1] += std::min(f[v][0], f[v][1]-1);  //f[now][]=1是每次dp时先确定好了的,这样可以避免重复计算  
49         }                             //手推一下就好了
50     }
51 }
52 int main()
53 {
54     memset(head, -1, sizeof head);
55     m = read(), n = read();
56     for (int i=1; i<=n; i++) c[i] = read();
57     for (int i=1; i<m; i++) addedge(read(), read());
58     dp(m, 0);
59     printf("%d\n",std::min(f[m][0], f[m][1]));
60     return 0;
61 }

 

 

END

转载于:https://www.cnblogs.com/antiquality/p/9255437.html

http://www.wooajung.com/news/33995.html

相关文章:

  • 黑彩网站建设需要什么东西百度关键词优化方法
  • 校园网站怎么做成人教育培训机构
  • 可以做商城网站的公司吗武汉最新今天的消息
  • 柳州团购网站建设中国疾控卫生应急服装
  • 推广方法的总结移动建站优化
  • 如何在分类信息网站做推广个人如何做seo推广
  • python搭建wordpress四川网站seo
  • 萝岗网站建设网站建设小程序开发
  • 宣传片制作公司保定seo搜索引擎优化哪家好
  • 联合建设官方网站微信scrm系统
  • 做一个跨境电商网站武汉全网推广
  • 北京网站设计 培训搜狗搜索网页版
  • 常州网站制作系统上海sem
  • 做网站点击率怎么收钱杭州网络
  • 西宁建站新东方小吃培训价格表
  • 高德地图怎么看邮编百度seo优化招聘
  • 医疗网站如何做优化引擎搜索优化
  • 请问那个网站做推广好点广告推广渠道
  • 丹东做网站企业培训方案制定
  • 优化型网站建设的基本要求徐州seo企业
  • 奉贤庄行网站建设百度sem推广
  • 成都网站设计公司怎么接广告推广
  • 产品推广有哪些平台seo平台有哪些
  • 对外宣传网站建设方案网络营销的策略包括
  • 招聘网站建设工作总结今日新闻最新头条10条
  • 企业网站一般要素免费seo技术教程
  • 企业网站建设中期报告模板成都网站制作
  • 如何用dw做网站框架google搜索引擎入口2022
  • 哪些网站可以做详情页永久8x的最新域名
  • 商城网站建设net2006免费发布产品的网站