题目背景

随着各种势力的迁入,守矢神社丧失了不少信仰现在,为了挽回香火日益惨淡的神社,八坂神奈子派遣神社的风祝早苗去人类村落收集信仰

题目描述

你可以将村落看成一个m个点的有向无环图(编号从1−m),其中在某些点上有n簇待收集的信仰(每一簇都有一定的数量),图中有k有向边,每条边的长度均为1
早苗会从图中的1号点出发,在图中的任意一个点停止收集,当早苗在一个有信仰的点的时候,她会将这个点所有的信仰全部收集(包括1号点)
为了方便,早苗从宇佐见堇子那里学会了瞬移,所以她可以一次移动a个单位长度(称为小瞬移),也可以一次移动b个单位长度(称为大瞬移),分别会花费wa,wb点灵力,保证a≤b,但由于幻想乡不能被常识所束缚,所以wa不一定小于wb
现在,早苗希望你能帮她求出她在村落中能获得的(信仰数量-灵力耗费)的最大值

如果做过$NOIP2017$的逛公园的话再做这种拓扑图上的$dp$就比较套路了,我们设$dp[i][j]$表示到$i$号点还有$j$步瞬移结束的最大价值,然后边拓扑排序边转移即可

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<queue>
 4 #include<cstring>
 5 #define M 200010
 6 using namespace std;
 7 queue<int>q;
 8 int n,m,num,k,da,wa,db,wb,ans;
 9 int head[M],w[M],dig[M],dp[M][60];
10 struct point{int to,next;}e[M<<1];
11 void add(int from,int to)
12 {
13     e[++num].next=head[from];
14     e[num].to=to;
15     head[from]=num;
16 }
17 int main()
18 {
19     scanf("%d%d%d",&k,&n,&m);
20     scanf("%d%d%d%d",&da,&db,&wa,&wb);
21     for(int x,y,i=1;i<=k;i++)
22         scanf("%d%d",&x,&y),w[x]+=y;
23     for(int a,b,i=1;i<=m;i++)
24         scanf("%d%d",&a,&b),add(a,b),dig[b]++;
25     for(int i=1;i<=n;i++) if(!dig[i]) q.push(i);
26     memset(dp,128,sizeof(dp));
27     dp[1][0]=w[1];
28     while(!q.empty())
29     {
30         int x=q.front();q.pop();
31         for(int i=head[x];i;i=e[i].next)
32         {
33             int to=e[i].to;
34             dp[to][0]=max(dp[to][0],dp[x][da-1]-wa+w[to]);
35             dp[to][0]=max(dp[to][0],dp[x][db-1]-wb+w[to]);
36             for(int j=1;j<db;j++)
37                 dp[to][j]=max(dp[to][j],dp[x][j-1]);
38             if((--dig[to])==0) q.push(to);
39         }
40     }
41     for(int i=1;i<=n;i++) ans=max(ans,dp[i][0]);
42     printf("%d\n",ans);
43     return 0;
44 }

转载于:https://www.cnblogs.com/Slrslr/p/10009390.html

[洛谷P4918]信仰收集相关推荐

  1. 洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm

    题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节. 由于牛棚不太大,FJ通过指定奶牛必须遵 ...

  2. 二分答案——砍树(洛谷 P1873)

    题目选自洛谷P1873 分析:如果句子非常低,可以收集到的木材会更多,以至于超过需要的数量.随着砍树高度逐渐增大,获得的木材会逐渐减少.砍树高度增加到一定程度时,收集到的木材就会开始不够用.因此需要找 ...

  3. [洛谷P3527] [POI2011]MET-Meteors

    洛谷题目链接:[POI2011]MET-Meteors 题意翻译 Byteotian Interstellar Union有N个成员国.现在它发现了一颗新的星球,这颗星球的轨道被分为M份(第M份和第1 ...

  4. 洛谷P1567 统计天数

    洛谷P1567 统计天数 题目 题目描述 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 输出样例#1: 分析 CODE 题目 题目描述 炎热的夏日,KC 非常的不爽.他宁可忍受北 ...

  5. 洛谷P3237 [HNOI2014]米特运输 题解

    洛谷P3237 [HNOI2014]米特运输 题解 题目链接:P3237 [HNOI2014]米特运输 题意: 这题面是真的长啊 qwq 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为 ...

  6. 【洛谷新手村解题报告二】C++语言,一题多解,思路和WA反思

    [洛谷新手村解题报告二] 循环!循环!循环! 数组 继续上次的一!开始循环第二题 循环!循环!循环! 第二题 级数求和 [1/2] 已知:Sn= 1+1/2+1/3+-+1/n 显然对于任意一个整数 ...

  7. 洛谷 P2921 在农场万圣节Trick or Treat on the Farm (tarjan求强连通分量)

    洛谷 P2921 在农场万圣节Trick or Treat on the Farm (tarjan求强连通分量) 题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N&l ...

  8. 洛谷P4474 王者之剑(吾王的题目!!!)

    蒟蒻第一次发题解,看官点个赞再走QwQ 题目链接 https://www.luogu.org/problem/P4474 题目描述 这是在阿尔托利亚·潘德拉贡成为英灵前的事情,她正要去拔出石中剑成为亚 ...

  9. 洛谷循环结构(Freshman锻炼牛犇勿喷)

    第一题 找最小值 题目描述 给出 n(n\le100)n(n≤100) 和 nn 个整数 a_i(0\le a_i \le 1000)ai​(0≤ai​≤1000),求这 nn 个整数中最小值是什么. ...

最新文章

  1. ios 部分string颜色_ios 设置字符串中某段字符的颜色
  2. 爬虫获取html页面,页面爬虫(获取其他页面HTML)加载到自己页面示例
  3. IOS支付宝集成一系列问题
  4. 小米更新显示非官方rom_魔趣ROM 安装刷入教程(小白新手)
  5. linux批量筛选序列变异位点,使用bedtools获取指定坐标上下游的序列
  6. day 5 名片管理系统-文件版
  7. HDU2449 Gauss Elimination 高斯消元 高精度 (C++ AC代码)
  8. Eclipse中如何安装Spring Tool Suite(STS)
  9. 唐宇迪机器学习笔记5:K近邻算法实战
  10. NOIP 2016 年普及组初赛试题整理
  11. xd使用技巧_Adobe XD —你不知道的30条提示和技巧!
  12. php程序员 好书,PHP程序员要看的书单
  13. 11月29日做题截图
  14. jquery判断元素内容是否为空的方法
  15. Java学习笔记day18-红黑树-Map
  16. 第二型曲面积分的定义
  17. Android微信支付遇到的大坑
  18. 加拿大数字知名媒体Digital Journal全面报道Filenet项目
  19. Debian 为什么没有成立非营利基金会?
  20. 【直播活动】阿里巴巴开源大家族加入中科院开源之夏2022

热门文章

  1. 2018程序员最佳ssh免费登陆工具
  2. 【联盛德W806上手笔记】二、GPIO
  3. VS.NET版本与VC版本对应关系
  4. 使用pdb调试Python程序
  5. 前端学习(3050):vue+element今日头条管理-表格组件基本使用
  6. [html] android手机的微信H5弹出的软键盘挡住了文本框,如何解决?
  7. [vue] 说说你觉得认为的vue开发规范有哪些?
  8. 前端学习(2868):vue3数据劫持解析3
  9. 工作327:uni-数据格式处理
  10. [js] js源代码压缩都有哪些方法?它们的压缩原理分别是什么