首页 > 其他分享 >AtCoder Beginner Contest 161

AtCoder Beginner Contest 161

时间:2023-07-13 11:56:36浏览次数:44  
标签:AtCoder cout Beginner int ll long ++ lst 161

AtCoder Beginner Contest 161

https://atcoder.jp/contests/abc161
这套不算难,但是sb我还是写不出来是为什么呢
F是个妙妙题

C - Replacing Integer

WA了一次所以放上来

#include <bits/stdc++.h>
#define ll long long

using namespace std;

int main () {
    ll a, b;
    cin >> a >> b;
    if (a > b)  a %= b;
    if (a < abs (a - b))    cout << a;
    else    cout << abs (a - b);
}

D - Lunlun Number

队列模拟

#include <bits/stdc++.h>
#define ll long long

using namespace std;
int k;

int main () {
    queue<ll>q;
    for (int i = 1; i <= 9; i++)    q.push(i);
    cin >> k;
    k--;
    while (k--) {
        ll t = q.front();
        int d = t % 10;
        q.pop ();
        ll tt = t * 10 + d;
        if (d != 0) q.push (tt - 1);
        q.push (tt);
        if (d != 9) q.push (tt + 1);
    }
    cout << q.front ();
}

E - Yutori

正向贪心 + 逆向贪心

#include <bits/stdc++.h>
#define ll long long

using namespace std;
const int N = 2e5 + 5;
int n, k, c, l[N], r[N];
string s;

int main () {
    cin >> n >> k >> c >> s;
    s = ' ' + s;
    vector<int> v1, v2;
    int lst = -1e9;
    for (int i = 1; i <= n; i++) {
        l[i] = l[i-1];
        if (s[i] == 'o' && i - lst > c)    l[i]++, lst = i;
    }
    lst = 1e9;
    for (int i = n; i >= 1; i--) {
        r[i] = r[i+1];
        if (s[i] == 'o' && lst - i > c)    r[i]++, lst = i;
    }
    //for (int i = 1; i <= n; i++)   cout << l[i] << ' ';cout << endl;
    //for (int i = 1; i <= n; i++)   cout << r[i] << ' ';cout << endl;
    for (int i = 1; i <= n; i++) {
        if (s[i] == 'x')    continue;
        if (l[i-1] + r[i+1] + 1 == k)   cout << i << endl;
    }
}

F - Division or Subtraction

根号分治

#include <bits/stdc++.h>
#define ll long long

using namespace std;

int main () {
    ll n, ans = 0;
    cin >> n;
    //根号分治: n = k^x(ky+1)
    if (n == 2) {
        cout << 1;
        return 0;
    }
    
    for (ll i = 2; i * i <= n; i++) {
        //k>sqrt(n) -> n % k = 1, k|(n-1)
        if ((n - 1) % i == 0) {
            ans ++;
            if (i * i != n - 1) ans ++;
        }
        //k<=sqrt(n) -> 暴力除k
        ll m = n;
        while (m % i == 0)  m /= i;
        if (m != n && m % i == 1)   ans++;
    }
    cout << ans + 2; //y = 0, n自身
}

//由根号断开

标签:AtCoder,cout,Beginner,int,ll,long,++,lst,161
From: https://www.cnblogs.com/CTing/p/17550059.html

相关文章

  • AtCoder Grand Contest 012 D Colorful Balls
    洛谷传送门AtCoder传送门不错的题。bxEnder32k。我们发现交换有传递性,那么我们能交换就连边,答案是\(\prod\frac{(sz)!}{\prodc_i!}\),其中\(sz\)为连通块大小,\(c_i\)为这个连通块中第\(i\)种颜色出现次数。于是我们得到了一个\(O(n^2)\)的做法。发现很多遍是无用的......
  • AtCoder Regular Contest 164 E Segment-Tree Optimization
    洛谷传送门AtCoder传送门妙妙题。我们考虑如何方便地描述一棵广义线段树。不难想到使用断点描述,即对于一个结点\([l,r]\),它的左右儿子分别是\([l,mid],[mid+1,r]\),其中\(mid\in[l,r-1]\),然后把一层缩成一个\(2^{d-1}\)的序列,每一层都是上层对应结点的\(mid......
  • Atcoder ABC 309 F
    AtcoderABC309F题意n个盒子,长宽高为\(x,y,z,\)(长宽高是相对的,可以任意调换),问是否有一个盒子可以完全容纳另一个盒子,即存在一个\(A_i={x_i,y_i,z_i},A_j={x_j,y_j,z_j}\),使得\(x_i<x_j,y_i<y_j,z_i<z_j\)思路思考一个简单的问题:对于二元组\((x,y)\),我们怎么确定存在两......
  • AtCoder Beginner Contest 309 G Ban Permutation
    洛谷传送门AtCoder传送门前置知识:[ARC132C]AlmostSorted看\(\geX\)不顺眼,怎么办呢!直接容斥!钦定\(j\)个位置满足\(|P_i-i|<X\),其余任意,就转化成了[ARC132C]AlmostSorted。具体一点就是,你设\(f_{i,j,S}\)表示前\(i\)位有\(j\)个位置满足\(|P_i-i|<......
  • atcoder绿题选做
    ABC305:E  https://atcoder.jp/contests/abc305/tasks/abc305_e题意:给定一个无向图,给定k个守卫,每个守卫有h[i]的耐力值,如果是一个在图中是被保护的要满足和守卫的距离至少为h[i],让你升序打印所有被守卫的点解题思路:可以从守卫出发,看守卫在可以走的情况下最远走到哪,最后统计......
  • Atcoder ABC308H Make Q
    考虑枚举唯一一个度数为\(3\)的点\(u\),即既在环上又与非环上一点相连的那个点。接下来考虑先处理环,那可以先把\(u\)从图上删掉,环的最短距离便是与\(u\)有连边的\(2\)个点在图上最短路长度加上\(2\)个点与\(u\)连边的长度,即\(\min\{w_{u,i}+w_{u,j}+\operator......
  • 人工智能课程:AI For Beginners
    背景介绍随着人工智能技术的快速发展,许多人对于如何入门人工智能感到困惑。针对这个问题,微软推出了开源项目AI-For-Beginners,提供一个为期12周、共24课的人工智能课程,旨在让所有人都能轻松学习人工智能知识!GitHub开源项目microsoft/AI-For-Beginners,该项目在GitHub有超过8......
  • Atcoder ARC164B Switching Travel
    称\(c_u\not=c_v\)的边\((u,v)\)为普通边,\(c_u=c_v\)的边\((u,v)\)为特殊边。能发现若满足条件则这个环应该是由一条特殊边和若干条普通便组成的(从特殊边的一个顶点出发一直经过普通边,最后走到特殊边的另一个顶点再走回来)。于是若这个特殊边的两个顶点能只通过普通......
  • AtCoder Regular Contest 164 (A-C)
    A.TernaryDecomposition思维难度其实可以作为第二题思路先考虑最优情况下需要多少个数来组成(不够就No)在考虑全部为1的情况下是否可行(N<K这种情况不行)剩下的情况,考虑每次把高位的1向下挪变为3,所需的数字+2那么即三进制拆分后,在[min,max]范围内,且与最优情况差值为......
  • Atcode Beginner Constest 309 E
    e题的题意又理解错了(E.FamilyandInsurance题意给定一棵或者若干棵树,以及\(m\)次操作。每次操作将一个节点后面几层的儿子节点的权值加1,求最后有多少节点的权值至少为1。思路设\(dp[i]\)为节点\(i\)后面有几个节点被覆盖,若没有覆盖为-1。DFS一遍维护每个\(dp[i]\)的最大值,......