首页 > 其他分享 >AtCoder_abc331

AtCoder_abc331

时间:2023-12-03 12:22:05浏览次数:31  
标签:AtCoder Contest int abc331 long Limit

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;
}

(以下为赛后补题)

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

标签:AtCoder,Contest,int,abc331,long,Limit
From: https://www.cnblogs.com/lmq742643/p/17872831.html

相关文章

  • ALGO ARTIS Programming Contest 2023 Autumn(AtCoder Regular Contest 168)
    Preface先补一下这场ARC的博客,因为在来回合肥的路上一直在想这场的CD,所以有空后就先把这场补了A-<Inversion>不难发现对于一段连续的<,设其长度为\(x\),则它最少要贡献\(\frac{x(x+1)}{2}\)的答案而我们很容易构造一种方案刚好满足这个下界,只要让每段的结束比下一段的开头大......
  • 像使用stl一样使用线段树 ——AtCoder Library(转载https://zhuanlan.zhihu.com/p/459
    地址:https://zhuanlan.zhihu.com/p/459579152 我这里翻译一下官方的文档。首先需要满足几个性质。(注意 ∗ 是个操作,不是单纯的一个乘号)1)操作满足结合律即 (a∗b)∗c=a∗(b∗c)2)操作需要有个幺元(基本元/单位元)a∗e=e∗a=a如果你有这个一个序列S,长度为N ,接下......
  • Atcoder-Countings4
    Atcoder-Countings4[ABC231G]BallsinBoxesProblem有\(n\)个盒子,初始时第\(i\)个盒子内有\(a_i\)个小球,进行\(k\)次操作后,每次操作等概率随机选择一个盒子放入一个小球,设\(k\)次操作后每个盒子的小球个数为\(b_i\),那么得分为\(\prod_{i=1}^nb_i\)。求出期望得分......
  • AtcoderDP1
    AtcoderDP1收录非计数dp题。[ABC227F]TreasureHunting(2323)Problem给你一个\(N\timesM\)的矩阵,你需要从坐标\((1,1)\)走到坐标\((N,M)\)去,每次只能向右或者向下走。坐标\((i,j)\)的价值是\(A_{i,j}\)。我们定义一条路径的价值是,这条路径经过的坐标的前\(K\)......
  • AtCoder Beginner Contest 330
    B-MinimizeAbs1思维题题意:给定一个范围,你选择一个数,使得思路:如果A[i]在l,r中间,那么直接打印就行,如果不是就打印就近的usingnamespacestd;voidsolve(){ intn,l,r; cin>>n>>l>>r; for(inti=1;i<=n;i++){ intx; cin>>x; if(x<l){ cout<<l<<"......
  • AtCoder Beginner Contest 326
    A-2UP3DOWN#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongvoidsolve(){inta,b;cin>>a>>b;if(a<bandb-a<=2)cout<<"Yes\n";elseif(a>banda......
  • AtCoder Beginner Contest 322
    A-FirstABC2#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#definempmake_pairusingvi=vector<int>;usingpii=pair<int,int>;voidsolve(){intn;strings;cin>>n>>s;......
  • AtCoder 329. E - Stamp (搜索 + 思维
    importjava.util.Scanner;classMain{staticintn,m;staticStrings,t;staticStringBuilderox;/***思路:*思路的大门:题目要要求把x变成s,我们可以反过来,把s变成只有#的x,所以我们就有了思路*1.从前......
  • TOYOTA SYSTEMS Programming Contest 2023(AtCoder Beginner Contest 330)
    TOYOTASYSTEMSProgrammingContest2023(AtCoderBeginnerContest330)A-CountingPassesintmain(){IOS;cin>>n>>m;intans=0;rep(i,1,n)cin>>k,ans+=k>=m;cout<<ans;return0;}B-......
  • AtCoder Beginner Contest 330
    A-CountingPasses(abc330A)题目大意给定\(n\)个学生的分数,以及及格分\(x\),问多少人及格了。解题思路依次判断即可。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;intmain(void){ios::sync_with_stdio(false);cin.ti......