嵊州普及Day3T4
利内罗女士准备来到意大利进行修行。
意大利由 n 个城市和 m 条道路构成,道路是双向的。
到达第 i 个城市时,她可以取得该城市的全部信仰,并获得 ai 点能力提升,但因为在一个城市可以
取得的信仰有限,多次到达同一个城市不会多次提升能力。
意大利对能力也有很严的要求,对于第 i 条道路,只有能力大于等于 bi 的人才能经过。
利内罗女士准备乘坐飞机去往意大利,飞机可以降落在任意城市(即可以在任意城市开始修行),她
想知道自己的能力最多可以成长为多少。
她提出了 Q 次询问,表示当自己初始能力为 qi 时,能力最多可以成长为多少。
Input
第一行三个整数 n, m, Q。接下来一行 n 个非负整数,a1 到 an。
接下来 m 行,每行三个正整数,ui, vi, bi,表示城市 ui 和城市 vi 之间有一条道路。
最后 Q 行,每行一个非负整数 qi。
Output
Q 行,每行一个整数表示答案。
Notes
对于所有数据,满足 n, Q ≤ 105, m ≤ 2 ∗ 105, ai ≤ 104, qi, bi ≤ 109
Task1[20%]
n ≤ 5 , m ≤ 10 , Q =1
Task2[30%]
n ≤ 50 , m ≤ 100 , Q ≤ 5
Task3[40%]
n ≤ 100 , m ≤ 200 , Q ≤5
Task4[50%]
n ≤ 300 , m ≤ 600 , Q ≤ 100
Task5[60%]
n ≤ 1000 , m ≤ 2000 , Q ≤ 10
Task6[100%]
无特殊限制
Subtask1[10pts]
n ≤ 1000 , m = n − 1 , Q ≤ 1000,图保证联通
Subtask2[10pts]
m = n − 1,图保证联通0
题意:对于一个有向图,求一条通过点值最大的路径,通过每条边需要一定大小要求。
思路:第一篇博客就已经声明过的:本人蒟蒻,奔着提高省3去的,所以显然,此题只能暴搜。
据出题人说,此题求连通块加个并查集维护即可,时间复杂度 O((n + m + q)log n)。我当然不会,看诸位大佬懂不懂。
见暴搜代码:
#include<bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f;
int a[],n,m,bi,q,ui[],vi[],b[][],ans,qi,sum=;
bool road[][],place[];
void dfs(int x)
{
if(place[x]==false)
{
ans=ans+a[x];
place[x]=true;
}
if(ans>sum)
sum=ans;
for(int i=;i<=n;i++)
{
if(i==x)
continue;
else if(road[x][i]==true&&ans>=b[x][i])
{
road[x][i]=false;
road[i][x]=false;
dfs(i);
}
}
ans=ans-a[x];
}
int main()
{
cin>>n>>m>>q;
for(int i=;i<=n;i++)
cin>>a[i];
for(int i=;i<=m;i++)
{
cin>>ui[i]>>vi[i]>>bi;
b[ui[i]][vi[i]]=bi;
b[vi[i]][ui[i]]=bi;
}
for( int i=;i<=q;i++)
{
cin>>qi;
ans=qi;
for(int j=;j<=n;j++)
{
memset(road,false,sizeof(road));
memset(place,false,sizeof(place));
for(int i1=;i1<=m;i1++)
{
road[ui[i1]][vi[i1]]=true;
road[vi[i1]][ui[i1]]=true;
} dfs(j);
}
cout<<sum<<endl;
}
fclose(stdin);
fclose(stdout);
return ;
}
好题哉!!!
嵊州普及Day3T4的更多相关文章
- 嵊州普及Day1T2
题意:走迷宫.求走到a[n][n]需要多久. 考场上想的dfs,听老师说最多50分.代码懒得码了,知道是走迷宫就好. 正解:bfs,时间复杂度O(n). 见代码: #include<iostre ...
- 嵊州普及Day6T3
题意:n个点,对于q个询问,有t秒及一个矩形的范围.在此矩形内的数每秒加1,若等于c,则下一秒变为0. 思路:t可能很大,%c+1就可以了.然后一个一个加起来就可以了. 见代码: #include&l ...
- 嵊州普及Day6T1
题意:有一个矩形,由正负整数构成.一个位子的魅力值为相邻的格子,若与邻格同号则减去绝对值,若异号则加上绝对值. 思路:一个格子一个格子计算即可,没什么好说的. 见代码: #include<ios ...
- 嵊州普及Day5T4
题意:两个1,每次可将一个*k,一个*K2,n个问题,问能否达成x,y? 思路:只有将x,y相乘为3次方时,才可能.并且相乘的三次方一定要是x,y的因子. 下面证明:3次方易证,因为对每个k,都会乘三 ...
- 嵊州普及Day5T2
题意:将(w,h)的纸条折成(W,H),最少需几步. 思路:横竖互不干扰,然后最多可折int型一半,拿个函数判断两次比较即可,然后折不了的条件是需要的矩形大于给的矩形. 见代码: #include&l ...
- 嵊州普及Day5T1
题意:有n个商店,自家商店的定价不可高于任何一家商店定价,求自家商店最高定价. 思路:拿个变量打擂台即可,不用解释太多. 见代码: #include<iostream> #include& ...
- 嵊州普及Day4T2
题意:有一个单行走廊,每回合第ai个展柜会冒出来一只鬼,右边尽头有一个人间大炮和向最左传送门(费用均1金币),你需要每回合将所有鬼交换展柜,全部至最右,问若从一到n所有回合结束是需多少金币可射死所有鬼 ...
- 嵊州普及Day4T1
题意:从n个数中选出k个数,使他们任意两数之差都等于m. 思路:任意差值都等于m,不就等价于k个数模m余数相同吗? 然后桶排储蓄一下各数余数即可. 见代码: #include<iostream& ...
- 嵊州普及Day4T4
题意:求最长上升序列长度和方案数. 思路:经典DP,不需什么别的东西,加一个数组储蓄程序数即可,原题300000可能N2会有问题,但问题不大. 见代码: #include<iostream> ...
随机推荐
- Card Game for Three
Alice, Bob and Charlie are playing Card Game for Three, as below: At first, each of the three player ...
- Spring学习(十)
需要的jar包 1.Spring核心必须依赖的库:commons-logging-1.1.1.jar2.Spring IoC部分核心库: spring-beans-4.3.9.RELEASE.jar ...
- RTU:EvalRightToUse License for feature adventerprise 1.0 will transition to RightToUse in 10 days. UDI ASR1002-X:JAE2100XXXX
关于这个log:[Hostname] EvalRightToUse License for feature adventerprise 1.0 will transition to RightToUs ...
- MAC系统 - 系统目录结构
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/smstong/article/detai ...
- zigbee学习基础
应用场合:功耗(休眠)以及自组网(动态路由,梯度法寻径)是其特点.距离短.功耗低且传输速率不高的各种电子设备之间进行有周期性数据.间歇性数据和低反应时间数据传输的应用(智能家居/仓储中转/伞兵落地协同 ...
- java窗口程序字符串时间转成时间戳
pom.xml 文件: ?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
- ng-class 动态设置css
可使用ng-class 动态设置class ,设置disable后,发现ng-click 居然还可以使用,不知什么原因. <li ng-class="{disabled:!first} ...
- UIScrollView的API
@property(nonatomic, weak) id<UIScrollViewDelegate> delegate; 滚动视图对象的委托. @property(nonatomic) ...
- python 连接oracle基础环境配置方法
配置基础: 1.python3.7 2.oracle server 11g 64位 3.PLSQL 64位 4.instantclient-basic-windows.x64-11.2.0.4.0这个 ...
- 吴裕雄--天生自然ORACLE数据库学习笔记:PL/SQL编程
set serveroutput on declare a ; b ; c number; begin c:=(a+b)/(a-b); dbms_output.put_line(c); excepti ...