首页 > 其他分享 >Acwing.第130场周赛

Acwing.第130场周赛

时间:2023-11-19 15:11:06浏览次数:43  
标签:周赛 5000 idx int void add 130 include Acwing

Acwing.第130场周赛

比赛链接

A.最大数和最小数

题目链接

思路:

简单模拟,使用max()和min()函数就可以了

代码:

#include<bits/stdc++.h>
using namespace std;
void solve(){
	int a,b,c;
	cin>>a>>b>>c;
	
	cout<<max(a,max(b,c))<<" "<<min(a,min(b,c))<<endl;
	return ;

}
int main(){
	int t=1;
	while(t--){
		solve();
	}
	return 0;

}

B.三元组

题目链接

思路:

如果单纯的模拟肯定会超时5000 * 5000 * 5000这样的时间复杂度一定是会超时的,所以我们再读一遍题意,这时我们就会发现只需要枚举一下y的位置,然后以y的位置为基准,左边枚举x,右边枚举z,这样的时间复杂度就是5000 * 5000了,这样就不会超时了。为了方便,我们还需要再做一个前缀和

代码:

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;
typedef long long LL;
const  int N = 5010;

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

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


int main()
{
    scanf("%d", &n);
    for(int i = 1; i <= n; i ++)
        scanf("%d", a+i), s[i] = s[i-1] + a[i];

    int x = 1, y = 1, z = 1;
    LL maxSum = -0x3f3f3f3ff3f3f3f;

    for(int yy = 1; yy <= n+1; yy ++)
    {
        LL res1 = -0x1f3f3f3ff3f3f3f, res2 = -0x1f3f3f3ff3f3f3f;
        int tx = 1, tz = 1;
        for(int xx = 1; xx <= yy; xx ++)
        {
            LL tt = getSum(1, xx) - getSum(xx, yy);
            if(res1 < tt)
            {
                res1 = tt;
                tx = xx;
            }
        }

        for(int zz = yy; zz <= n+1; zz ++)
        {
            LL tt = getSum(yy, zz) - getSum(zz, n+1);
            if(res2 < tt)
            {
                res2 = tt;
                tz = zz;
            }
        }

        if(maxSum < res1 + res2)
        {
            maxSum = res1 + res2;
            x = tx, y = yy, z = tz;
        }
    }

    printf("%d %d %d\n", x-1, y-1, z-1);
    //cout << maxSum << endl;

    return 0;
}

C.边的定向

题目链接

思路:

利用搜索,如何能遍历到很多点呢,一定是dfs时候无向边是可以使得u到v的
如何能遍历到最少的点呢,一定是dfs时候无向边是过不去的,也就是说是没有办法使得u到v的

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=300010,M=N*2;
typedef long long ll;
typedef pair<int,int> PII;

int n,m,s;
int h[N],e[M],w[M],ne[M],idx;
std::vector<PII> edge;
bool st[N];
bool st1[N],st2[N];
set<PII> s1,s2;
void add(int a,int b,int c){
    e[idx]=b;
    w[idx]=c;
    ne[idx]=h[a];
    h[a]=idx++;

}
void dfs1(int x){
    st1[x]=true;
    for(int i=h[x];i!=-1;i=ne[i]){
        int j=e[i];
        if(st1[j]){
            continue;
        }
        if(w[i]==2){
            s1.insert({x,j});
        }
        dfs1(j);
    }
}
void dfs2(int x){
    st2[x]=true;
    for(int i=h[x];i!=-1;i=ne[i]){
        int j=e[i];
        if(st2[j]){
            continue;
        }
        if(w[i]==1){
            dfs2(j);
        }
        else if(w[i]==2){
            s2.insert({x,j});
        }
    }
}
void solve(){
    cin>>n>>m>>s;
    memset(h,-1,sizeof h);
    for(int i=1;i<=m;i++){
        int f,a,b;
        cin>>f>>a>>b;
        if(f==1){
            add(a,b,1);

        }
        else{
            edge.push_back({a,b});
            add(a,b,2);
            add(b,a,3);
        }
    }
    dfs1(s);
    int cnt=0;
    string res="";
    for(int i=1;i<=n;i++){
        if(st1[i]){
            cnt++;

        }
    }
    for(auto e:edge){
        if(s1.count({e.first,e.second})){
            res+="+";
        }
        else{
            res+="-";
        }
    }
    cout<<cnt<<endl;
    cout<<res<<endl;
    dfs2(s);
    cnt=0;
    res="";
    for(int i=1;i<=n;i++){
        if(st2[i]){
            cnt++;

        }
    }
    for(auto e:edge){
        if(s2.count({e.first,e.second})){
            res+="-";
        }
        else{
            res+="+";
        }
    }
    cout<<cnt<<endl;
    cout<<res<<endl;
    return ;
    
}
int main(){
    int t;
    t=1;
    
    // cin>>t;
    while(t--){
        solve();
    }
    return 0;
}

标签:周赛,5000,idx,int,void,add,130,include,Acwing
From: https://www.cnblogs.com/du463/p/17842063.html

相关文章

  • 14_DS1302实时时钟
    DS1302实时时钟介绍引脚定义和应用电路内部结构框图寄存器定义时序定义BCD码LCD1602显示年月日时分秒星期信息DS1302.c#include<REGX52.H>#include"DS1302.h"sbitDS1302_SCLK=P3^6;sbitDS1302_IO=P3^4;sbitDS1302_CE=P3^5;#defineDS1302_SECOND0x80......
  • 2023-2024-1 20231307《计算机基础与程序设计》第8周学习总结
    作业信息作业属于的课程<班级链接>(2022-2023-1-计算机基础与程序设计)作业要求<作业要求>(2022-2023-1计算机基础与程序设计第一周作业)作业目标《计算机科学概论》第9章和《C语言程序设计》第7章作业正文https://www.cnblogs.com/lzt-/p/17841598.html教材学......
  • 51时钟实验——DS1302芯片
    关于DS1302芯片:1、引脚说明: Vcc1:主电源;Vcc2:备份电源。当Vcc2>Vcc1+0.2VVcc2>Vcc1+0.2VVcc2>Vcc1+0.2VVcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2<Vcc1时,由Vcc1向DS1302供电。SCLK:串行时钟,输入,控制数据的输入与输出;I/O:三线接口时的双向数据线;CE:输入信号,在读、写数据期......
  • AcWing 1017. 怪盗基德的滑翔翼——最长上升子序列
    最长上升子序列1、\(O(n^{2})\)简单DP做法\[dp[i]=\max_{h[j]<h[i]}[dp[j]+1]\]#include<bits/stdc++.h>usingnamespacestd;constintN=105;inth[N];intdp[N];intmain(){intT;cin>>T;while(T--){intn;cin>......
  • acwing276机器任务的证明
    假设我们已经给每一个任务分配了一种模式了那么相同模式的任务排在一起的时候肯定重启次数最小对涉及到的模式,我们还原回二分图上就是在二分图上尽量选择少的节点(一种模式代表一次重启次数,因为相同模式都是放在一起的),使每一个任务都可以被安排就可以转换为最小点覆盖问题......
  • 花 200 元测试 1300 个实时数据同步任务
    背景对于将数据作为重要生产资料的公司来说,超大规模的数据迁移同步系统(1k、5k、10k条同步任务)是刚需。本文以此为出发点,介绍近期CloudCanal所做的一个容量测试:在单个CloudCanal集群上创建1300实时任务,验证系统是否健康。这个健康度主要包括同步任务是否运行正常、页......
  • acwing374导弹防御塔分析
    二分是怎么想到的?我们假设已经找到了最终的方案,那么每一座防御塔都被分到了一些敌人去攻击那么这个方案的时间是多少呢?就是每个防御塔的时间的最大值每个防御塔的时间是他所分配的这些敌人里面所需要花费最长的时间去攻击的敌人的时间相当于最大值最小,所以想到二分acwing上的......
  • esp32笔记[10]-rust驱动ssd1306显示屏
    摘要使用rust(no-std)环境和esp-hal库实现SSD1306显示屏(128x64)显示bmp图片.平台信息esp32(模组:ESP32-WROOM-32D)(xtensalx6)(xtensa-esp32-none-elf)rust超链接esp32笔记[7]-使用rust+zig开发入门原理简介rust的include_bytes!宏Rust的include_bytes!宏可以用......
  • 学习笔记10——20211303
    一、学习任务自学教材第12章,提交学习笔记(10分),评分标准如下1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”核心是要求GPT:......
  • day130-springboot的各种配置与应用
    编写springboot应用看官方文档DevelopingwithSpringBoot查看场景依赖,引入对应自动配置的场景,编写配置文件中debug=true开启自动配置报告。Negative(不生效)Positive(生效)Lombok的应用Lombok用标签方式代替构造器、getter/setter、toString()等鸡肋代码。引入依赖......