IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> Educational Codeforces Round 122 (Rated for Div. 2) A B C D -> 正文阅读

[C++知识库]Educational Codeforces Round 122 (Rated for Div. 2) A B C D

Educational Codeforces Round 122 (Rated for Div. 2) A B C D

A Div. 7

思路: 能被 7 7 7整除,方法有很多种,因为要求最小次数,那么我们特判能被 7 7 7整除就输出 0 0 0否则,暴力最后一位能被 7 7 7整除即可,然后返回 1 1 1,必定有答案。

  • 参考代码:
#include<bits/stdc++.h>
using namespace std;
#define mp make_pair
#define int long long 
#define re register int
#define pb emplace_back
#define lowbit(x) (x&-x)
#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 snow ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a*b/gcd(a,b);}
typedef pair<int,int>PII;
typedef pair<int,string>PIS;
void solve(){
    int n;
    cin>>n;
    if(n%7==0){
        cout<<n<<endl;return;
    }
    int x=n/10;
    for(int i=0;i<=9;i++){
        if((x*10+i)%7==0){
            cout<<(x*10+i)<<endl;
            return ;
        }
    }
}
signed main(){
    int t;
    cin>>t;
    while(t--){
        solve();   
    }
    return 0;
}

B Minority

思路: 大水题, O ( n ) O(n) O(n)扫一遍, 0 0 0 1 1 1的数量相等就 c o n t i n u e continue continue,否则更新目标值。

  • 参考代码:
#include<bits/stdc++.h>
using namespace std;
#define mp make_pair
#define int long long 
#define re register int
#define pb emplace_back
#define lowbit(x) (x&-x)
#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 snow ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a*b/gcd(a,b);}
typedef pair<int,int>PII;
typedef pair<int,string>PIS;
void solve(){
    string s;
    cin>>s;
    int cnt1=0,cnt2=0;
    int ma=0;
    for(int i=0;i<s.size();i++){
        if(s[i]=='0')cnt1++;
        else cnt2++;
        if(cnt1==cnt2)continue;
        ma=max(ma,min(cnt1,cnt2));
    }
    cout<<ma<<endl;
}
signed main(){
    int t;
    cin>>t;
    while(t--){
        solve();   
    }
    return 0;
}

C Kill the Monster

思路: 想歪了,一开始以为二分 k k k的值,后来发现 a l l all all k k k 不超过 2 e 5 2e5 2e5,果断暴力。前缀知识上取整写法即可。 O ( k ) O(k) O(k)扫描。需要推出角色攻击次数要小于等于怪物攻击次数。

  • 参考代码:
#include<bits/stdc++.h>
using namespace std;
#define mp make_pair
#define int long long 
#define re register int
#define pb emplace_back
#define lowbit(x) (x&-x)
#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 snow ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a*b/gcd(a,b);}
typedef pair<int,int>PII;
typedef pair<int,string>PIS;
void solve(){
    int a,b,c,d;
    cin>>a>>b>>c>>d;
    int k,a1,b1;
    cin>>k>>b1>>a1;//b1是加攻击,a1是加血
    int cnt1,cnt2;
    cnt1=(a+d-1)/d;//怪物攻击次数
    cnt2=(c+b-1)/b;//角色攻击次数
    if(cnt2<=cnt1){
        cout<<"YES"<<endl;
        return ;
    }
    for(int i=0;i<=k;i++){
        int a2,b2;//增益后的血量和攻击
        a2=a+i*a1;
        b2=b+(k-i)*b1;
        cnt1=(a2+d-1)/d;
        cnt2=(c+b2-1)/b2;
        if(cnt1>=cnt2){
            cout<<"YES"<<endl;
            return ;
        }
    }
    cout<<"NO"<<endl;
}
signed main(){
    int t;
    cin>>t;
    while(t--){
        solve();   
    }
    return 0;
}

D Make Them Equal

思路: 感觉对我有营养的题。 d p 01 dp01 dp01背包的运用,对数据范围的敏感。我做题的时候是比较容易得到将 b b b数组全部替换成 i ? > b [ i ] i->b[i] i?>b[i]需要的 s t e p step step。然后发现是 01 01 01背包的写法,选或不选。然而直接暴力 01 01 01背包的话时间复杂度是 O ( n k ) O(nk) O(nk) 1 e 9 1e9 1e9级别,因为对数据不是那么敏感,在后来才发现由于 n n n的数据是 1 e 3 1e3 1e3级别,那么变化 s t e p step step 12 12 12次左右最多。那么我们可以将 k k k的范围缩小为 m i n ( k , n ? 12 ) min(k,n*12) min(k,n?12),那么再跑背包的话时间复杂度就降到 1 e 7 1e7 1e7级别可以接受。 s t e p step step可以通过预处理 i n i t ( ) init() init()实现。

  • 参考代码:
#include<bits/stdc++.h>
using namespace std;
#define mp make_pair
#define int long long 
#define re register int
#define pb emplace_back
#define lowbit(x) (x&-x)
#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 snow ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a*b/gcd(a,b);}
typedef pair<int,int>PII;
typedef pair<int,string>PIS;
const int N=1010,M=N*12;
int b[N];
int c[N];
int f[N][M];
int dist[N];
void init(){
    memset(dist,0x3f,sizeof dist);
    dist[1]=0;
    for(int i=1;i<N;i++){
        for(int j=1;j<=i;j++){
            int x=i+i/j;
            if(x>=N)continue;
            dist[x]=min(dist[x],dist[i]+1);
        }
    }
}
void solve(){
    int n,k;
    cin>>n>>k;
    k=min(n*12,k);
    for(int i=1;i<=n;i++){cin>>b[i];b[i]=dist[b[i]];}
    for(int i=1;i<=n;i++)cin>>c[i];
    int m=k;
    for(int i=1;i<=n;i++){
        for(int j=0;j<=m;j++){
            f[i][j]=f[i-1][j];//有清空的上一次solve的效果了。
            if(j>=b[i]){
                f[i][j]=max(f[i][j],f[i-1][j-b[i]]+c[i]);
            }
        }
    }
    cout<<f[n][m]<<endl;
}
signed main(){
    int t;
    cin>>t;
    init();
    while(t--){
        solve();   
    }
    return 0;
}

总结:

这一场 a b ab ab属于签到, c c c需要一点思维 + + +推公式。 d d d是在裸的基础上加一点点数据敏感的 01 01 01背包。 e e e r a t i n g 2400 rating2400 rating2400的题, f f f 2800 2800 2800的题对我来说暂不可补。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-04 10:51:31  更:2022-02-04 10:51:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:49:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码