AtCoder_abc331
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;
}
(以下为赛后补题)
(未完待续,困死了,明天再补,如果我忘了请看到这的人提醒我一声)
随机推荐
- python实现创建一个银行类,这个类实现了两个方法,第一个方法可以将用户信息写入到文件中,第二个方法可以读取文件中的用户信息出来
class bank: def user_info(self): a=input('请输入用户信息:') # 不写encoding = 'utf-8'中文会乱码 with open('info.txt ...
- 定义一个类,在实例化的时候,抛出NameError异常
代码1:class cla: def __init__(self): #raise NameError # 抛出异常 print(r) cla() 运行截图:
- 第一个程序PingPong
功能需求 如图所示,开启两个ping类型的服务ping1和ping2,ping1给ping2发消息,ping2收到回应ping1,ping1收到再回应ping2,不断循环. 服务模块 Skynet提供 ...
- LDAP:如何在windows系统下安装LDAP及连接测试
1.LDAP介绍 LDAP是一个基于X.500标准的轻量目录访问协议,与X.500不同,LDAP协议支持TCP/IP连接.全称为Lightweight Directory Access Protoco ...
- Vue【原创】日历组件Calendar
最近项目中封装了一个日历组件,用于节假日管理,支持输入默认选中的日期,选择管理日期. 效果图: calendar组件: 1 <template> 2 <div class=" ...
- 快手根据关键词取商品列表 API 返回值说明
item_search-根据关键词取商品列表 注册开通 ks.item_search 公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) secr ...
- 从零开始:Spring Security Oauth2 讲解及实战
OAuth2.0的四种授权模式: https://blog.csdn.net/weixin_30849403/article/details/101958273 1.授权服务配置: 配置一个授权服务, ...
- IPv6的基本认识
IPv6 1.IPv6的基本认识 IPv4 位数是 32位,4字节,能够提供的IP地址大约是42亿,但你知道的,如今一个人都不止一个IP地址,看看如今设备的数量及发展速度就知道,所以有了IPv6,IP ...
- Jenkins 命令执行 -- jetty 敏感信息泄露 --(CVE-2021-2816)&&(CVE-2017-1000353)&&(CVE-2018-1000861)
Jenkins 命令执行 -- jetty 敏感信息泄露 --(CVE-2021-2816)&&(CVE-2017-1000353)&&(CVE-2018-100086 ...
- Codechef - Maximize Colours(IQ)
题目大意 有红绿蓝三种颜色,三种颜色当中任意两个颜色混合都可以产生出一个新的颜色(然而混合产生的颜色不能与任何其它的颜色进行混合).输入三个整数,分别代表红色,绿色,蓝色的颜色个数(每次混合各消耗 ...