栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2022/6/1

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2022/6/1

福建农林

派蒙之灵

自己第一眼没有很好的处理方法,其实是对十转N,N转十,的模板,不熟练

N转十则是用秦九shao,res=res*b+str-'0';

正解:十转N递归反转,此题不需要求N进制形式,只需统计字母圈的个数

开个mp存下状态,直接连续赋值,统计就好

int a[16];
int main()
{
    a[0] = a[6] = a[9] = a[13] = 1;
    a[8] = a[11] = 2;
    int n, sum = 0;
    cin >> n;
    while (n)
    {
        sum += a[n % 16];
        n /= 16;
    }
    cout << sum;
    return 0;
}

派蒙家的荧女仆

正解:简单模拟,按题意模拟就行

int q[N];
void solved()
{
    int n;cin>>n;
    int mx=0,cnt=0;
    map mp;
    for(int i=1;i<=n*2;i++)
    {
        cin>>q[i];
        mp[q[i]]++;
        cnt++;
        if(mp[q[i]]==2)cnt-=2;
         
        mx=max(mx,cnt);
    }
    printf("%dn",mx);
    ;
}

派蒙的奇妙冒险------石之海

涂色,求最小涂色方案

正解:列出多组数据,发现答案只能是1或者2,特判就能过

void solved()
{
    int n;cin>>n;
if(n>=3)puts("2");
    else puts("1");
派蒙游戏世界对旅行荧妹很不友好

构造,贪心题目,只要输出合理就能过

正解:求i的等差数列前缀和,越过特判,否则有解,此时的迭代器-1就是Sn=a+b,

给出构造从这个迭代器往下枚举(因为解一定是来自某个i),求a的解所以>=a输出,一定可以找到这样一个序列

void solved()
{
    int a,b;cin>>a>>b;
     
    int sum=a+b;
     
    int cnt=0;
    int i=0;
    for( i=1;;i++)
    {
        cnt+=i;
        if(cnt>=sum)break;
    }
     
    if(cnt!=sum){puts("NO");return;}
    else{
        puts("YES");
        printf("%dn",i);
            for(int j=i;j>=1;j--)
            {
                if(a>=j)printf("%d ",j),a-=j;
            }
            puts("");
    }
     
}

派蒙的风花,从下面看?还是从侧面看?

差分,自己写没考虑数据是查找多个差分值,这个时候就要离散化了。

正解:离散化差分,二分(很神奇)直接枚举l下标和r下标的差值,(upper,lower从英文字面意思理解)

把l,r,q[i]处理区间全加入一个vector排序去重

vector存一下枚举的l,r,用于差分操作

离散化从0往后取点,再对新数组差分,前缀和

int n,m;
int b[N],q[N];
vector v1;
vector alls;
  
int find(int x){
    int l=0,r=v1.size()-1;
    while(l>1;
        if(v1[mid]>=x) r=mid;
        else l=mid+1;
    }
    return l;
}
  
 
void solved()
{
    int n,m;cin>>n>>m;
    for(int i=1;i<=n;i++){
        int l,r;
       cin>>l>>r;
        v1.push_back(l);
        v1.push_back(r);
        alls.push_back({l,r});
    }
      
    for(int i=1;i<=m;i++){
        cin>>q[i];
        v1.push_back({q[i]});
    }
      
    sort(v1.begin(),v1.end());
    v1.erase(unique(v1.begin(),v1.end()),v1.end());
      
    for(int i=0;i

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/950351.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号