AtCoder Beginner Contest 285(A~E)

2023-05-16

A - Edge Checker 2

在满二叉树中,判断两个两个点是否是父子关系

void solve()
{
    int a,b;
    cin>>a>>b;
    if(b==2*a || b==2*a+1) puts("Yes");
    else puts("No");
}

B - Longest Uncommon Prefix

模拟,当s[i] == s[i+k]时或者i+k>=字符串长度时,得到答案

void solve()
{
    int n;
    cin>>n;
    string s;
    cin>>s;
    int len = s.length();
    for(int i=1;i<=n-1;i++){
        for(int j=0;j<len;j++){
            if(j+i<n){
                if(s[j]==s[j+i]){
                    cout<<j<<endl;
                    break;
                }
            }
            if(j+i>=n){
                cout<<j<<endl;
                break;
            }
        }
    }
}

C - abc285_brutmhyhiizp

相当于26进制转换,从高位开始计算

void solve()
{
    string s;
    cin>>s;
    int order = 0;
    int len = s.length();
    for(int i=0;i<len;i++){
        order += (LL)pow(26,len-i-1)*(s[i]-'A'+1);
    }
    cout<<order<<endl;
}

D - Change Usernames

根据给出的点建立有向图,有向图里没有环时符合题目条件,用dfs搜索一遍有向图即可判断出是否有负环。  

题目给出的顶点是字符串,需要开一个map来将字符串映射到某个整型的值,再进行建图。

const int N = 200000+10;
int n;
string s[N],t[N];
map<string,int>mp;
vector<int>G[N];
int vis[N];
bool ans;
 
void dfs(int u)
{
    if(vis[u]) return ;
    vis[u] = 1;
    int size = G[u].size();
    for(int i=0;i<size;i++){
        int temp = G[u][i];
        if(vis[temp]==1) ans = true;
        else if(vis[temp]!=2) dfs(temp);
    } 
    vis[u] = 2;
}
void solve()
{
    cin>>n;
    for(int i=1;i<=n;i++) cin>>s[i]>>t[i];
    int cnt = 0;
    for(int i=1;i<=n;i++){
        if(!mp[s[i]]) mp[s[i]] = ++cnt;
        if(!mp[t[i]]) mp[t[i]] = ++cnt;
    }
    for(int i=1;i<=n;i++) G[mp[s[i]]].push_back(mp[t[i]]);
    for(int i=1;i<=n;i++) dfs(mp[s[i]]);
    if(ans) puts("No");
    else puts("Yes");
}

E - Work or Rest

假设两个假期之间间隔d天,

当d=0,时,区间生产力之和是0;  

d=1时为a[1]  

d=2时为2*a[1]  

d=3时为2*a[1]+a[2]

以此类推

推出假期间隔之间的生产力之和为a[(i+1)/2](i从1到d)之和  

f[i][j]为确定了i天,且已经连续工作了j天,集合性质为生产力之和的最大值

朴素状态转移方程:  

f[i+1][j+1] = max(f[i+1][j+1],f[i][j])  

f[i+1][0] = max(f[i+1][0],f[i][j]+g[j])

优化成一维后状态转移方程:

f[i]=max(f[i],f[j]+g[i-j-1])

const int N = 5000+10;
int n;
ll a[N];
ll g[N];//前缀和数组
ll f[N];

void solve()
{
    cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	g[0]=0; 
    for(int i=1;i<=n;i++) g[i]=g[i-1]+a[(i+1)/2];
	f[0]=0;
    for(int i=1;i<=n;i++){
        for(int j=0;j<=n-1;j++){
            f[i]=max(f[i],f[j]+g[i-j-1]);
        }
    }
	cout<<f[n];
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AtCoder Beginner Contest 285(A~E) 的相关文章

随机推荐

  • vim学习资源

    http www vimer cn http coolshell cn http vimcdoc sourceforge net doc quickfix html 就这两个资源用好了 xff0c 就足够了
  • asp.net 获取客户端IP地址

    private string GetClientIP string result 61 HttpContext Current Request ServerVariables 34 HTTP X FORWARDED FOR 34 if nu
  • log4net 使用示例 asp.net + winform

    log4net 是 apache org 在 log4j的基础上推出的针对 NET程序的开源的日志组件 log4net目前的最新版本是 1 2 10 xff0c log4net支持的日志保存方式 xff0c 可谓丰富之极 xff0c 包括
  • Log4net 配置写不同文件

    以下配置了二种写文件 xff0c 第一种根据日期写文件yyyyMMdd txt xff0c 第二种是写固定文件login txt 1 xff0c 下载Log4net组件 xff1a http logging apache org log4n
  • Log4Net使用详解(续)

    说明自从上次在2008年在博客上发表过有关log4net的用法介绍文章之后 xff08 网址 xff1a http blog csdn net zhoufoxcn archive 2008 03 26 2220533 aspx xff09
  • httpWebRequest 通过代理 连接网络

    via Proxy connect the website WebProxy myProxy 61 new WebProxy myProxy Address 61 new Uri 34 http XXXXXXX com 9000 34 my
  • 使用windbg排查一个内存溢出的问题

    发现有一个服务占用大量的内存 奇怪的是服务一开始的时候只占用100M左右内存 xff0c 随着时间推移越来越大 xff0c 最后导致服务器内存吃紧 这可以算是一种内存泄漏的问题 xff0c 之所以标题不说是内存泄漏 xff0c 最后就会知道
  • 用WinDbg排除“内存溢出”故障

    文章摘要 内存溢出有时像 魔鬼 一样缠绕着我们的程序 xff0c 用一般的方法不易驱除 主要难点是搜查 魔鬼 的藏身之处 这时 xff0c 我们可以请来 WinDbg xff08 Debugging Tools for Windows xf
  • windbg 的常用命令--强大!常用!

    如何手工抓取dump文件 在生产环境下进行故障诊断时 xff0c 为了不终止正在运行的服务或应用程序 xff0c 有两种方式可以对正在运行的服务或应用程序的进程进行分析和调试 首先一种比较直观简洁的方式就是用WinDbg等调试器直接atta
  • 用Windbg调试.NET程序的资源泄漏

    在产品环境中的一个Windows服务出现了异常情况 这是一个基于WCF的 NET程序 xff0c 它向网络应用 xff08 Web Application xff09 提供WCF服务 xff0c 同时也调用其他WCF服务以完成任务 突然 x
  • 堆与栈的区别【收藏】

    网上看到的两篇关于 堆与栈 的介绍 xff0c 讲的比较清楚 1 堆和栈的区别 原地址 xff1a http blog csdn net goingup archive 2006 03 07 618309 aspx 在bbs上 xff0c
  • vimdiff 使用笔记

    vimdiff 是建立在 diff 命令之上的 启动方法 xff1a vimdiff file left file right 或者 vim d file left file right 只在某一文件中存在的行的背景色被设置为蓝色 xff0
  • 负数的二进制表示方法 原码、反码、补码

    6 5 原码 反码 补码 结束了各种进制的转换 xff0c 我们来谈谈另一个话题 xff1a 原码 反码 补码 我们已经知道计算机中 xff0c 所有数据最终都是使用二进制数表达 我们也已经学会如何将一个10进制数如何转换为二进制数 不过
  • 二、十六进制数互相转换

    6 1 为什么需要八进制和十六进制 编程中 xff0c 我们常用的还是10进制 必竟C C 43 43 是高级语言 比如 xff1a int a 61 100 b 61 99 不过 xff0c 由于数据在计算机中的表示 xff0c 最终以二
  • 移位运算符 位逻辑运算符

    移位运算符 移位运算符就是在二进制的基础上对数字进行平移 按照平移的方向和填充数字的规则分为三种 xff1a lt lt xff08 左移 xff09 gt gt xff08 带符号右移 xff09 和 gt gt gt xff08 无符号
  • 数据类型对应字节数(32位,64位 int 占字节数)

    一 程序运行平台 不同的平台上对不同数据类型分配的字节数是不同的 个人对平台的理解是CPU 43 OS 43 Compiler xff0c 是因为 xff1a 1 64位机器也可以装32位系统 xff08 x64装XP xff09 xff1
  • 【JAVA】03版本excle导出数据

    03版本excle导出list lt Object gt 数据 前端页面请求 使用流返回 public static String exportExcel HttpServletRequest request HttpServletResp
  • C++码农要读的经典

    刚大四 xff0c 还在忙着找工作 xff0c 读过的书不是很多 xff0c 还有一些好书在读 xff0c 还有一些书将来必读 C语言程序设计 谭浩强版本 这个版本一致被人说误导子弟 xff0c 当然还有很多人推崇 我觉得这本书不是什么好书
  • 进阶训练赛(四)题解

    A 交换a b的值 直接输出b a void solve int a b cin gt gt a gt gt b cout lt lt b lt lt 34 34 lt lt a B 素数回文数的个数 从11 n遍历一遍找出满足即是回文数又
  • AtCoder Beginner Contest 285(A~E)

    A Edge Checker 2 在满二叉树中 xff0c 判断两个两个点是否是父子关系 void solve int a b cin gt gt a gt gt b if b 61 61 2 a b 61 61 2 a 43 1 puts