首页 > 其他分享 >AtCoder_abc332

AtCoder_abc332

时间:2023-12-11 09:04:38浏览次数:39  
标签:AtCoder int abc332 Limit logo T恤

AtCoder_abc332

比赛链接

A - Online Shopping

A题链接

题目大意

这里有\(N\)件商品,第\(i\)件商品价格为\(P_i\),你要购买\(Q_i\)件,除了购买的费用外,他还要支付运费。

如果购买的总价大于\(S\),运费为0元,否则他需要支付\(K\)元的运费。

他一共要花多少钱呢?

解题思路

代码

// Problem: A - Online Shopping
// Contest: AtCoder - AtCoder Beginner Contest 332
// URL: https://atcoder.jp/contests/abc332/tasks/abc332_a
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include<bits/stdc++.h>
using namespace std;
int n,s,k,sum;
int main(){
	cin>>n>>s>>k;
	for(int i=1;i<=n;i++){
		int p,q;cin>>p>>q;
		sum+=p*q;
	}
	if(sum<s)
		sum+=k;
	cout<<sum;
	return 0;
}

B - Glass and Mug

B题链接

题目大意

高桥有一个容量为\(G\)的玻璃杯和一个容量为\(M\)的马克杯\((G<M)\)。

一开始两个杯子都是空的。

他将执行以下操作\(K\)次:

  • 当玻璃杯装满水时,将玻璃杯中的所有水倒掉。

  • 否则,如果马克杯是空的,就往马克杯里倒满水。

  • 否则,将马克杯里的水倒进玻璃杯中,直到马克杯变空或玻璃杯装满水。

请输出马克杯和玻璃杯最后还剩多少水。

解题思路

模拟就完了

代码

// Problem: B - Glass and Mug
// Contest: AtCoder - AtCoder Beginner Contest 332
// URL: https://atcoder.jp/contests/abc332/tasks/abc332_b
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include<bits/stdc++.h>
using namespace std;
int k,g,m;
int main(){
	cin>>k>>g>>m;
	int ng=0,nm=0;
	for(int i=1;i<=k;i++){
		if(ng==g)
			ng=0;
		else if(nm==0)
			nm=m;
		else{
			ng+=nm;
			nm=max(0,ng-g);
			ng-=nm;
		}
	}
	cout<<ng<<" "<<nm;
	return 0;
}

C - T-shirts

C题链接

题目大意

你将得到长度为\(N\)的字符串\(S\),由\(0\)、\(1\)和\(2\)组成,代表高桥\(N\)天的时间表。

对于整数\(i(1 \le i \le N)\):

  • 如果\(S\)的第\(i\)个字符是\(0\),则他没有为第\(i\)天安排的计划;

  • 如果\(S\)的第\(i\)个字符是\(1\),他计划在第\(i\)天出去吃饭;

  • 如果\(S\)的第\(i\)个字符是\(2\),则他计划在第\(i\)天参加比赛。

高桥有\(M\)件普通的T恤,在第一天之前就已经洗好了,可以穿了。

此外,为了能够满足以下条件,他将购买几件带有AtCoder logo 的T恤(以下简称logo衫):

  • 在他出去吃饭的日子里,他会穿一件普通T恤或logo衫。

  • 在他参加比赛的日子里,他会穿一件logo衫。

  • 在没有计划的日子里,他不会穿任何T恤。此外,他还将清洗当时穿的所有T恤衫。从第二天起,他可以再穿一次。

  • 一旦他穿上T恤,他就不能再穿了,除非他洗了。

确定他需要购买的logo衫的最低数量,以便能够在\(N\)天内的所有预定日期穿着合适的T恤衫。如果他不需要买新T恤,请打印0。

假设购买的logo衫也在第一天之前清洗好并准备好使用。

解题思路

这是一道模拟+贪心,我们可以根据给出的字符串按照如下策略安排T恤:

  • 如果\(S_i\)为\(0\),将记录穿过的普通T恤和logo衫的计数器都清零。

  • 如果\(S_i\)为1,判断是否还有能穿的普通T恤。

    • 如果有,就穿一件普通T恤。

    • 否则判断是否还有logo衫。

      • 如果有,就穿一件logo衫。

      • 否则就再购买一件logo衫,然后穿上。

  • 如果\(S_i\)为2,判断是否还有能穿的logo衫。

    • 如果有,就穿一件logo衫。
    • 否则就再购买一件logo衫,然后穿上。

最后只要输出购买的数量就OK啦。

代码

// Problem: C - T-shirts
// Contest: AtCoder - AtCoder Beginner Contest 332
// URL: https://atcoder.jp/contests/abc332/tasks/abc332_c
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include<bits/stdc++.h>
using namespace std;
int n,m;
string s;
int cntb,cntc,now;
//cntb:cnt buy表示穿过的logo衫的数量  cntc:cnt common表示穿过的普通T恤的数量  now:计划购买的数量 
int main(){
	cin>>n>>m>>s;
	s=" "+s;//将下标调整为1~N,个人习惯 
	for(int i=1;i<=n;i++){//如解题思路部分所述 
		if(s[i]=='0')
			cntc=0,cntb=0;
		else if(s[i]=='1'){
			if(cntc<m)
				cntc++;
			else if(cntb<now)
				cntb++;
			else
				now++,cntb++;
		}else{
			if(cntb<now)
				cntb++;
			else
				now++,cntb++;
		}
	}
	cout<<now;//输出 
	return 0;//华丽结束 
}

D - 做不出来

标签:AtCoder,int,abc332,Limit,logo,T恤
From: https://www.cnblogs.com/lmq742643/p/17893617.html

相关文章

  • 【题解】AtCoder abc332_g Not Too Many Balls
    传送门:https://atcoder.jp/contests/abc332/tasks/abc332_g看完题,第一眼反应为最大流。建模方式为:以颜色为左部点,盒子为右部点,源点$S$向颜色$i$连一条容量为$A_i$的边,盒子$j$向汇点$T$连一条容量为$B_j$的边,颜色$i$向盒子$j$连一条容量为$ij$的边;在这张图......
  • AtCoder Beginner Contest 332
    AtCoderBeginnerContest332A-OnlineShoppingintmain(){IOS;for(_=1;_;--_){cin>>n>>m>>k;llans=0;rep(i,1,n){lla,b;cin>>a>>b;ans+=a......
  • Atcoder abc301 复盘(更新中)
    跳转比赛链接A-OverallWinner简述:高桥和青木下了\(N\)盘棋。给你一个长度为\(N\)的字符串\(S\),表示这两盘棋的结果。如果\(S\)的\(i\)个字符是t,那么高桥赢得了\(i\)局;如果\(S\)的\(i\)个字符是A,那么青木赢得了这局。高桥和青木之间的胜负关系是谁赢的局......
  • AtCoder Beginner Contest 331 G - Collect Them All【概率期望+容斥+多项式】
    题目链接:ABC331_G写在前面将来如果回顾这道题,建议自己看完题意一定先重新推一遍。如果还是不够熟练,多去做一些同类型的题目吧。题意:盒子里有\(N\)张卡片,每张卡片上写着一个数字,数字的范围是\(1,...,M\),写着数字\(i\)的卡片有\(C_i\)张\((C_i>0)\)。有放回地抽取卡片,每......
  • Daiwa Securities Co. Ltd. Programming Contest 2023(AtCoder Beginner Contest 331)
    DaiwaSecuritiesCo.Ltd.ProgrammingContest2023(AtCoderBeginnerContest331)A-Tomorrow解题思路:模拟。代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;typedefpair<int,int>pii;#definefifirst#definesesecondcons......
  • AtCoder Beginner Contest 331
    A-Tomorrow(abc331A)题目大意给定一年的月数和一月的天数,以及当天日期,问次日的日期。解题思路一个简单的进制加法运算,超出进制数则向前加一。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;intmain(void){ios::sync_with_st......
  • AtCoder Beginner Contest 328
    AtCoderBeginnerContest328链接:ToyotaProgrammingContest2023#7(AtCoderBeginnerContest328)-AtCoderA题意:给定n个数,将小于等于x的数加起来输出。#include<bits/stdc++.h>#defineintlonglong#defineendl'\n';usingnamespacestd;voidsolve(){......
  • AtCoder Beginner Contest 331
    AtCoderBeginnerContest331这场状态好差,下午的校赛也打的好差。A-Tomorrow#include<bits/stdc++.h>#defineintlonglong#defineendl'\n'usingnamespacestd;voidsolve(){intM,D;inty,m,d;cin>>M>>D>>y>>m>&......
  • AtCoder Beginner Contest 331 G Collect Them All
    洛谷传送门AtCoder传送门设数字\(i\)第一次拿到的时间为\(t_i\),所求即为\(E(\max\limits_{i=1}^mt_i)\)。施min-max容斥,有:\[\begin{aligned}E(\max\limits_{i=1}^mt_i)&=\sum\limits_{T\subseteq[1,m]\landT\ne\varnothing}(-1)^{|T|-1}E(\min\l......
  • AtCoder Beginner Contest 331
    B-BuyOneCartonofMilk难度:⭐题目大意选择有三种套餐,6个鸡蛋S元,8个鸡蛋M元,12个鸡蛋L元;问如果要买至少N个鸡蛋,最少花费多少钱;解题思路一道入门级dp;神秘代码#include<bits/stdc++.h>#defineintlonglong#defineIOSios::sync_with_stdio(false......