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

AtCoder Beginner Contest 162

时间:2023-07-14 12:45:01浏览次数:40  
标签:AtCoder Beginner Contest int res ll long 162 dp

AtCoder Beginner Contest 162

ABCD全暴力
E数学题看不懂,感性理解
F线性dp,非常基础我不会,寄

E - Sum of gcd of Tuples (Hard)

看了题解发现好多做法都是推一堆式子,我实在看不懂(卷积莫反啥啥的呜呜呜)
然后看见这个感觉比较好感性理解:

(来自洛谷题解)

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

using namespace std;
const int N = 1e5 + 5, mod = 1e9 + 7;
ll n, k, f[N], ans;

ll qmi(ll a, ll k, ll p){
    ll res = 1;
    while(k){
        if(k & 1)
            res = (ll)res * a % p;
        a = (ll)a * a % p;
        k >>= 1;
    }
    return res;
}

int main () {
    cin >> n >> k;
    for (int i = k; i >= 1; i--) {
        f[i] = qmi (k / i, n, mod);
        for (int j = i + i; j <= k; j += i) {
            (f[i] += - f[j] + mod) %= mod;//容斥
        }
    }
    for (int i = 1; i <= k; i++)    (ans += 1ll * i * f[i]) %= mod;
    cout << ans;
}

//存在多少个{a1,a2,...,an}使得gcd=x
//则所有数都为x的倍数,共(k/x)^n个

F - Select Half

线性dp,分奇偶讨论。

转移:对于 \(a_i\) 放,都是 \(dp_i=a_i+dp_{i-2}\)

到偶数位时:\(a_i\) 不放,则前面的局面固定了,只能时 \(i\) 之前奇数位的和,可以画个图

到奇数位时:\(a_i\) 不放,则转化为 \(i-1\) 的子问题, \(i-1\) 为偶数,即方案为 \(dp_{i-1}\)

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

using namespace std;
const int N = 2e5 + 5;
ll a[N], n;
ll f[N], s[N]; //奇数位前缀和 

int main () {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        s[i] = s[i-1];
        if (i & 1)  s[i] += a[i];
    }
    for (int i = 2; i <= n; i++) {
        if (i & 1)  f[i] = max (f[i-2] + a[i], f[i-1]);
        else    f[i] = max (f[i-2] + a[i], s[i-1]);
    }
    cout << f[n];
}

//妙妙dp,分奇偶讨论,线性地推

标签:AtCoder,Beginner,Contest,int,res,ll,long,162,dp
From: https://www.cnblogs.com/CTing/p/17553387.html

相关文章

  • Atcoder Regular Contest 114 F - Permutation Division
    显然分成\(k\)段以后,最大化形成的排列的字典序的策略是将所有段按第一个元素的大小降序排列。由于最终排列的字典序肯定\(\ge\)原排列的字典序,因此我们考虑最大化最终排列与原排列的LCP,这部分就考虑二分答案,记\(dp_i\)表示以\(p_1\)开始\(p_i\)结尾的LDS的长度,那么......
  • AtCoder Regular Contest 164 A~C
    A题都没做出来(被自已菜晕A.TernaryDecompositionA-TernaryDecomposition(atcoder.jp)题意给定一个正整数\(N\),问是否存在\(K\)个整数,使得\(N=3^{m_1}+3^{m_2}+...+3^{m_k}\)思路首先对于一个正整数\(N\),最多有\(N\)个整数使得正式成立,即\(m_i\)全为0。再对\(N\)进行三......
  • AtCoder Beginner Contest 161
    AtCoderBeginnerContest161https://atcoder.jp/contests/abc161这套不算难,但是sb我还是写不出来是为什么呢F是个妙妙题C-ReplacingIntegerWA了一次所以放上来#include<bits/stdc++.h>#definelllonglongusingnamespacestd;intmain(){lla,b;c......
  • 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......