牛客IOI周赛23-普及组全题解

简介: 牛客IOI周赛23-普及组全题解A 小L的作文B 小L的多项式C 小L的编辑器D 小L的数列

A 小L的作文


链接

水题不多说

统计字符就完了

int main(){
  char s; cin >> s;
  int ans = 0;
  string t; cin >> t;
  for(int i=1;i<=t.size();i++){
        if(t[i-1] == s) ans ++;
  }
  cout<<ans;
  return 0;
}


B 小L的多项式


链接

硬模拟

两层for,记得取模

ll a[maxn];
ll x[maxn];
int n,m;
ll ans[maxn];
int main() {
    cin >> n;
    for(int i=0;i<=n;i++) a[i] = read;
    cin >> m;
    for(int i=1;i<=m;i++) x[i] = read;
    for(int i=1;i<=m;i++){
        for(int j=0;j<=n;j++){
            ans[i] += a[j] * qPow(x[i],j);
            ans[i] %= mod;
        }
    }
    for(int i=1;i<=m;i++){
        printf("%lld",ans[i]);
        if(i != m) printf(" ");
    }
  return 0;
}


C 小L的编辑器


链接

注意,直接使用string可能会T(不是可能,是必然,因为试过了):

string a,b;
int main() {
    string s; cin >> s;
    string t; cin >> t;
    int len = s.size();
    for(int i=0;i<len;i++){
        if(t[i] == 'L') b = s[i] + b;
        else a = a + s[i];
    }
    cout<<a+b<<endl;
    return 0;
}


Ac_Code():


用双端队列模拟就行了,换一种方式而已

deque<int>que1;
deque<int>que2;
int main() {
    string s; cin >> s;
    string t; cin >> t;
    int len = s.size();
    for(int i=0;i<len;i++){
        if(t[i] == 'L') que2.push_front(s[i]);
        else que1.push_back(s[i]);
    }
    while(que1.size()){
        printf("%c",que1.front());
        que1.pop_front();
    }
    while(que2.size()){
        printf("%c",que2.front());
        que2.pop_front();
    }
  return 0;
}


D 小L的数列


链接

思路来自:UpMing!


Main_Code()


int T,dp[maxn],n,a[maxn];
int b[maxn];
int va[maxn];
int main(){
    /// cout<<sqrt(100000)<<endl;
  T=read();
  while(T--){
    n=read();
    int mx = -1;
    for(int i=1;i<=n;i++) a[i]=read(),mx = max(mx,a[i]);
    sort(a+1,a+n+1);
    memset(dp,0,sizeof dp);
    memset(b,0,sizeof b);
    memset(va,0,sizeof va);
        for(itn i=1;i<=n;i++){
            if(a[i] == 1) continue;
            int t = 0;
            for(int j=1;j*j <= a[i];j++){
                if(a[i] % j == 0){
                    int a1 = j;
                    int a2 = a[i] / j;
                    if(a1 == a2){
                        if(a1 > 1){
                            dp[a[i]] = max(dp[a[i]],b[a2] + 1);
                        }va[++t] = a2;
                    }else{
                        if(a1 > 1) dp[a[i]] = max(dp[a[i]],b[a1] + 1);
                        va[++t] = a1;
                        if(a2 > 1) dp[a[i]] = max(dp[a[i]],b[a2] + 1);
                        va[++t] = a2;
                    }
                }
            }
            for(int j=1;j<=t;j++){
                if(va[j] > 1) b[va[j]] = max(b[va[j]],dp[a[i]]);
            }
        }
   int ans =1;
   for(int i=1 ;i<=n ;i++) ans = max(ans,dp[a[i]]);
   cout<<ans<<endl;
  }
}
目录
相关文章
|
算法
LeetCode 周赛(2023/07/08)渐入佳境
- 往期回顾:[LeetCode 单周赛第 351 场 · 一场关于子数组的专题周赛](https://mp.weixin.qq.com/s/0KIaUMEpLZw6poHs3cc7MA)
120 0
|
算法 C++ Python
【每日算法Day 63】LeetCode 第 179 场周赛题解
起床打开 leetcode,准备看看今天搞点啥题目水一水的,突然发现周赛还剩 1 小时整。看了眼题目也都挺简单的,就把 4 道题都做掉了。
|
算法 C++
【每日算法Day 77】LeetCode 第 181 场周赛题解
【每日算法Day 77】LeetCode 第 181 场周赛题解
|
算法 C++ Python
每日算法系列【LeetCode 825】适龄的朋友
每日算法系列【LeetCode 825】适龄的朋友
|
机器学习/深度学习 人工智能 算法
LeetCode 周赛 345(2023/05/14)体验一题多解的算法之美
大家好,我是小彭。这场周赛是 LeetCode 第 345 场单周赛,整体难度不高,我们使用一题多解的方式强化练习。
130 0
|
算法 测试技术 Android开发
LeetCode 周赛 332,在套路里摸爬滚打~
大家好,今天是 3T 选手小彭。上周是 LeetCode 第 332 场周赛,你参加了吗?算法解题思维需要长时间锻炼,加入我们一起刷题吧~
88 0
|
机器学习/深度学习 人工智能 算法
牛客寒假算法基础集训营1 思考+题解
众所周知,2022年是四年一度的世界杯年,那么当然要整点足球题。本题需要你模拟一次点球大战。 假设对战双方为A和B,则点球大战中双方会按照ABABABABAB方式来罚点球,即两队交替罚点球、各罚五次、A队先罚。点球有罚进和罚不进两种结果,罚中的一方加一分。
100 0
|
机器学习/深度学习 人工智能 C++
C/C++之(三)洛谷刷题基础 上
C/C++之(三)洛谷刷题基础 上
257 0
C/C++之(三)洛谷刷题基础 上
|
机器学习/深度学习 C++
C/C++之(四)洛谷刷题基础
C/C++之(四)洛谷刷题基础
829 0
C/C++之(四)洛谷刷题基础
|
C++
C/C++之(二)洛谷刷题基础 中
C/C++之(二)洛谷刷题基础 中
272 0