• 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。
  • 相关阅读:
    GLSL预定义变量
    GLSL 内建函数
    GLSL语言基础
    svn:revert to this version 和 revert changes from this version的区别
    win7下搭建opengles2.0编程环境
    iconv字符编码转换
    矩阵-DirectX与OpenGL的不同
    NHibernate分页
    Web网站压力测试工具
    winform系统自动登录实现
  • 原文地址:https://www.cnblogs.com/duojiaming/p/11143180.html
Copyright © 2020-2023  润新知