Day2 0706

DAY2 B组


T1

Description

已给定一个 N 个点 M条边的有向图,点编号为 1到N,第i 条边为(ui,vi) ,

权值为wi。你可以进行一次操作,使得任意一条边的权值变成任意非负整数。要

求进行尽量少的操作次数,使得点 1到点N 的最短路径长度变成c。 

题目保证,c小于在未进行任何操作之前的原图中 1到N 的最短路长度。

Input

输入文件tweak.in 第一行三个整数,N,M和c 

接下来M行,每行一条边的信息 ui,vi和wi,第i 行的表述第i 条边的信息。

保证不会有自环存在,对于不同的 i 和j, (ui,vi)不同于(uj,vj) 。

Output

输出文件 tweak.out 一行一个整数,要进行最少多少次操作才能使得最短路

长度变为c。

Sample Input

3 3 3
1 2 3
2 3 3
1 3 8

Sample Output

1

Data Constraint

Hint

将边 1,3的权值修改为 2就可以了。


N≤100 

M≤1000 

0≤c≤100000


0≤wi≤10000 

 

30%数据满足M≤20 

50%的数据满足 M≤70

 一看到题我想到的是求最短路,然后记录路径从大到小排序,从最大的开始删,用计数器记录次数,然而很快就被旁桌推翻了。(旁桌说这可能是dp,我说T1就dp不可能,后文打脸

想法如下:

如图,若求最短路结果是从1—〉2,2—〉3,长度为6,若要将最短路改为1,答案是2,但可以直接从1—〉3,答案为1。

 最后还是硬着头皮交,就过了一个点。

dalao说是dp(真香)。然而也没听懂。等懂了回来补代码。

看一下今天高分(lh)的题解(我是真的写不出来)

第一遍看完有点感觉了,但是不会实现。


T2

Description


已知无向连通图GN个点,N-1条边组成。每个点有给定权值。现有M个操作,操作分为2种:操作1,将某点权值更改;操作2,询问从点A至点B路径上所有点的权值和。

Input


每个输入文件中仅包含一个测试数据。


第一行包含两个整数N,M


第二行至第N行每行包含2个整数,AB,表示节点A与节点B有一条边相连。


N+1行包含N个整数,表示第N个点的初始权值。


N+2行至第N+M+1行每行包含三个整数,KAB(若K=1,表示将点A权值改为B;若K=2表示询问点A至点B路径上所有点的权值和)




Output


输出文件若干行,分别对应每次操作2的答案。

Sample Input

3 2
1 2 
1 3 
1 2 3
2 1 3
2 2 3

Sample Output

4
6

Data Constraint

Hint


对于60%的数据,1<=N,M<=1000


对于100%的数据,2<=N<=30000;0<=M<=200000

(0706)

因为有更改权值和问讯,第一个想到的是树状数组。然而想了想感觉不会这么难(其实不会打)就放弃了。打了一个简单的搜索,人生第一次加上了记忆化和小剪枝,过了样例觉得50左右,然而出来以后只有9.1。

仍然是dalao讲题(hin迷)讲到重儿子,重边,马上baidu

仍然不会,等研究出来补码。

(0707老师又讲了一遍才清楚,早上来写题解qwq)

注意这道题存图时要用邻接链表,(若用邻接矩阵空间太大,并且记录dfs序的时候也会方便很多)

int x,y;
for(int i=1;i<n;i++){
    cin>>x>>y;
    lb[x].push_back(y);
    lb[y].push_back(x);
}

 

询问

询问中要用到的知识点:前缀和,LCA(最近公共祖先)

设一个树上前缀和数组,表示节点到根的所有点的权值和。(如h[2]=1+2=3),先判断被询问的两个点是否直接是一条直链(如询问1—>2)。

若为直链,输出它们前缀和的差,若不为一条直链,找出它们的lca,根据容斥原理,求出它们的权值和。如图,4到5的权值和=sum[4]+sum[5]-2*sum[2]。

更改

更改中要用到的知识点:DFS序,树状数组

具体还不太明白...

 

 

 


T3

Description


已知无向连通图GN个点,N-1条边组成。每条边的边权给定。现要求通过删除一些边,将节点1与另M个指定节点分开,希望删除的边的权值和尽量小,求此最小代价。

Input

每个输入文件中仅包含一个测试数据。


第一行包含两个整数N,M


第二行至第N行每行包含3个整数,ABC,表示节点A与节点B有一条边相连,边权为C


N+1行至第N+M行每行包含一个整数X,表示要求与节点1分开的节点。

Output


输出文件仅包含一个整数,表示最小代价。

Sample Input

3 2
1 2 3
1 3 5
2
3

Sample Output

8

Data Constraint

Hint



对于20%的数据,2<=N<=10


对于100%的数据,2<=N<=10^6


T4

Description

       钟逆时针而绕,恶物狰狞的倾巢,我谦卑安静地于城堡下的晚祷,压抑远古流窜的蛮荒暗号,而管风琴键高傲的说,那只是在徒劳。我的乐器在环绕,时代无法淘汰我霸气的皇朝。 你无法预言,因为我越险,翅越艳;没有句点,跨时代蔓延,翼朝天。 月下浮雕,魔鬼的浅笑,狼迎风嚎,蝠翔似黑潮,用孤独去调尊严的色调。我跨越过世代,如兽般的姿态,琴声唤起沉睡的血脉。不需要被崇拜,如兽般的悲哀,只为永恒的乐曲存在,醒过来。 去年万众瞩目的《跨时代》专辑发行之后,周杰伦又开始了他的世界巡回演唱会《超时代》。有人说过:如果你喜欢一个人,那你一定要去看一场他的演唱会;电视机前的1m距离和在演唱会现场哪怕100m的距离,两种感觉都是截然不同的。
       所以小G作为铁杆歌迷,也计划带着小Y去看周杰伦的演唱会。 演唱会当然要圈出一个空地,然后才能布置道具。 演唱会的第一站,公司临时跟当地的消防局借了n个栏杆,打算用这n个栏杆围出一个矩形。而麻烦的是,这些栏杆有长有短,这就给围场地带来了一些难度。 所以公司聘请你来写一个程序,计算用这n个栏杆做多围出面积多大的矩形。
(注:必须要刚好围成一个矩形,即不能出现多余的边长,且不能切断栏杆,但所给栏杆不一定要全部用上)
 

Input

第一行一个正整数n,表示栏杆的数量。
第二行n个正整数,表示每根栏杆的长度li。

Output

 仅一行一个正整数,表示用给出的栏杆围成最大矩形的面积,如果不能围成矩形,输出”No Solution”(不包含引号)。
 

Sample Input

4
1 1 1 1

Sample Output

1
 

Data Constraint

 
 

Hint

 对于30%的数据,1<=n<=10。 对于100%的数据,1<=n<=16,1<=li<=15。
原文地址:https://www.cnblogs.com/duojiaming/p/11143180.html