首页 > 其他分享 >acwing 第 130 场周赛  (前缀和,dfs,对不同边的处理)

acwing 第 130 场周赛  (前缀和,dfs,对不同边的处理)

时间:2023-11-22 19:45:36浏览次数:44  
标签:周赛 int printf dfs else 130 ans include

 

 

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<climits>

using namespace std;

typedef long long LL;

const int N = 5010;

int n;
int a[N];
LL s[N];

LL get(int l, int r) {
    return s[r - 1] - s[l - 1];
}

int main() {
    cin.tie(0);
    cin >> n;
    for(int i = 1; i <= n; i ++ ) cin >> a[i];
    for(int i = 1; i <= n; i ++ ) s[i] = s[i - 1] + a[i];
    
    LL mx = LONG_LONG_MIN;
    int x = 1, y = 1, z = 1;
    
    for(int yy = 1; yy <= n + 1; yy ++ ) {
        int tx = 1, tz = yy;
        LL res1 = LONG_LONG_MIN, res2 = LONG_LONG_MIN;
        
        for(int xx = 1; xx <= yy; xx ++ ) {
            auto tt = get(1, xx) - get(xx, yy);
            if(res1 < tt) {
                res1 = tt;
                tx = xx;
            }
        }
        
        for(int zz = yy; zz <= n + 1; zz ++ ) {
            auto tt = get(yy, zz) - get(zz, n + 1);
            if(res2 < tt) {
                res2 = tt;
                tz = zz;
            }
        }
        
        if(mx < res1 + res2) {
            mx = res1 + res2;
            x = tx, y = yy, z = tz;
        }
    }
    
    cout << x - 1 << ' ' << y - 1 << ' ' << z - 1 << endl;
    
    return 0;
}

 

 

 

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<climits>
#include<cmath>

using namespace std;

const int N = 3e5 + 10, M = N * 2;

int n, m, s;
int h[N], e[M], ne[M], w[M], idx;
bool st[N];
int ans[N];

void add(int a, int b, int c) {
    e[idx] = b, ne[idx] = h[a], w[idx] = c, h[a] = idx ++ ;
}

int dfs(int u, int type) {
    int res = 1;
    st[u] = true;
    for(int i = h[u]; ~i; i = ne[i]) {
        int j = e[i];
        if(st[j]) continue;
        
        if(type == 0) {
            res += dfs(j, type);
            if(w[i]) ans[abs(w[i])] = w[i];
        } else {
            if(w[i]) ans[abs(w[i])] = -w[i];
            else res += dfs(j, type);
        }
    }
    
    return res;
}

int main() {
    cin.tie(0);
    memset(h, -1, sizeof h);
    
    cin >> n >> m >> s;
    
    for(int i = 1; i <= m; i ++ ) {
        int t, a, b;
        cin >> t >> a >> b;
        if(t == 1) add(a, b, 0);
        else add(a, b, i), add(b, a, -i), ans[i] = i;
    }
    
    printf("%d\n", dfs(s, 0));
    for(int i = 1; i <= m; i ++ ) 
        if(ans[i] > 0) printf("+");
        else if(ans[i] < 0) printf("-");
    puts("");
    
    memset(st, 0, sizeof st);
    printf("%d\n", dfs(s, 1));
    for(int i = 1; i <= m; i ++ )
        if(ans[i] > 0) printf("+");
        else if(ans[i] < 0) printf("-");
    
    puts("");
     
    
    return 0;
}

 

标签:周赛,int,printf,dfs,else,130,ans,include
From: https://www.cnblogs.com/zk6696/p/17850136.html

相关文章

  • loj144&145 dfs序+树状数组/线段树
    https://loj.ac/p/144https://loj.ac/p/145两题非常相似,一题的权值修改是在点上的,一题的权值修改是在整棵子树上的。首先我们要了解dfs序,并记录每个节点的子树大小sz,对于一个节点,在dfs序上sz长的区间全都是他的子节点以及他自己。所以我们将一棵树映射到了一个区间上,并且可......
  • 牛客周赛
    牛客周赛Round201.小红的数位删除(二进制枚举)输入1:37111输出1:0说明:111是37的倍数,所以小红不需要任何操作。输入2:123499输出2:2说明:第一个数删除数字'1',变成234。第二个数删除数字'9',变成9。234是9的倍数。二进制枚举#include<bits/stdc++.h>#de......
  • T401305 平面划分(easy) 题解
    LinkT401305平面划分(easy)Solution平面上\(n\)条直线所划分处的区域最大个数\(L_n\)是多少我们考虑假设已经有\(n-1\)条直线,我们需要画一条直线,这条直线最多和\(n-1\)条直线相交产生\(n\)个新的区域所以我们得到了\[\begin{align*} &L_0=1\\ &L_n=L_{n-1}......
  • HDFS与MAPREDUCE操作
     HDFS文件操作在分布式文件系统上验证HDFS文件命令,如下。hadoopfs[genericOpitions][-ls<path>] //显示目标路径当前目录下的所有文件[-lsr<path>] //递归显示目标路径下的所有目录及文件(深度优先)[-du<path>] //以字节为单位显示目录中所有文件的大小,或该文......
  • centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在
    前言FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线......
  • leetcode324场周赛
    一、使三个字符串相等给你三个字符串s1、s2和s3。你可以根据需要对这三个字符串执行以下操作任意次数。在每次操作中,你可以选择其中一个长度至少为2的字符串并删除其最右位置上的字符。如果存在某种方法能够使这三个字符串相等,请返回使它们相等所需的最小操作次数......
  • 第 372 场周赛(位运算技巧,跳表 + 二分,线段树)
     classSolution:deffindMinimumOperations(self,s1:str,s2:str,s3:str)->int:cnt=0fora,b,cinzip(s1,s2,s3):ifnota==b==c:breakcnt+=1ifcnt==0:......
  • 2023-2024-1 20231305 《计算机基础与程序设计》第八周学习总结
    2023-2024-120231305《计算机基础与程序设计》第八周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2022-2023-1计算机基础与程序设计第一周作业)这个作业的目标<写上具体方面>......
  • DFS 序
      最近接触到一些DFS序的题,它可以用来解决一些关于子树的问题。  DFS序本质就是一棵树在深度优先搜索时访问节点的顺序。比如有下面一棵树,其DFS序就是$1\;2\;4\;7\;8\;5\;3\;6\;9$。  DFS序有一个很重要的性质,以节点$u$为根的子树中所有的节点......
  • 2023-2024-1 20231303 《计算机基础与程序设计》赵泊瑄第八周学习总结
    2023-2024-120231303《计算机基础与程序设计》赵泊瑄第八周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里作业要求的链接2023-2024-1计算机基础与程序设计第八周作业)这个作业的目标总结第八周学习收获作业正文......