[51Nod]NOIP2018提高组省一冲奖班模测训练(一)题解

http://www.51nod.com/contest/problemList.html#!contestId=72&randomCode=147206

原题水题大赛。。

A.珂朵莉的旅行

发现不管非叶子节点选什么,都可以改变叶子节点来满足条件,所以直接算即可

#include<bits/stdc++.h>
#define REP(i,a,b) for(int i(a);i<=(b);++i)
using namespace std;
typedef long long ll;
const int N=1e6+7,p=1e9+7;
int n,d[N];
inline int read(){char c;int w;
    while(!isdigit(c=getchar()));w=c&15;
    while(isdigit(c=getchar()))w=w*10+(c&15);return w;
}
int main(){
    n=read();
    REP(i,1,n-1){
        int x,y;x=read(),y=read();
        ++d[x];++d[y];
    }
    ll cnt=1,ans=0;
    REP(i,1,n)if(d[i]>1)(cnt<<=1)%=p;
    REP(i,1,n)if(d[i]==1)ans+=cnt<<1;else ans+=cnt;
    cout<<ans%p<<endl;
    return 0;
}

B.奈芙莲的序列

把原序列反过来做LIS

#include<bits/stdc++.h>
#define REP(i,a,b) for(int i(a);i<=(b);++i)
using namespace std;
typedef long long ll;
inline int read(){char c,p=0;int w;
    while(!isdigit(c=getchar()))if(c=='-')p=1;w=c&15;
    while(isdigit(c=getchar()))w=w*10+(c&15);return p?-w:w;
}
inline char smax(int&x,const int&y){return x<y?x=y,1:0;}
inline char smin(int&x,const int&y){return x>y?x=y,1:0;}
const int N=5e5+5;
int n,a[N],b[N],c[N],d[N];
int main(){
    n=read();
    REP(i,1,n)a[i]=b[i]=read();
    sort(b+1,b+1+n);int m=unique(b+1,b+1+n)-b-1;
    REP(i,1,n)c[n+i]=c[n-i+1]=lower_bound(b+1,b+1+m,a[i])-b;
    int len=1;d[1]=c[1];
    REP(i,2,n<<1){
        if(c[i]>d[len])d[++len]=c[i];else *lower_bound(d,d+len,c[i])=c[i];
    }
    cout<<len;
    return 0;
}

C.奈芙莲的护符

基础状压DP

#include<bits/stdc++.h>
#define REP(i,a,b) for(int i(a);i<=(b);++i)
using namespace std;
typedef long long ll;
inline char smax(int&x,const int&y){return x<y?x=y,1:0;}
inline char smin(int&x,const int&y){return x>y?x=y,1:0;}
int n,k,c[22][22],f[1<<21],g[22][1<<21],L[1<<21];
int main(){
    scanf("%d%d",&n,&k);if(n==k)return puts("0"),0;
    REP(i,1,n)REP(j,1,n)scanf("%d",&c[i][j]);
    REP(t,1,n)REP(i,1,n)REP(j,1,n)smin(c[i][j],c[i][t]+c[t][j]);
    const int st=(1<<n)-1;
    L[1]=0;
    REP(i,2,st)L[i]=L[i>>1]+1;
    memset(g,0x3f,sizeof g);
    REP(i,1,n){
        REP(s,1,st)if((s&(s-1))==0)g[i][s]=c[i][L[s&-s]+1];
        else g[i][s]=min(g[i][s&(s-1)],c[i][L[s&-s]+1]);    
    }
    memset(f,0x3f,sizeof f);
    int ans=f[0];f[0]=0;
    REP(s,0,st){
        int cnt=0;
        REP(i,1,n)if(s>>i-1&1^1)smin(f[s|(1<<i-1)],f[s]+g[i][st^s^(1<<i-1)]);
        
        else ++cnt;
        if(cnt==n-k)smin(ans,f[s]);
    }
    cout<<ans;
    return 0;
}

转载于:https://www.cnblogs.com/HolyK/p/9830183.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的体育馆管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此体育馆管理系统利用当下成熟完善的SpringBoot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理收货地址管理、购物车管理、场地管理、场地订单管理、字典管理、赛事管理、赛事收藏管理、赛事评价管理、赛事订单管理、商品管理、商品收藏管理、商品评价管理、商品订单管理、用户管理、管理员管理等功能。体育馆管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:体育馆管理系统;SpringBoot框架;Mysql;自动化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值