[洛谷P4918]信仰收集
题目背景
随着各种势力的迁入,守矢神社丧失了不少信仰现在,为了挽回香火日益惨淡的神社,八坂神奈子派遣神社的风祝早苗去人类村落收集信仰
题目描述
你可以将村落看成一个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]信仰收集相关推荐
- 洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节. 由于牛棚不太大,FJ通过指定奶牛必须遵 ...
- 二分答案——砍树(洛谷 P1873)
题目选自洛谷P1873 分析:如果句子非常低,可以收集到的木材会更多,以至于超过需要的数量.随着砍树高度逐渐增大,获得的木材会逐渐减少.砍树高度增加到一定程度时,收集到的木材就会开始不够用.因此需要找 ...
- [洛谷P3527] [POI2011]MET-Meteors
洛谷题目链接:[POI2011]MET-Meteors 题意翻译 Byteotian Interstellar Union有N个成员国.现在它发现了一颗新的星球,这颗星球的轨道被分为M份(第M份和第1 ...
- 洛谷P1567 统计天数
洛谷P1567 统计天数 题目 题目描述 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 输出样例#1: 分析 CODE 题目 题目描述 炎热的夏日,KC 非常的不爽.他宁可忍受北 ...
- 洛谷P3237 [HNOI2014]米特运输 题解
洛谷P3237 [HNOI2014]米特运输 题解 题目链接:P3237 [HNOI2014]米特运输 题意: 这题面是真的长啊 qwq 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为 ...
- 【洛谷新手村解题报告二】C++语言,一题多解,思路和WA反思
[洛谷新手村解题报告二] 循环!循环!循环! 数组 继续上次的一!开始循环第二题 循环!循环!循环! 第二题 级数求和 [1/2] 已知:Sn= 1+1/2+1/3+-+1/n 显然对于任意一个整数 ...
- 洛谷 P2921 在农场万圣节Trick or Treat on the Farm (tarjan求强连通分量)
洛谷 P2921 在农场万圣节Trick or Treat on the Farm (tarjan求强连通分量) 题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N&l ...
- 洛谷P4474 王者之剑(吾王的题目!!!)
蒟蒻第一次发题解,看官点个赞再走QwQ 题目链接 https://www.luogu.org/problem/P4474 题目描述 这是在阿尔托利亚·潘德拉贡成为英灵前的事情,她正要去拔出石中剑成为亚 ...
- 洛谷循环结构(Freshman锻炼牛犇勿喷)
第一题 找最小值 题目描述 给出 n(n\le100)n(n≤100) 和 nn 个整数 a_i(0\le a_i \le 1000)ai(0≤ai≤1000),求这 nn 个整数中最小值是什么. ...
最新文章
- ios 部分string颜色_ios 设置字符串中某段字符的颜色
- 爬虫获取html页面,页面爬虫(获取其他页面HTML)加载到自己页面示例
- IOS支付宝集成一系列问题
- 小米更新显示非官方rom_魔趣ROM 安装刷入教程(小白新手)
- linux批量筛选序列变异位点,使用bedtools获取指定坐标上下游的序列
- day 5 名片管理系统-文件版
- HDU2449 Gauss Elimination 高斯消元 高精度 (C++ AC代码)
- Eclipse中如何安装Spring Tool Suite(STS)
- 唐宇迪机器学习笔记5:K近邻算法实战
- NOIP 2016 年普及组初赛试题整理
- xd使用技巧_Adobe XD —你不知道的30条提示和技巧!
- php程序员 好书,PHP程序员要看的书单
- 11月29日做题截图
- jquery判断元素内容是否为空的方法
- Java学习笔记day18-红黑树-Map
- 第二型曲面积分的定义
- Android微信支付遇到的大坑
- 加拿大数字知名媒体Digital Journal全面报道Filenet项目
- Debian 为什么没有成立非营利基金会?
- 【直播活动】阿里巴巴开源大家族加入中科院开源之夏2022
热门文章
- 2018程序员最佳ssh免费登陆工具
- 【联盛德W806上手笔记】二、GPIO
- VS.NET版本与VC版本对应关系
- 使用pdb调试Python程序
- 前端学习(3050):vue+element今日头条管理-表格组件基本使用
- [html] android手机的微信H5弹出的软键盘挡住了文本框,如何解决?
- [vue] 说说你觉得认为的vue开发规范有哪些?
- 前端学习(2868):vue3数据劫持解析3
- 工作327:uni-数据格式处理
- [js] js源代码压缩都有哪些方法?它们的压缩原理分别是什么