/*
cogs 2507 零食店
跪了这题的数据了....
第一遍Q*m 暴力询问 嗯 以为能的70 但只有40
Q已经到了1e6了
考试的时候 放弃了第三题又打了一遍
这次是Q*(n+logn) 最后发现和暴力分一样....
好吧数据很厉害 吓得我在地上爬23333
好吧 考完了之后 看了正解
我靠这不和我的一个样吗
哎 啊啊啊 二分....
傻傻的我笑了 都想出了方程 没打二分
.....
迅速的改成二分 由迅速的wa了 23333
其实这样过不了了 Dij预处理会超时.
看了正解 直接Floyed 巧妙利用了floyed k层循环的含义
状态差不多 最后终于70了 然后优化常树 然后抄了个inf 1e9
这个inf大一点小一点都不对....
知道最后也是卡过去的
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 110
#define inf 1e9+1
using namespace std;
int n,m,Q,r[maxn],f[maxn][maxn][maxn];
int init(){
int x=,f=;char s=getchar();
while(s<''||s>''){if(s=='-')f=-;s=getchar();}
while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
return x*f;
}
struct node{
int c,o;
}p[maxn];
int cmp(const node &x,const node &y){
return x.c<y.c;
}
void Floyed(){
for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
f[k][i][j]=min(f[k-][i][j],f[k-][i][p[k].o]+f[k-][p[k].o][j]);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
sort(f[i][j]+,f[i][j]++n);
}
int main()
{
freopen("snackstore.in","r",stdin);
freopen("snackstore.out","w",stdout);
scanf("%d%d%d",&n,&m,&Q);
int u,v,pos,t;
for(int i=;i<=n;i++){
p[i].c=init();p[i].o=i;
r[i]=p[i].c;
}
sort(p+,p++n,cmp);sort(r+,r++n);
for(int k=;k<=n+;k++)
for(int i=;i<=n+;i++)
for(int j=;j<=n+;j++)
f[k][i][j]=inf;
for(int i=;i<=m;i++){
u=init();v=init();t=init();
if(t<f[][u][v])
f[][u][v]=f[][v][u]=t;
}
for(int i=;i<=n;i++)f[][i][i]=;
Floyed();
while(Q--){
u=init();v=init();t=init();
v=upper_bound(r+,r++n,v)-r-;
pos=upper_bound(f[v][u]+,f[v][u]++n,t)-f[v][u]-;
printf("%d\n",pos-);
}
return ;
}
/*Dij预处理+二分找*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
#include<vector>
#define pa pair<int,int>
#define mk make_pair
#define maxn 110
#define maxm 10010
#define inf 1e9+1
using namespace std;
int n,m,Q,num,head[maxn],c[maxn],r[maxn],sum;
int dis[maxn],f[maxn][maxn][maxn];
bool vis[maxn];
struct node{
int v,t,pre;
}e[maxm*];
priority_queue<pa,vector<pa>,greater<pa> >q;
int init(){
int x=;char s=getchar();
while(s<''||s>'')s=getchar();
while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
return x;
}
void Add(int from,int to,int dis){
num++;e[num].v=to;
e[num].t=dis;
e[num].pre=head[from];
head[from]=num;
}
void Dij(int s,int mx){
while(!q.empty())q.pop();
for(int i=;i<=n;i++)dis[i]=inf;
memset(vis,,sizeof(vis));
q.push(mk(,s));dis[s]=;
while(!q.empty()){
int k=q.top().second;q.pop();
if(vis[k]||(c[k]>mx&&k!=s))continue;vis[k]=;
for(int i=head[k];i;i=e[i].pre){
int v=e[i].v;
if(dis[v]>dis[k]+e[i].t){
dis[v]=dis[k]+e[i].t;
q.push(mk(dis[v],v));
}
}
}
for(int i=;i<=n;i++)
f[s][mx][i]=dis[i];
sort(f[s][mx]+,f[s][mx]++n);
}
void Solve(){
for(int i=;i<=n;i++)
for(int j=;j<=sum;j++)
Dij(i,j);
}
int main()
{
freopen("snackstore.in","r",stdin);
freopen("snackstore.out","w",stdout);
n=init();m=init();Q=init();
int u,v,t;
for(int i=;i<=n;i++){
c[i]=init();r[++sum]=c[i];
}
sort(r+,r++sum);
sum=unique(r+,r++sum)-r-;
for(int i=;i<=n;i++){
int pos=lower_bound(r+,r++sum,c[i])-r;
c[i]=pos;
}
for(int i=;i<=m;i++){
u=init();v=init();t=init();
Add(u,v,t);Add(v,u,t);
}
for(int k=;k<=n+;k++)
for(int i=;i<=n+;i++)
for(int j=;j<=n+;j++)
f[k][i][j]=inf;
Solve();
while(Q--){
int pos=;
u=init();v=init();t=init();
v=upper_bound(r+,r++sum,v)-r-;
pos=upper_bound(f[u][v]+,f[u][v]++n,t)-f[u][v]-;
printf("%d\n",pos);
}
return ;
}
/*SPFA暴力找*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 110
#define maxm 10010
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;
ll n,m,Q,num,hea[maxn],dis[maxn],q[maxm*],head,tail,c[maxn];
bool f[maxn];
struct node{
ll v,t,pre;
}e[maxm*];
ll init(){
ll x=,f=;char s=getchar();
while(s<''||s>''){if(s=='-')f=-;s=getchar();}
while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
return x*f;
}
void Add(ll from,ll to,ll dis){
num++;e[num].v=to;
e[num].t=dis;
e[num].pre=hea[from];
hea[from]=num;
}
void SPFA(ll s,ll mx,ll mxx){
for(int i=;i<=n;i++)dis[i]=inf;
for(int i=;i<=n;i++)f[i]=;
head=;tail=;dis[s]=;
q[++tail]=s;f[s]=;
while(head<=tail){
ll k=q[head++];f[k]=;
if(c[k]>mx&&k!=s)continue;
for(int i=hea[k];i;i=e[i].pre){
ll v=e[i].v;
if(dis[v]>dis[k]+e[i].t){
dis[v]=dis[k]+e[i].t;
if(f[v]==&&dis[v]<=mxx){
f[v]=;q[++tail]=v;
}
}
}
}
}
int main()
{
freopen("snackstore.in","r",stdin);
//freopen("snackstore.out","w",stdout);
n=init();m=init();Q=init();
ll u,v,t;
for(int i=;i<=n;i++)
c[i]=init();
for(int i=;i<=m;i++){
u=init();v=init();t=init();
Add(u,v,t);Add(v,u,t);
}
while(Q--){
int cnt=;
u=init();v=init();
t=init();SPFA(u,v,t);
for(int i=;i<=n;i++)
if(dis[i]<=t&&i!=u)cnt++;
cout<<Q<<" "<<cnt<<endl;
}
return ;
}

cogs 2507 零食店的更多相关文章

  1. .Linode服务器的使用 网站迁移

    很多建站的朋友习惯了虚拟主机的 Cpanel 面板,但是面对 VPS 都感觉无所适从.毕竟外贸人很少接触到这类知识,所以需要一个贴心的新手教程. Linode VPS:国外最好的VPS注册购买教程 撇 ...

  2. 201621123006 《Java程序设计》第5周学习总结

    1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词. 继承.接口.抽象类.多态.interfac.comparable 1.2 尝试使用思维导图将这些关键词组织起来.注:思维导图一 ...

  3. Java编程思想:构建复杂模型

    import sun.nio.cs.Surrogate; import java.util.ArrayList; import java.util.Random; public class Test ...

  4. 采用Sharding-JDBC解决分库分表

    源码:Sharding-JDBC(分库分表) 一.Sharding-JDBC介绍 1,介绍 Sharding-JDBC是当当网研发的开源分布式数据库中间件,从 3.0 开始Sharding-JDBC被 ...

  5. YTU 2507: 李白打酒

    2507: 李白打酒 时间限制: 1 Sec  内存限制: 128 MB 提交: 414  解决: 186 题目描述 话说大诗人李白,一生好饮.幸好他从不开车.  一天,他提着酒壶,从家里出来,酒壶中 ...

  6. C#开发微信门户及应用(24)-微信小店货架信息管理

    在前面微信小店系列篇<C#开发微信门户及应用(22)-微信小店的开发和使用>里面介绍了一些微信小店的基础知识,以及<C#开发微信门户及应用(23)-微信小店商品管理接口的封装和测试& ...

  7. C#开发微信门户及应用(23)-微信小店商品管理接口的封装和测试

    在上篇<C#开发微信门户及应用(22)-微信小店的开发和使用>里面介绍了一些微信小店的基础知识,以及对应的对象模型,本篇继续微信小店的主题,介绍其中API接口的封装和测试使用.微信小店的相 ...

  8. C#开发微信门户及应用(22)-微信小店的开发和使用

    在做企业电子商务方面,微信小店虽然较淘宝天猫等起步较晚,但是作为一个电商平台,这个影响力不容忽视,结合微信的特点和便利,微信小店具有很好的粘合性和广泛的用户基础,因此花费一定的时间,在这方面做深入的研 ...

  9. 1奶茶店创业成本: 2发饰品加盟店创业成本 3眼镜行业店创业成本 从“程序员转行卖烧饼”想到IT人创业

    总结: -------奶茶店创业成本: 而这个奶茶店初期投资是:3万元加盟费+1万元保证金+8000装修+两万设备(冰柜.展示柜.收银机等等).别说赚钱,什么时候把初期投资赚回来呀! 一个店的利润就是 ...

随机推荐

  1. Samara SAU ACM ICPC 2013-2014 Quarterfinal Qualification Contest

    A: 简单题,因为题目中说了不会有数据相同: #include<cstdio> #include<algorithm> #define maxn 200005 using na ...

  2. QQ 群也能接收告警啦!团队沟通力 Up Up!

    截止到昨天,你已经可以通过 OneAlert 的「排班」和「分派」功能,来对告警进行有序地分发,解决团队协作效率低的问题了.然而 OneAlert 觉得自己还可以更进一步,把团队沟通困难的问题也解决掉 ...

  3. Myeclipse中可以正常显示,但运行后的网页找不到图片

    目录为: 1 douban   1.1 css   1.2 image 2 pages   2.1 index.jsp 路径为:<img  src="../douya/image/lg ...

  4. 窗体前端显示(ShowWindowAsync有许多优点)

    H:=FindWindow('Tfrm_MainForm','aa');  if H>0 then  begin    ShowWindowAsync(h,SW_MAX);    SetFore ...

  5. Traffic Manager:Azure中国版 正式发布

     我们很高兴地宣布Azure Traffic Manager 现已面向中国版Azure正式发布.此版本现已投入生产,由企业 SLA支持,随时可用于生产场景中. 借助Azure Traffic Ma ...

  6. java桌面项目打包_by icewee_写得太棒了,直接转载了

    前言: 我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 准备: ecl ...

  7. Android TextView setText内嵌html标签

    由于得到的数据是保存在数据库里面的,不好对数据的某一部分进行操作.解决办法在数据库里面存数据的时候加上html的标签对, 如data = <中华人名共和国道路交通安全实施条例>第<u ...

  8. 配置Myeclipse中的项目部署到服务器,报the selected server is enabled, but is not configured properly.

    the selected server is enabled, but is not configured properly. deployment to it will not be permitt ...

  9. IE浏览器兼容性的痛苦

    做了一个弹出框的demo,在狐火,chrome,IE11中运行得好好的. 但是在IE8中死活不显示对话框,感觉IE8根本没有执行下面的javascript代码. 甚至,我简单的写alert(123), ...

  10. Hibernate的Session会话中get()和load()方法的区别

    1.get和load都可以从数据库中获取数据 .get拿到的是真的对象,load拿到的是代理对象 2.get和load从数据库中获取数据,如果获取不到,get返回null,load会出现ObjectN ...