AtCoder_abc331

(这次题真的真的真的好难)

比赛链接

A - Tomorrow

题目链接

题目大意

有一个\(M\)个月,\(D\)天的日历,请输出\(y年m月z日\)的下一天。

解题思路

先让天数加一,如果超过了\(D\)就让月份加一,天数减\(D\),然后月份同理

代码

// Problem: A - Tomorrow
// Contest: AtCoder - Daiwa Securities Co. Ltd. Programming Contest 2023(AtCoder Beginner Contest 331)
// URL: https://atcoder.jp/contests/abc331/tasks/abc331_a
// Memory Limit: 1024 MB
// Time Limit: 2000 ms #include<bits/stdc++.h>
using namespace std;
int M,D;
int y,m,d;
int main(){
cin>>M>>D;
cin>>y>>m>>d;
d++;
if(d>D)
m++,d-=D;
if(m>M)
y++,m-=M;
cout<<y<<" "<<m<<" "<<d;
return 0;
}

B - Buy One Carton of Milk

题目链接

题目大意

一个超市正在卖三种规格的鸡蛋

  • 一盒有6个,花\(S\)块钱
  • 一盒有8个,花\(M\)​块钱
  • 一盒有12个,花\(L\)块钱

请求出如果要买\(N\)个鸡蛋最少要花多少钱

解题思路

看到这题我知道三重循环\(O(n^3)\)暴力枚举在数据范围是\(1 \le N \le 100\)肯定是能过,但我不知道犯什么抽去写背包dp,好在最后是没写挂。

代码

// Problem: B - Buy One Carton of Milk
// Contest: AtCoder - Daiwa Securities Co. Ltd. Programming Contest 2023(AtCoder Beginner Contest 331)
// URL: https://atcoder.jp/contests/abc331/tasks/abc331_b
// Memory Limit: 1024 MB
// Time Limit: 2000 ms #include<bits/stdc++.h>
using namespace std;
int dp[100000];
int n,a[5],b[5]={0,6,8,12};
int main(){
cin>>n>>a[1]>>a[2]>>a[3];
memset(dp,0x3f,sizeof(dp));
dp[0]=0;
for(int i=1;i<=3;i++)
for(int j=b[i];j<=n+12;j++)
dp[j]=min(dp[j],dp[j-b[i]]+a[i]);
int minn=INT_MAX;
for(int i=n;i<=n+12;i++){
minn=min(minn,dp[i]);
}
cout<<minn;
return 0;
}

C - Sum of Numbers Greater Than Me

题目链接

题目大意

输入一个长度为\(N\)的序列\(A\),对于每一个\(a_i(1 \le i \le N)\),输出所有比\(a_i\)大的数的和

解题思路

这题一眼前缀和,需要注意的是题目中要求输出"所有比\(a_i\)大的数的和",所以输出前缀和的时候要注意把等于\(a_i\)的值排除在外

代码

// Problem: C - Sum of Numbers Greater Than Me
// Contest: AtCoder - Daiwa Securities Co. Ltd. Programming Contest 2023(AtCoder Beginner Contest 331)
// URL: https://atcoder.jp/contests/abc331/tasks/abc331_c
// Memory Limit: 1024 MB
// Time Limit: 2000 ms #include<bits/stdc++.h>
using namespace std;
int n;
long long mad;
long long a[200005];
long long sum[1000006];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
mad=max(mad,a[i]);
sum[a[i]]+=a[i];
}
for(int i=mad;i>=1;i--)
sum[i]+=sum[i+1];
for(int i=1;i<=n;i++)
cout<<sum[a[i]+1]<<" ";
return 0;
}

(以下为赛后补题)

(未完待续,困死了,明天再补,如果我忘了请看到这的人提醒我一声)

随机推荐

  1. PIP升级+安装Django命令[WARNING: Retrying (Retry(total=4, connect=None...]

    升级: >pip install -U Django 安装: >pip install Django 如果发现超时错误内容:(WARNING: Retrying (Retry(total= ...

  2. 【Ubuntu】Ubuntu 配置记录

    目录 系统文件夹改回英文 Ubuntu 镜像 pypi 镜像 临时使用 设为默认 Doxygen + Graphviz 分析代码并画图 Graphviz 安装 Doxygen 安装 配置 运行 系统文 ...

  3. 高德Android高性能高稳定性代码覆盖率技术实践

    ​前言 代码覆盖率(Code coverage)是软件测试中的一种度量方式,用于反映代码被测试的比例和程度. 在软件迭代过程中,除了应该关注测试过程中的代码覆盖率,用户使用过程中的代码覆盖率也是一个非 ...

  4. IDEFICS 简介: 最先进视觉语言模型的开源复现

    引言 Code Llama 是为代码类任务而生的一组最先进的.开放的 Llama 2 模型,我们很高兴能将其集成入 Hugging Face 生态系统!Code Llama 使用与 Llama 2 相 ...

  5. NAT模式LVS负载均衡集群

    NAT模式LVS负载均衡集群 负载调度器:内网 网关 ens33:192.168.1.200,外网 网关 ens36:12.0.0.10 Web节点服务器1:192.168.1.100 Web节点服务 ...

  6. CVE-2018-8120 漏洞复现

    CVE-2018-8120 漏洞复现 漏洞描述 win32k.sys中函数 SetImeInfoEx未对指针进行合法性检查,从而导致一个任意地址写. 漏洞分析 漏洞成因 int __stdcall S ...

  7. C++ STL 容器简单讲解

    STL 简单讲解 网上有很多很好的资料可以参考 而直接看标准是最准确清晰的 vector stack queue / priority_queue deque array map / multimap ...

  8. md5sum 文件一致性校验

    1. 背景 在网络传输.设备之间转存.复制大文件等时,可能会出现传输前后数据不一致的情况.这种情况在网络这种相对更不稳定的环境中,容易出现.那么校验文件的完整性,也是势在必行的. md5sum命令用于 ...

  9. poe不能用了poe.com收费了

    Anthropic's fastest model, with strength in creative tasks. Features a context window of 9k tokens ( ...

  10. 调节LED的亮度

    虽然Devices Plus已经介绍过Arduino的多种应用和作品示例,但是了解相关基础知识对于任何项目的构建仍然是非常重要的!这次,我们将为您介绍Arduino电子制作的基础知识.此次的分享嘉宾是 ...