Educational Codeforces Round 58 (Rated for Div. 2) (前两题题解)

感慨

这次比较昏迷最近算法有点飘,都在玩pygame。。。做出第一题让人hack了,第二题还昏迷想错了

A Minimum Integer(数学)

水题,上来就能做出来但是让人hack成了tle,所以要思考一下具体的过程

原本我是认为直接把d进行累加看什么时候不在那个segment内也就是那个范围之内结果tle

今天思考一下发现有两种情况

①如果d本来就是小于左边界的那么就输出d就可以了,因为样例明确提示有原来的数也可以

②然后就是如果d在范围之内或者范围外可以用余数来确定具体的数公式是:

ans=r+d-r%d

如何说明其正确性呢?

首先AC了(。。。。)

其次先说明如果d大于r那么这个公式输出d没有任何问题

然后再说明特例d在segment内,那么ans一定大于r,要找最小的ans那么就需要找离r最小的数,所以先余数余一下看看ans距离r的一个距离然后再用特例去验证一下发现了这个公式成立(这也不算证明。。。)

代码

#include <bits/stdc++.h>
using namespace std;
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n;
  cin>>n;
  while(n--)
  {
    int l,r,d;
    cin>>l>>r>>d;
    if(d<l)
    cout<<d<<"\n";
    else
    {
      int k=r%d;
      cout<<r+d-k<<"\n";
    }
  }
}

B Accordion(字符串模拟)

昨天昏迷了忘记了一个右括号可以包含的问题今天上来借助着数据的力量把这个题A了,这个题数据就有进600组。。。还是模拟题着实是一道不错的题,很考验细节能力

首先按照特例先说一下-1的情况

(1)-1的情况

①没有出现左括号

②没有出现右括号

③两个括号中间的冒号少于两个

接着说一下具体的判定的思路实现自己来或者看代码

(2)最大值的计算

①首先要想一下什么时候会出现最大值那么不就是要在最大的两个合法的冒号内有最多的竖线吗?这个合法又是什么意思?

合法的意思就是两个冒号外面还有两个相应的闭合的中括号。所以有了思路我们的目标就明确了

就是去找合法的最大的冒号区域以及其中的竖线最后的答案就是4+区域内竖线的个数

代码

#include <bits/stdc++.h>
using namespace std;
int bk1[666666],bk2[666666],bk3[666666],bk4[666666],p1,p2,p3,p4,ans,sum,rt;
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  string a;
  cin>>a;
  for(int i=0;i<a.size();i++)
  {
    if(a[i]==‘[‘)
    bk1[p1++]=i;
    if(a[i]==‘:‘)
    bk2[p2++]=i;
    if(a[i]==‘]‘)
    bk3[p3++]=i;
  }
  for(int i=0;i<p2;i++)
  if(bk2[i]>bk1[0]&&bk2[i]<bk3[p3-1])
  ans++,bk4[p4++]=bk2[i];
  if(ans<2||p1==0||p3==0)
  return cout<<-1,0;
  for(int i=p3-1;i>=0;)
  {
    if(bk4[p4-1]<bk3[i])
    {
      rt=bk4[p4-1];
      break;
    }
    else
    p4--;
  }
  for(int i=bk4[0];i<rt;i++)
  if(a[i]==‘|‘)
  sum++;
  cout<<4+sum;
}

原文地址:https://www.cnblogs.com/baccano-acmer/p/10261253.html

时间: 2024-10-08 11:23:39

Educational Codeforces Round 58 (Rated for Div. 2) (前两题题解)的相关文章

Educational Codeforces Round 58 (Rated for Div. 2)(待更新)

get人生第七场CF! 成绩:(exACM) rank AC3/7 Penalty104 rating() 题目:Educational Codeforces Round 58 (Rated for Div. 2) 错题题解: C. Division and Union 原文地址:https://www.cnblogs.com/xht37/p/10260260.html

Educational Codeforces Round 58 (Rated for Div. 2) (题解)

C题卡了一个小时, 又被教育场教育了... A. Minimum Integer 大意:求不在$[l,r]$范围内的最小被$d$整除的数 模拟 #include <iostream> #define REP(i,a,n) for(int i=a;i<=n;++i) using namespace std; int main() { int t; scanf("%d", &t); REP(i,1,t) { int l,r,d; scanf("%d%d%

Educational Codeforces Round 58 (Rated for Div. 2)

A. Minimum Integer 水 #include<bits/stdc++.h> #define clr(a,b) memset(a,b,sizeof(a)) using namespace std; typedef long long ll; const int maxn=1e3+10; struct node{ ll num,mag; friend bool operator <(const node &a,const node &b){ return a.m

Educational Codeforces Round 48 (Rated for Div. 2) - 赛后补题

C. Vasya And The Mushrooms 题解:拿笔画他的行走路线,你会发现可以前缀和预处理一些东西出来. const int N = 300005; int n; ll a[N], b[N], dp[2][N], sp[2][N], sum[N]; int get_a() { dp[0][0] = 0; for (int i = 1; i < n; ++i) { dp[0][i] = dp[0][i - 1] + 1ll * i * a[i]; } int t = n; dp[1]

Educational Codeforces Round 57 (Rated for Div. 2) 前三个题补题

感慨 最终就做出来一个题,第二题差一点公式想错了,又是一波掉分,不过我相信我一定能爬上去的 A Find Divisible(思维) 上来就T了,后来直接想到了题解的O(1)解法,直接输出左边界和左边界*2即可 代码 #include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); long long x,y,t; cin>>t;

Educational Codeforces Round 59 (Rated for Div. 2) (前四题)

A. Digits Sequence Dividing(英文速读) 练习英语速读的题,我还上来昏迷一次....只要长度大于2那么一定可以等于2那么前面大于后面就行其他no 大于2的时候分成前面1个剩下后面一定是对的因为按照数字大小 代码 #include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin>>n;

Educational Codeforces Round 36 (Rated for Div. 2)

Educational Codeforces Round 36 (Rated for Div. 2) F. Imbalance Value of a Tree You are given a tree T consisting of n vertices. A number is written on each vertex; the number written on vertex i is ai. Let's denote the function I(x,?y) as the differ

Educational Codeforces Round 69 (Rated for Div. 2) B - Pillars

Educational Codeforces Round 69 (Rated for Div. 2) B - Pillars There are n pillars aligned in a row and numbered from 1 to n. Initially each pillar contains exactly one disk. The i-th pillar contains a disk having radius ai. You can move these disks

Educational Codeforces Round 71 (Rated for Div. 2) D - Number Of Permutations

原文链接:https://www.cnblogs.com/xwl3109377858/p/11405773.html Educational Codeforces Round 71 (Rated for Div. 2) D - Number Of Permutations You are given a sequence of n pairs of integers: (a1,b1),(a2,b2),…,(an,bn). This sequence is called bad if it is