(AtCoder Beginner Contest 341)(A - D)

2024-02-19 00:36
文章标签 atcoder beginner contest 341

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

比赛地址 : 

Tasks - Toyota Programming Contest 2024#2(AtCoder Beginner Contest 341)

A . Print 341

模拟就好了 , 先放一个 1 , 然后放 n 个 01 ;

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
#define lowbit(x) (x&(-x))
#define sz(a) (int)a.size()
#define pb push_back
#define all(a) a.begin(), a.end()
#define int long long
typedef long long LL;
const int mod = 1e9+7;
const int N = 2e5+10;using namespace std;inline void solve(){int n ; cin >> n ;cout << 1 ;for(int i=0;i<n;i++){cout << "01";}
}signed main()
{IOSint _ = 1;// cin >> _;while(_ --) solve();return 0;
}

B . Foreign Exchange

 贪心, 因为后面操作不会影响前面的,前面的会使后面的变大,而题目要求使最后一个最大,那么 , 直接从前往后遍历就好了 ;

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
#define lowbit(x) (x&(-x))
#define sz(a) (int)a.size()
#define pb push_back
#define all(a) a.begin(), a.end()
#define int long long
typedef long long LL;
const int mod = 1e9 + 7;
const int N = 2e5 + 10;using namespace std;inline void solve() {int n ; cin >> n ;vector<int> a(n+1) ,s(n) , t(n) ;for(int i=1;i<=n;i++) cin >> a[i] ;for(int i=1;i<n;i++) cin >> s[i] >> t[i] ;// 第i个-si ,i+1就+tifor(int i=1;i<n;i++){if(a[i] >= s[i]){int k = a[i] / s[i] ;a[i] -= k * s[i] ;a[i+1] += k * t[i] ; }}cout << a[n] << endl;
}	signed main()
{IOSint _ = 1;// cin >> _;while (_--) solve();return 0;
}

C . TaKahashi Gets Lost

暴力 , 对于每一个点,找它是否满足题意,如果满足,则ans++;

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
#define lowbit(x) (x&(-x))
#define sz(a) (int)a.size()
#define pb push_back
#define all(a) a.begin(), a.end()
#define int long long
typedef long long LL;
const int mod = 1e9+7;
const int N = 510;char c[N][N] ;using namespace std;inline void solve(){int h,w,n;cin>>h>>w>>n ;string t ; cin >> t ;for(int i=1;i<=h;i++){for(int j=1;j<=w;j++){cin >> c[i][j] ;}}int ans = 0 ;for(int i=1;i<=h;i++){for(int j=1;j<=w;j++){if(c[i][j]=='#') continue ;int a = i , b = j ;bool tag = true;for(int k=0;k<n;k++){if(t[k]=='L'){if(b==1){tag = false;break ; }b-=1;if(c[a][b]=='#'){tag = false;break;}}else if(t[k]=='U'){if(a==1){tag = false;break ; }a-=1;if(c[a][b]=='#'){tag = false;break;}}else if(t[k]=='R'){if(b==w){tag = false;break ; }b+=1;if(c[a][b]=='#'){tag = false;break;}}else{// "D"if(a==h){tag = false;break ; }a+=1;if(c[a][b]=='#'){tag = false;break;}}}if(tag){ans ++ ;}}}cout << ans << endl ;
}signed main()
{IOSint _ = 1;// cin >> _;while(_ --) solve();return 0;
}

D . Only one of two

先找到n,m的最小公倍数l,那么对于一个数x,能被n整除且<=x的数的个数就是[x/n],所以可以得到下面式子(因为可能同时能被n,m整除,要删掉能被l整除的数字个数): 

[x/n] + [x/m] - 2 * [x/l] >= k;

这样就可以使用二分来进行查找 ;

#include <bits/stdc++.h>
using namespace std;
typedef long long LL ;
LL gcd(LL a , LL b){return b ? gcd(b, a % b) : a;
}// 设 l 是 m,n的最小公倍数 int main() {long long n,m,x,k;cin>>n>>m>>k;x=(n*m)/gcd(n,m);// 求出最小公倍数 long long l=0,r=(long long)2e+18,mid,y;while((l+1)<r){// 二分查找 t/n+t/m-2*t/x>=k的最佳答案  mid=(l+r)/2;y=(mid/n)+(mid/m)-2*(mid/x);if(y<k)l=mid;else r=mid;}cout<<r<<endl;return 0;
}

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



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

相关文章

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