Codeforces Round #767 (Div. 2) ABCD题解

Posted ZZXzzx0_0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #767 (Div. 2) ABCD题解相关的知识,希望对你有一定的参考价值。

A. Download More RAM

思路
签 到 题 签到题
按 照 a 从 小 到 大 排 序 按照a从小到大排序 a
只 要 k > = a , 就 + = 对 应 的 b 只要k>=a,就+=对应的b k>=a+=b
输 出 k 即 可 输出k即可 k
时间复杂度 O n l o g n Onlogn Onlogn

#include <bits/stdc++.h>
#define fer(i,a,b) for(re i = a ; i <= b ; ++ i)
#define der(i,a,b) for(re i = a ; i >= b ; -- i)
#define cf int _; cin>> _; while(_--)
#define all(x) (x).begin(),(x).end()
#define sz(x) ((int)(x).size())
#define sf(x) scanf("%lld",&x)
#define pll pair<int,int> 
#define re register int
#define lb lower_bound
#define up upper_bound
#define int long long 
#define pb push_back
#define y second 
#define x first 
using namespace std;
inline void sf2(int &a , int &b)  sf(a) , sf(b) ;
inline void sf3(int n , int a[]) fer(i,1,n) sf(a[i]); ;
inline void de(auto x) cout << x << "\\n" ;
inline void de2(auto a , auto b) cout << a << " " << b << "\\n" ;
inline void de3(int n , auto a[])fer(i,1,n) cout << a[i] << " " ;puts("");
inline void mo(int &a , int b) a = (a % b + b) % b ;
inline int gcd(int a,int b)return b ? gcd(b , a % b) : a ;
inline int qpow(int a,int b,int c)int res=1%c;a%=c;while(b>0)if(b&1)res=res*a%c;a=a*a%c;b>>=1;return res;
inline int qadd(int a,int b,int c)int res=0;a%=c;while(b>0)if(b&1)res=(res+a)%c;a=(a+a)%c;b>>=1;return res; 
const int inf = 0x3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f ;
const int N = 1e6 + 10 , M = 3010 , mod = 1e9 + 7 ;
const double eps = 1e-7 , pi = acos(-1.0) ;
 
int n , k ;
struct ai
    int a , b ;
q[N] ;
bool cmp(ai x , ai y)

    return x.a < y.a ;

 
signed main()

    cf
    
        cin >> n >> k ;
        fer(i,1,n) sf(q[i].a) ;
        fer(i,1,n) sf(q[i].b) ;
        
        sort(q + 1 , q + 1 + n , cmp) ;
        
        fer(i,1,n)
        
            if(k >= q[i].a)
                k += q[i].b ;
        
        
        de(k) ;
    
    return 0;

B. GCD Arrays

思路
读 完 题 目 第 一 个 想 到 的 就 是 g c d ( x , x + 1 ) = 1 读完题目第一个想到的就是gcd(x,x+1)=1 gcd(x,x+1)=1
显 然 这 个 性 质 不 是 特 别 关 键 显然这个性质不是特别关键

在 仔 细 想 想 , 只 要 可 能 的 g c d > 1 即 可 在仔细想想,只要可能的gcd>1即可 gcd>1
2 又 是 除 1 之 外 , [ l , r ] 中 因 数 最 多 的 一 个 数 2又是除1之外,[l,r]中因数最多的一个数 21[l,r]
所 以 g c d > 1 , 具 体 是 多 少 , 操 作 数 最 小 的 一 定 是 2 所以gcd>1,具体是多少,操作数最小的一定是2 gcd>12

那 么 统 计 一 下 [ l , r ] 中 有 多 少 个 奇 数 那么统计一下[l,r]中有多少个奇数 [l,r]
奇 数 是 一 定 要 和 另 外 一 个 偶 数 乘 起 来 奇数是一定要和另外一个偶数乘起来
所 以 如 果 奇 数 小 于 等 于 k , 输 出 Y E S 所以如果奇数小于等于k,输出YES kYES

在 特 殊 判 断 一 下 a = b , 并 且 a ! = 1 的 情 况 在特殊判断一下a=b,并且a!=1的情况 a=ba!=1
因 为 g c d ( a , a ) = a [ a ! = 1 ] 因为gcd(a,a) = a [ a != 1] gcd(a,a)=a[a!=1]
这 种 情 况 也 是 Y E S 这种情况也是YES YES
时间复杂度 O t Ot Ot

#include <bits/stdc++.h>
#define fer(i,a,b) for(re i = a ; i <= b ; ++ i)
#define der(i,a,b) for(re i = a ; i >= b ; -- i)
#define cf int _; cin>> _; while(_--)
#define all(x) (x).begin(),(x).end()
#define sz(x) ((int)(x).size())
#define sf(x) scanf("%lld",&x)
#define pll pair<int,int> 
#define re register int
#define lb lower_bound
#define up upper_bound
#define int long long 
#define pb push_back
#define y second 
#define x first 
using namespace std;
inline void sf2(int &a , int &b)  sf(a) , sf(b) ;
inline void sf3(int n , int a[]) fer(i,1,n) sf(a[i]); ;
inline void de(auto x) cout << x << "\\n" ;
inline void de2(auto a , auto b) cout << a << " " << b << "\\n" ;
inline void de3(int n , auto a[])fer(i,1,n) cout << a[i] << " " ;puts("");
inline void mo(int &a , int b) a = (a % b + b) % b ;
inline int gcd(int a,int b)return b ? gcd(b , a % b) : a ;
inline int qpow(int a,int b,int c)int res=1%c;a%=c;while(b>0)if(b&1)res=res*a%c;a=a*a%c;b>>=1;return res;
inline int qadd(int a,int b,int c)int res=0;a%=c;while(b>0)if(b&1)res=(res+a)%c;a=(a+a)%c;b>>=1;return res; 
const int inf = 0x3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f ;
const int N = 1e6 + 10 , M = 3010 , mod = 1e9 + 7 ;
const double eps = 1e-7 , pi = acos(-1.0) ;
 
int get(int x) // 返回1-x中有多少个奇数

    return (x + 1) / 2 ;

 
signed main()

    cf
    
        int a , b 

以上是关于Codeforces Round #767 (Div. 2) ABCD题解的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #767 (Div. 2) A ~ D

Codeforces Round #767 (Div. 2) ABCD题解

Codeforces Round #767 (Div. 2)(A B C D E F1 F2)

Codeforces Round #436 E. Fire(背包dp+输出路径)

[ACM]Codeforces Round #534 (Div. 2)

CodeForces 767E(贪心)