首页 > 其他分享 >河南省赛ccpc

河南省赛ccpc

时间:2024-08-03 21:59:21浏览次数:15  
标签:return no 河南省 ll ccpc cin int dp

## F.优秀字符串

题意:有n个字符串找出优秀字符串的个数。优秀字符串的定义:长度为5,第三个字符和第五个字符相同,前四个字符互不相同。

分析:直接模拟即可

代码:

```
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;cin>>n;int ans=0;
    while(n--){
        string s;cin>>s;
        int len=s.size();
        if(len==5&&s[0]!=s[1]&&s[0]!=s[2]&&s[0]!=s[3]&&s[1]!=s[2]&&s[1]!=s[3]&&s[2]!=s[3]&&s[2]==s[4]){
            ans++;
        }
    }
    cout<<ans<<endl;
}
```

## M.有效算法

题意:给定数组a和b,将ai 变成满足|ai−x|≤k×bi 的任意整数x。

求出最小的非负整数k,使得ai所有的数相等。

分析:二分查找符合条件的k,每查找一个k都会遍历数组a,并且x会有一定区间,只要每次区间和上一次区间相交,就继续遍历,如果中途有不相交,就是不符合要求。

代码:

```
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=3e5+10;
ll a[N],b[N],n;

ll f(ll x){
    ll x1=-0x3f3f3f3f,x2=0x3f3f3f3f;
    for(int i=1;i<=n;i++){
        ll c=a[i]-x*b[i];
        ll d=a[i]+x*b[i];
        if(d<x1||c>x2)return 0;
        x2=min(x2,d);
        x1=max(c,x1);
        if(x1>x2)return 0;
    }
    return 1;
}
void sol(){
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=n;i++)cin>>b[i];
    ll l=0,r=0x3f3f3f3f;
    while(l<r){
        ll mid=(l+r)/2;
        if(f(mid)==1)r=mid;
        else l=mid+1;
    }
    cout<<l<<endl;
}
int main(){
    int t;cin>>t;
    while(t--)sol();
    return 0;
}
```

##  L. Toxel 与 PCPC II(dp)

题意:一共有n行,m行有bug,ai代表第i行有bug,如果i行内存在bugx个,则需要x^4秒来修复,运行i行代码需要i秒

分析:设dpi为前i行最少需要的时间。由于四次方的函数增长速度极快,选取向上四五十行即可。核心代码:

```
dp[i]=min(dp[i],dp[j]+a[i]+1ll*(i-j)*(i-j)*(i-j)*(i-j));
```

代码:

```
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+10;
ll a[N],dp[N];
int main(){
    int n,m;cin>>n>>m;
    for(int i=1;i<=m;i++)cin>>a[i];
    for(int i=1;i<=m;i++)dp[i]=1e18;
    for(int i=1;i<=m;i++){
        for(int j=i-1;j>=max(0,i-50);j--){
            dp[i]=min(dp[i],dp[j]+a[i]+1ll*(i-j)*(i-j)*(i-j)*(i-j));
        }
    }
    cout<<dp[m]<<endl;
    return 0;
}
```

K.树上问题

题意:有一颗由n个节点组成的无根树,美丽节点:该节点作为根时,对于除根节点以外的所有节点,其 点权都不小于其父亲节点的点权的 二分之一。计算多少个美丽节点。
分析:no数组为以该点为根,整棵树中不能通过的路径数量,dfs1存储no,dfs2将no数组中原本存储的以该点为根的子树中不能通过的路径数量更新为以该点为根的整棵树不能通过的路径数量

代码:

```
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,ans=0,no[N],a[N];
vector<int>p[N];
int dfs1(int u,int v){
    for(auto x:p[u]){
        if(x==v)continue;
        no[u]+=dfs1(x,u)+(a[x]*2<a[u]);//更新当前节点 u 的符合条件的节点数量
    }
    return no[u];
}
void dfs2(int u,int v){
    ans+=(no[u]==0);//儿子们没有一个不符合条件
    for(auto x:p[u]){
        if(x==v)continue;
        no[x]=no[u]-(a[x]*2<a[u])+(a[u]*2<a[x]);//更新子节点 x 的符合条件的节点数量
        dfs2(x,u);
    }
}
void sol(){
    cin>>n;
    ans=0;
    for(int i=1;i<=n;i++){
        p[i].clear();
        no[i]=0;
    }
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=2;i<=n;i++){
        int u,v;cin>>u>>v;
        p[u].push_back(v);
        p[v].push_back(u);//建树
    }
    dfs1(1,0);
    dfs2(1,0);
    cout<<ans<<endl;
}
int main(){
    int t;cin>>t;
    while(t--)sol();
    return 0;
}
```

标签:return,no,河南省,ll,ccpc,cin,int,dp
From: https://blog.csdn.net/m0_74310050/article/details/140873841

相关文章

  • 「CCPC 2023 北京市赛」史莱姆工厂
    由于每次合并可以刻画为向外延伸,那么考虑区间\(\text{dp}\),设\(dp_{l,r,m,c}\)表示考虑了\([l,r]\)且剩下了一个质量为\(m\in[0,K)\)颜色为\(c\)的史莱姆的答案。状态过大且转移方程不便于优化而考虑优化状态,由于对于一个极短的需要合并成一个史莱姆的区间\([p,q]\),......
  • 题解:P10043 [CCPC 2023 北京市赛] 广播
    博客使用更佳:Myblog题目传送门这道题是一个标准的dp了,只不过它要倒序来做。还是分三步。初值:初值想必都知道吧,若要求最小值,就把初值设成无穷大,\(dp_{0,i}\)和\(dp_{i,0}\)都要设成\(i\),\(dp_{0,0}\)一定要赋值成\(0\),这是本人亲自犯过的错误QwQ。状态:\(dp_{i,j}......
  • [CCPC2022 广东] XOR Sum
    数位dp看到这样求和价值的计算,考虑可不可以交换求和符号或者改变计算方式。这题中的位运算使我们考虑按位计算贡献,价值可以写成:\[f(A)=\sum_{i=0}2^i\timesc_i\times(k-c_i)\]其中\(c_i\)表示第\(i\)位上为\(1\)的\(a_i\)数量。题目第二个要求即\(f(A)=n\)。考......
  • 美丽世界(河南省三门峡)
           ......
  • 暑期特训——2023河南省赛
    A(模拟)题目大意输入输出题目思路枚举下标i,从左往右枚举,直到出现重复字符判断s[i+1:]是否是回文串注意:题目中说a和b是非空的题目代码fromsysimportstdin,setrecursionlimitsetrecursionlimit(100000)input=lambda:stdin.readline().strip()r1=lambda:......
  • CCPC2022 Guangzhou Onsite
    大概按题目难度顺序排序。这篇题解可能没那么口胡。被dead_X称为全是签到题。EElevator相当于每个电梯在\(-x_i\),每次可以把最大的,编号最小的值减一,要求使得\(i\)是编号最小的最大值的步数。那显然是都怼到\(-x_i\)处然后算一算有多少编号比\(i\)小的即可。这个可以......
  • 2023 Jiangsu Collegiate Programming Contest, National Invitational of CCPC (Huna
    题目思路来源乱搞ac题解枚举gcd,gcd一定是x的因子,由于lcm+gcd=x,有lcm/gcd+1=x/gcd,还有lcm/gcd>=1枚举lcm/gcd=y,显然如果gcd>1,让gcd和lcm同除以gcd即可,所以可以认为gcd=1,问题转化为,大小为k的集合,k个不同的数,满足gcd=1,且lcm=y的方案数,然后写了个大暴力容斥,没想到过了…......
  • 郑州2024-ccpc-赛后总结-crf
    郑州邀请赛这一场整体打的很不好,差一点多开出一题,罚时也不理想,离国银省金就差一点。前两个小时的状态还是可以的,签到题写的并不慢,中间几道中档题出思路也很快。但是到了比赛中期状态就不好了,有一道稳稳能写出的题目因为一行代码的错误导致交了三次才过,浪费了很多罚时,也很打击士气......
  • SCCPC 2024 游记
    省流:都是uuz的问题比赛前晚5.2h幽默睡眠。9点开考,然后uuz签到失败,byd这都要吃一发罚时。然后开考前1hnit给出了3个假做法,看错了两个题/strongzhicheng稳定发挥,屠杀了剩下的签到和模拟题。期间跟uuz讨论G,发现怎么写都是\(\log^3\)的逆天复杂度,讨论了半个......
  • SCCPC2024 游记
    打了一堆板子,一个都没用上。队友:zhicheng,nityacke开场发现H是签到,NIT签了。然后盯F(圆向某个方向运动,问存不存在一个时刻使得全在长方形之内),发现不外乎一堆二次方程,直接冲。但是zhcheng发现这是巨大蠢题,我的做法是什么极霸东西。这个时候NIT胡了个假B。我去看(给若干\(......