原题传送门

没想到省选也会出这种题??!

实际就是一个带有限制的最短路

因为\(k<=10\),所以我们珂以暴力将每个点的权值分为[-k,k],为了方便我们珂以转化成[0,2k],将汉堡的权值记为1,可乐的权值记为-1,最短路即可,如果发现不合理的就果断扔掉即可(不知道有没有好事之徒用SPFA写)

  1. #include <bits/stdc++.h>
  2. #define N 10005
  3. #define pi pair<int,int>
  4. #define getchar nc
  5. using namespace std;
  6. inline char nc(){
  7. static char buf[100000],*p1=buf,*p2=buf;
  8. return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
  9. }
  10. inline int read()
  11. {
  12. register int x=0,f=1;register char ch=getchar();
  13. while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
  14. while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
  15. return x*f;
  16. }
  17. inline void write(register int x)
  18. {
  19. if(!x)putchar('0');if(x<0)x=-x,putchar('-');
  20. static int sta[20];register int tot=0;
  21. while(x)sta[tot++]=x%10,x/=10;
  22. while(tot)putchar(sta[--tot]+48);
  23. }
  24. inline int Min(register int a,register int b)
  25. {
  26. return a<b?a:b;
  27. }
  28. int T,n,m,k,c[N],s,t,dis[N][21],vis[N][21];
  29. vector<pi> e[N];
  30. priority_queue<pi,vector<pi>,greater<pi> > Q;
  31. int main()
  32. {
  33. T=read();
  34. while(T--)
  35. {
  36. n=read(),m=read(),k=read();
  37. for(register int i=0;i<n;++i)
  38. e[i].clear(),c[i]=(read()<<1)-3;
  39. for(register int i=0;i<m;++i)
  40. {
  41. int x=read()-1,y=read()-1,z=read();
  42. e[x].push_back(make_pair(y,z));
  43. e[y].push_back(make_pair(x,z));
  44. }
  45. s=read()-1,t=read()-1;
  46. memset(dis,63,sizeof(dis));
  47. memset(vis,0,sizeof(vis));
  48. Q.push(make_pair(dis[s][k+c[s]]=0,n*(k+c[s])+s));
  49. while(!Q.empty())
  50. {
  51. int u=Q.top().second%n,x=Q.top().second/n;
  52. Q.pop();
  53. if(vis[u][x])
  54. continue;
  55. vis[u][x]=1;
  56. for(register int t=0;t<e[u].size();++t)
  57. {
  58. int v=e[u][t].first,w=e[u][t].second,y=x+c[v];
  59. if(y>=0&&y<=k<<1&&dis[v][y]>dis[u][x]+w)
  60. dis[v][y]=dis[u][x]+w,Q.push(make_pair(dis[v][y],n*y+v));
  61. }
  62. }
  63. int ans=dis[t][0];
  64. for(register int i=1;i<=k<<1;++i)
  65. ans=Min(ans,dis[t][i]);
  66. write(ans>1e9?-1:ans),puts("");
  67. }
  68. return 0;
  69. }

【题解】Luogu P5340 [TJOI2019]大中锋的游乐场的更多相关文章

  1. luogu P5340 [TJOI2019]大中锋的游乐场

    传送门 要求经过路径汉堡的点和可乐的点个数之差绝对值\(\le k\),所以可以考虑dp,\(f_{i,j}\)表示到点\(i\),汉堡的点个数减可乐的点的个数为\(j\)的最短距离,注意一下负下标处 ...

  2. [洛谷P5340][TJOI2019]大中锋的游乐场

    题目大意:有$n(n\leqslant10^4)$个点,$m(m\leqslant10^5)$条边的无向图,每个点有一个属性$A/B$,要求$|cnt_A-cnt_B|\leqslant k(k\le ...

  3. [TJOI2019]大中锋的游乐场——最短路+DP

    题目链接: [TJOI2019]大中锋的游乐场 题目本质要求的还是最短路,但因为有第二维权值(汽水看成$+1$,汉堡看成$-1$)的限制,我们在最短路的基础上加上一维$f[i][j]$表示到达$i$节 ...

  4. 「TJOI2019」大中锋的游乐场

    题目链接 问题分析 比较明显的最短路模型.需要堆优化的dij.建图的时候注意细节就好. 参考程序 #include <bits/stdc++.h> #define LL long long ...

  5. [bzoj5511]大中锋的游乐场

    记可乐为1,汉堡为-1,即求过程中绝对值不超过k的最短路. 然后发现k的范围仅为10,也就是说过程中合法的值仅有21种,因此跑一遍dij或spfa(嘿嘿嘿)即可. 1 #include<bits ...

  6. 洛谷P5341 [TJOI2019]甲苯先生和大中锋的字符串

    原题链接P5341 [TJOI2019]甲苯先生和大中锋的字符串 题目描述 大中锋有一个长度为 n 的字符串,他只知道其中的一个子串是祖上传下来的宝藏的密码.但是由于字符串很长,大中锋很难将这些子串一 ...

  7. [TJOI2019]甲苯先生和大中锋的字符串——后缀自动机+差分

    题目链接: [TJOI2019]甲苯先生和大中锋的字符串 对原串建后缀自动机并维护$parent$树上每个点的子树大小,显然子树大小为$k$的节点所代表的子串出现过$k$次,那么我们需要将$[len[ ...

  8. [题解] Luogu P5446 [THUPC2018]绿绿和串串

    [题解] Luogu P5446 [THUPC2018]绿绿和串串 ·题目大意 定义一个翻转操作\(f(S_n)\),表示对于一个字符串\(S_n\), 有\(f(S)= \{S_1,S_2,..., ...

  9. 【题解】Luogu P5341 [TJOI2019]甲苯先生和大中锋的字符串

    原题传送门 实际按照题意模拟就行 我们先求出字符串的sa 因为要在字符串中出现k次,所以我们枚举\(l,r(r-l+1=k)\)看一共有多少种合法的方案 合法方案的长度下界\(lb\)为\(Max(h ...

随机推荐

  1. 第08组 Alpha冲刺(3/6)

    队名:955 组长博客:https://www.cnblogs.com/cclong/p/11872693.html 作业博客:https://edu.cnblogs.com/campus/fzu/S ...

  2. html 选择本地图片,显示选择的图片

    主要用的是html5的文件系统部分: <html> <head> <meta name="viewport" content="width= ...

  3. 如何去掉word中英文单词下的红色波浪线

    文件  ->选项 ->校对 在 只隐藏此文档中的拼写错误(S) 选项前打钩,点击确定即可

  4. Python3爬取美女妹子图片转载

    # -*- coding: utf-8 -*- """ Created on Sun Dec 30 15:38:25 2018 @author: 球球 "&qu ...

  5. How To Wake Up at 5 A.M. Every Day

    How To Wake Up at 5 A.M. Every Day For the past 3 months, I’ve successfully transitioned into being ...

  6. vue项目 既能通过ip访问项目,又可以本地localhost访问

    1.场景问题: 有时候开发过程中,vue项目需要其他同事能访问你本地进行调试,而不是需要重新拉取代码来启动很麻烦 2.解决思路: 一. package.json"dev": &qu ...

  7. Data truncation: Out of range value for column 'quanity' at row 问题解决方案

    由于之前在自己电脑上搭建了mysql 5.6的数据库,但是在服务器上搭建的是mysql 5.7的环境,在运行过程中出现了如下错误: Data truncation: Out of range valu ...

  8. 关于“javax.servlet.include.request_uri”属性值 include 请求 RequestDispatcher.include

    在springMVC的DispatcherServlet类的doService方法中有如下代码: 1 2 3 4 5 6 7 8 9 10 if (WebUtils.isIncludeRequest( ...

  9. elementui---表格拖动排序的问题

    刚刚用elementui的表格,需要用到一个拖动排序的需求,简单弄了下,使用 Sorttable 来做还是挺快的,但是发现一个问题,拖动排序显示不正常. <el-table :data=&quo ...

  10. PPT宝典

    http://www.ppt115.com/  是一个 ppt 网站资源导航,专注分享有关 ppt 相关的网站.教程.使用方法等.