AtCoder Beginner Contest 243(A-D)

2023-10-07 15:32
文章标签 atcoder beginner contest 243

本文主要是介绍AtCoder Beginner Contest 243(A-D),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

A - Shampoo

题意:

s升洗发水,a,b,c三人轮着用,告诉你每人每次固定要的体积,求最后谁用完了

思路:

简单模拟

#include <bits/stdc++.h>
using namespace std;int main()
{int v,a,b,c,f=0;cin>>v>>a>>b>>c;while(v>=0){if(f==0){v-=a;f++;}else if(f==1){v-=b;f++;}else{v-=c;f=0;}}if(f==0){cout<<"T"<<endl;}else if(f==1){cout<<"F"<<endl;}else{cout<<"M"<<endl;}return 0;
}

B - Hit and Blow

题意:

给你长度为n的两个数组a和b,要求输出a和b出现一样的元素但是下标不同的次数和元素一样且下表一样的元素

思路:

模拟即可,计算重复重新元素和下标相同出现的元素,然后前者减去后者得到下标不同元素相同的个数

#include <bits/stdc++.h>
using namespace std;const int maxn=1005;
int a[maxn], b[maxn];
int main()
{int n,i,j,cnt=0,cnt1=0;map<int ,int >d1;cin>>n;for(i=0;i<n;i++){cin>>a[i];d1[a[i]]++;}for(i=0;i<n;i++){cin>>b[i];if(d1[b[i]]!=0) cnt++;if(a[i]==b[i]) cnt1++;}cout<<cnt1<<endl<<cnt-cnt1<<endl;return 0;
}

C - Collision 2

题意:

给出n个点分别由x坐标和y坐标,告诉你点行走的方向是左还是右,求会不会出现点和点碰撞的可能

思路:

把y轴哈希存放一下,然后vecotr遍历每个y轴上的直线,然后把点排序,再用哈希存放一下每个点的方向是左还是右,再排个序,只要在出现了比他下标大的向左之前出现过比他下标小的向右就会发生碰撞了

 

#include <bits/stdc++.h>using namespace std;const int maxn=2e5+100;
int x[maxn], y[maxn];
map<int ,int >mo;
map<pair<int ,int > ,int >m1;
vector<int >edges[maxn];
int main()
{string s1;int n,i,j,t,cnt=1,flag=0;cin>>n;for(i=0;i<n;i++){cin>>x[i]>>y[i];if(mo[y[i]]==0){mo[y[i]]=cnt++;}edges[mo[y[i]]].push_back(x[i]);m1[{x[i],mo[y[i]]}]=i;}cin>>s1;for(i=1;i<cnt;i++){int f1=0;sort(edges[i].begin(),edges[i].end());for(j=0;j<edges[i].size();j++){int idx=m1[{edges[i][j],i}];if(s1[idx]=='R'){f1=1;}else{if(f1==1)flag=1;}}if(flag==1) break;}if(flag==1){cout<<"Yes"<<endl;}else {cout<<"No"<<endl;}return 0;
}

D - Moves on Binary Tree

题意:

给你一个满二叉树,和你会行动的次数的字符串最长1e6次,告诉你所在的位置x,每次运动要么向上要么向左下或者右下,保证最终不会超过1e18,但是中途可能会超过,求最终所在的位置

思路:

因为U之前的一次L和R肯定是不起作用的,所以反转一下去找U前面有没有L或者R,然后我开了这个双端队列,存最早放入U的下标,如果遇到了L或者R,就删除U
 

 

#include <bits/stdc++.h>using namespace std;#define endl '\n'
const int maxn=1e6+1000;
bool vis[maxn];
int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);long long n,x,i,j,cnt=0;string s1,ss="";cin>>n>>x;cin>>s1;reverse(s1.begin(),s1.end());deque<int >ans1;for(i=0;i<s1.length();i++){if(s1[i]=='U'){ans1.push_back(i);}else{if(ans1.size()>0) {int d1=ans1.front();ans1.pop_front();vis[n-d1-1]=1;vis[n-i-1]=1;}}}reverse(s1.begin(),s1.end());for(i=0;i<s1.length();i++){if(vis[i]==1) continue;if(s1[i]=='U'){x/=2;}else if(s1[i]=='R'){x=x*2+1;}else{x*=2;}}cout<<x<<endl;return 0;
}

这篇关于AtCoder Beginner Contest 243(A-D)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/158709

相关文章

2014 Multi-University Training Contest 8小记

1002 计算几何 最大的速度才可能拥有无限的面积。 最大的速度的点 求凸包, 凸包上的点( 注意不是端点 ) 才拥有无限的面积 注意 :  凸包上如果有重点则不满足。 另外最大的速度为0也不行的。 int cmp(double x){if(fabs(x) < 1e-8) return 0 ;if(x > 0) return 1 ;return -1 ;}struct poin

2014 Multi-University Training Contest 7小记

1003   数学 , 先暴力再解方程。 在b进制下是个2 , 3 位数的 大概是10000进制以上 。这部分解方程 2-10000 直接暴力 typedef long long LL ;LL n ;int ok(int b){LL m = n ;int c ;while(m){c = m % b ;if(c == 3 || c == 4 || c == 5 ||

2014 Multi-University Training Contest 6小记

1003  贪心 对于111...10....000 这样的序列,  a 为1的个数,b为0的个数,易得当 x= a / (a + b) 时 f最小。 讲串分成若干段  1..10..0   ,  1..10..0 ,  要满足x非递减 。  对于 xi > xi+1  这样的合并 即可。 const int maxn = 100008 ;struct Node{int

AtCoder Beginner Contest 370 Solution

A void solve() {int a, b;qr(a, b);if(a + b != 1) cout << "Invalid\n";else Yes(a);} B 模拟 void solve() {qr(n);int x = 1;FOR(i, n) FOR(j, i) qr(a[i][j]);FOR(i, n) x = x >= i ? a[x][i]: a[i][x];pr2(

CF Bayan 2015 Contest Warm Up B.(dfs+暴力)

B. Strongly Connected City time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/475/probl

CF Bayan 2015 Contest Warm Up A.(模拟+预处理)

A. Bayan Bus time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/475/problem/A The fi

AtCoder Beginner Contest 369 D - Bonus EXP 动态规划

原题链接: https://atcoder.jp/contests/abc369/tasks/abc369_d 思路:   这道题为什么要用动态规划呢,其实,对于第i个怪物,我们有打与不打两种处理方式,而对于打,我们是获得两倍的经验值,还是一倍的经验值,与我们打了奇数只怪物还是打了偶数只怪物有关了,因此我们定义dp[i][0] 为前i只怪物总共打了偶数次,dp[i][1] 为前i只怪物总

2015 Multi-University Training Contest 5 1009 MZL#39;s Border

MZL's Border  Problem's Link:  http://acm.hdu.edu.cn/showproblem.php?pid=5351   Mean:  给出一个类似斐波那契数列的字符串序列,要你求给出的f[n]字符串中截取前m位的字符串s中s[1...i] = s[s.size()-i+1....s.size()]的最大长度。 analyse:   过计算

【UVa】10600 ACM Contest and Blackout 次小生成树

类型:次小生成树 题目大意: 为了举办ACM竞赛,市长决定给所有的n(3 <= n <= 100)所学校提供可靠的电力供应。当且仅当一个学校直接连到电站,或者连到另一个有可靠供应的学校时,才有可靠供应。现在给出在不同学校之间的布线成本,找出最便宜的两种连线方案。一个方案的成本等于其中所有学校之间连线的成本的总和。 题目分析: 次小生成树。 先求出最小生成树,然后枚举所有不在

【POJ】3660 Cow Contest floyd(可以拓扑排序?)

Cow Contest Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 6925 Accepted: 3792 Description N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating i