不知这几天种的那好几棵线段树成活了没……

一本通1496:

题意:

在郊区有 NN 座通信基站,PP 条双向电缆,第 ii 条电缆连接基站 AiAi​和 BiBi​​ 。特别地,11 号基站是通信公司的总站,NN 号基站位于一座农场中。现在,农场主希望对通信线路进行升级,其中升级第 ii 条电缆需要花费 LiLi​ 。

电话公司正在举行优惠活动。农场主可以指定一条从 11 号基站到 NN 号基站的路径,并指定路径上不超过 KK 条电缆,由电话公司免费提供升级服务。农场主只需要支付在该路径上剩余的电缆中,升级价格最贵的那条电缆的花费即可。求至少用多少钱能完成升级。

一句话题意:在加权无向图上求出一条从 11 号结点到 NN 号结点的路径,使路径上第 K+1K+1 大的边权尽量小。

思路:满足单调性,所以用二分,把大于mid的边权设为1,小于mid的边权设为0,跑一遍最短路,看看d[n]是否即可,总体挺水的……

//By hpwwzyy2012
#include <bits/stdc++.h>
using namespace std;
#define gc getchar()
#define g(c) isdigit(c)
inline int read(){bool f=0;char c=0;int x=0;while (!g(c)) f=c=='-',c=gc;while (g(c)) x=x*10+c-48,c=gc;return f?-x:x;
}
const int N=1010;
const int M=2020;
struct node{int next,to,w;
}e[M<<1];int h[N],tot;
struct Bian{int a,b,w;void reading(){a=read();b=read();w=read();}
}f[M];
inline void add_edge_in_e(int a,int b,int w){e[++tot]=(node){h[a],b,w};h[a]=tot;e[++tot]=(node){h[b],a,w};h[b]=tot;
}
const int inf=0x3f3f3f3f;
int d[N],n,p,k;bool v[N];
inline void make_a_map(int mid){tot=0;memset(h,0,sizeof(h));for(int i=1;i<=p;i++){if (f[i].w>mid) add_edge_in_e(f[i].a,f[i].b,1);else add_edge_in_e(f[i].a,f[i].b,0);}return;//重新建边,注意内存循环利用(即tot=0)
}
inline bool check(int mid){make_a_map(mid);for(int i=1;i<=n;i++){d[i]=inf;v[i]=true;}d[1]=0;v[1]=false;queue<int> q;q.push(1);do{int z=q.front();q.pop();v[z]=true;for(int i=h[z];i;i=e[i].next){register int to=e[i].to;if (d[to]>d[z]+e[i].w){d[to]=d[z]+e[i].w;if (v[to]==true){v[to]=false;q.push(to);}}}}while (q.size());return d[n]<=k;
}
//用spfa跑最短路
int l,r,mid,ans,i;
int main(){
//  freopen("t1.in","r",stdin);n=read();p=read();k=read();for(i=1;i<=p;i++)f[i].reading();r=-inf;ans=-1;for(i=1;i<=p;i++){
//      l=min(l,f[i].w);r=max(r,f[i].w);}
//  if (!check(r)){
//      printf("-1");
//      return 0;
//  }while (l<=r){mid=(l+r)>>1;if (check(mid)){ans=mid;r=mid-1;}else l=mid+1;}printf("%d",ans);return 0;
}

一本通1512:

题意:

当排队等候喂食时,奶牛喜欢和它们的朋友站得靠近些。FJ 有 NN 头奶牛,编号从 11 到 NN,沿一条直线站着等候喂食。奶牛排在队伍中的顺序和它们的编号是相同的。因为奶牛相当苗条,所以可能有两头或者更多奶牛站在同一位置上。即使说,如果我们想象奶牛是站在一条数轴上的话,允许有两头或更多奶牛拥有相同的横坐标。一些奶牛相互间存有好感,它们希望两者之间的距离不超过一个给定的数 LL。另一方面,一些奶牛相互间非常反感,它们希望两者间的距离不小于一个给定的数 DD。

给出 MLML 条关于两头奶牛间有好感的描述,再给出 MDMD 条关于两头奶牛间存有反感的描述。你的工作是:如果不存在满足要求的方案,输出 −1−1;如果 11 号奶牛和 NN 号奶牛间的距离可以任意大,输出 −2−2;否则,计算出在满足所有要求的情况下,11 号奶牛和 NN 号奶牛间可能的最大距离。

思路:差分约束系统+spfa判负环,思维难道不高,但代码有一定难度。

做法:用边{a,b,c}表示b的位置-a的位置要

//By hpwwzyy2012
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e3+1e2;
const int M=1e4+1e2;
#define gc getchar()
#define g(c) isdigit(c)
inline int read(){bool f=0;char c=0;int x=0;while (!g(c)) f=c=='-',c=gc;while (g(c)) x=x*10+c-48,c=gc;return f?-x:x;
}
struct node{int next,to,w;
}e[(N+M)<<1];int h[N],tot;
//const int inf=0x3f3f3f3f;
inline void add(int a,int b,int c){e[++tot]=(node){h[a],b,c};h[a]=tot;
}
ll d[N],n,cnt[N],inf;bool v[N];
inline bool spfa(int s){memset(d,127,sizeof(d));memset(cnt,0,sizeof(cnt));memset(v,true,sizeof(v));inf=d[0];d[s]=0;v[s]=false;queue<int> q;q.push(s);do{int z=q.front();q.pop();v[z]=true;for(int i=h[z];i;i=e[i].next){register int to=e[i].to;if (d[to]>d[z]+e[i].w){d[to]=d[z]+e[i].w;cnt[to]=cnt[z]+1;if (cnt[to]>=n) return false;if (v[to]){v[to]=false;q.push(to);}}}}while (q.size());return true;
}
int m,q,a,b,c,i;
int main(){
//  freopen("t1.in","r",stdin);n=read();m=read();q=read();for(i=1;i<n;i++) add(i+1,i,0);//注意题目暗含的限制,免得跑出一些奇奇怪怪的解for(i=1;i<=m;i++){a=read();b=read();c=read();add(a,b,c);}for(i=1;i<=q;i++){a=read();b=read();c=read();add(b,a,-c);}for(i=1;i<=n;i++) add(0,i,0);//为spfa准备if (spfa(0)==false) cout<<-1;else{spfa(1);if (d[n]==inf) cout<<-2;else cout<<d[n];}return 0;
}

2019.08.17 日常总结相关推荐

  1. 2019.08.17【NOIP提高组】模拟 A 组 比赛总结

    比赛地址:http://jzoj.net/senior/#contest/home/2852 题目 jzoj 6290. 倾斜的线 http://jzoj.net/senior/#contest/sh ...

  2. 2019.08.17【NOIP?提高组】模拟 A 组 总结

    (今天标题验证NOIP取消了吗...) 心态巨崩 考场:\(50 + 20 + 0 = 70\) T1: 考场上推式子,看能否有仅包含一个点的值. 然后推到后面推出来一个用\(abs(Q(y1-y2) ...

  3. 2019.08.17 Webpack4 bilibi

    将这些依赖打包吗? es6转es5,将sass,less,转成css.文件优化:压缩代码体积,合并文件. 代码分割:公共模块的处理,路由懒加载功能.模块合并:功能模块分类 自动刷新 这些恨过的静态资源 ...

  4. Unparseable date: Fri Nov 08 17:37:33 CST 2019

    java.text.ParseException: Unparseable date: "Fri Nov 08 17:37:33 CST 2019" 类型转换异常,需要的参数是时间 ...

  5. CVPR 2019 | 百度17篇论文入选,AI巨头都在关注什么?(附论文下载)

    授权自AI科技大本营(ID:rgznai100) 本文共6400字,建议阅读10+分钟. 本文整理了百度入选CVPR的17篇论文的内容及应用场景. 计算机视觉和模式识别大会CVPR 2019即将于6月 ...

  6. HighNewTech:2019.08.09程序猿界大事件之【你好,我是鸿蒙OS】~【来了,老弟】—技术才是硬道理,开源方能建立新生态!

    High&NewTech:2019.08.09程序猿界大事件之[你好,我是鸿蒙OS]~[来了,老弟]-技术才是硬道理,开源方能建立新生态! 导读       2019华为开发者大会在今日举行, ...

  7. HighNewTech:2019.08.08华为发布—面向2025十大趋势

    High&NewTech:2019.08.08华为发布-面向2025十大趋势 导读        华为今日发布全球产业展望GIV@2025,提出智能世界正在加速而来,触手可及,并预测:到202 ...

  8. HighNewTech:2019.08.08鲲鹏开发入门暨 2019华为云鲲鹏开发者大赛参赛攻略

    High&NewTech:2019.08.08鲲鹏开发入门暨 2019华为云鲲鹏开发者大赛参赛攻略 目录 演讲PPT 1.基础知识 2.赛题解读 3.参赛攻略 4.FAQ 演讲PPT 1.基础 ...

  9. 2019.08.08学习整理

    2019.08.08学习整理 文件的高级应用 1.可读.可写 r+t: 可读.可写 w+t: 可写.可读 a+t: 可追加.可读 # wt with open('36w.txt', 'wt', enc ...

  10. 训练日志 2019.1.17

    上午补了补题,看了一会树状数组. 下午比赛的题基本是前三天的重现赛,除了之前的题基本都做出来以外,别的题就写出来一道 GCD 的逆推题,晚上补题比较轻松. 这几天总的来说还是感到跟别人的差距了,图论的 ...

最新文章

  1. 【小记】批处理FOR循环中的参数/D
  2. BLAST数据库搜索
  3. 动态修改easyui datagrid 列宽度
  4. Win关闭开启软件时的弹窗
  5. (JAVA)Arrays数组工具类
  6. 问题 K: A+B Problem (III) : Input/Output Practice 山东科技大学OJ c语言
  7. 程序媛爬取了 5 个 APP 的 4220 个数据,解读过去的一年到底过得怎么样!
  8. [转载]遗传算法介绍
  9. Java 四种权限修饰符
  10. 2015 2020 r4烧录卡 区别_2020版药典,药用辅料被重视了!
  11. Lua C API中文函数手册
  12. 停车场管理系统 Java语言
  13. 自定义打卡签到view
  14. transition、-moz-transition、-webkit-transition、-o-transition是什么意思?怎样用?
  15. 使用 css-transform 实现更好的拖拽功能
  16. 搭建react项目并配置路由
  17. php中对数组进行转码,PHP 数组转码
  18. [财务][数据化分析][帆软]报表设计-分页预览
  19. 光伏企业狠砸钱为何就做不起来农村分布式?
  20. DFT 离散傅里叶变换

热门文章

  1. [学习]18 SMART原则 如何科学的制定计划
  2. 程序媛:我的痘痘不让我编程
  3. matplotlib之等高线图
  4. entity framework 新手入门篇(1.5)-lambda表达式与linq
  5. 解决Linux服务器时差问题
  6. Java 安装+环境配置(图文详解)
  7. cpu和显卡瓶颈测试软件,CPU与GPU瓶颈的详述
  8. 粗略读了一遍李子奈的《计量经济学》
  9. PS4 eye camera v2 ROS测试
  10. 【*如何捱过寂寥萧瑟的秋季*】