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;
}

[51Nod]NOIP2018提高组省一冲奖班模测训练(一)题解的更多相关文章

  1. [51Nod]NOIP2018提高组省一冲奖班模测训练(二)

    http://www.51nod.com/contest/problemList.html#!contestId=73&randomCode=4408520896354389006 还是原题大 ...

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

    链接 A.Anan的派对 题意:Anan想举办一个派对.Anan的朋友总共有 n 人.第i个人如果参加派对会得到 \(c_i\) 的快乐值,除他自己外每多一个人参加他会减少 \(d_i\) 的快乐值. ...

  3. [51Nod]NOIP2018提高组省一冲奖班模测训练(四)翻车记+题解

    链接 下午5点的时候,突然想起来有这个比赛,看看还有一个小时,打算来AK一下,结果因为最近智商越来越低,翻车了,我还是太菜了.上来10分钟先切掉了C和A,结果卡在了B题,唉. A.砍树 一眼题,两遍树 ...

  4. NOIP2018提高组省一冲奖班模测训练(六)

    NOIP2018提高组省一冲奖班模测训练(六) https://www.51nod.com/Contest/ContestDescription.html#!#contestId=80 20分钟AC掉 ...

  5. NOIP2018提高组省一冲奖班模测训练(五)

    NOIP2018提高组省一冲奖班模测训练(五) http://www.51nod.com/Contest/ContestDescription.html#!#contestId=79 今天有点浪…… ...

  6. NOIP2018提高组省一冲奖班模测训练(四)

    NOIP2018提高组省一冲奖班模测训练(四) 这次比赛只AC了第一题,而且花了40多分钟,貌似是A掉第一题里面最晚的 而且还有一个半小时我就放弃了…… 下次即使想不出也要坚持到最后 第二题没思路 第 ...

  7. NOIP2018提高组省一冲奖班模测训练(三)

    NOIP2018提高组省一冲奖班模测训练(三) 自己按照noip的方式考,只在最后一两分钟交了一次 第一题过了,对拍拍到尾. 第二题不会.考试时往组合计数的方向想,推公式,推了一个多小时,大脑爆炸,还 ...

  8. NOIP2018提高组省一冲奖班模测训练(二)

    比赛链接 NOIP2018提高组省一冲奖班模测训练(二) 今天发挥正常,昨天不在状态…… 花了很久A了第一题 第二题打了30分暴力 第三题投机取巧输出test1答案(连暴力都不知道怎么打,太弱了) 2 ...

  9. NOIP2018提高组省一冲奖班模测训练(一)

    比赛链接 https://www.51nod.com/contest/problemList.html#!contestId=72&randomCode=147206 这次考试的题非常有质量 ...

随机推荐

  1. Android 查看设备信息

    借助getprop.dumpsys来了解一些系统相关信息. 一.getprop adb shell cat /system/build.prop 文件中存放的是用于启动系统时需要的配置文件,通常可以通 ...

  2. 【Codeforces Round #422 (Div. 2) B】Crossword solving

    [题目链接]:http://codeforces.com/contest/822/problem/B [题意] 让你用s去匹配t,问你最少需要修改s中的多少个字符; 才能在t中匹配到s; [题解] O ...

  3. Struts2 全局结果集

    1.index,jsp <body> Result类型 <ol> <li><a href="user/user?type=1">返回 ...

  4. android 客户端 Cookie处理

    Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密). Cookie最早是网景公司的前雇员Lou Montul ...

  5. 【转载】jQuery弹出层始终垂直居中于当前屏幕

    一般网站上肯定有一些弹出框,不论弹出框的大小,都需要他在当前窗口垂直居中.之前手上就有一个jQuery的例子,后来才发现,他只能在第一屏垂直居中,如果滑动滚动条,弹出的框就在上方,不是很方便.请教朋友 ...

  6. JAVA学习书籍

    1 java编程思想(第四版) 2 head first servlet &jsp

  7. Codefroces 822C Hacker, pack your bags!

    C. Hacker, pack your bags! time limit per test 2 seconds memory limit per test 256 megabytes input s ...

  8. Perl线程介绍

    Perl 中的线程 本文首先概述了线程的概念和意义,接着回顾了 Perl 语言中对线程支持的演化历史,然后通过一系列示例重点介绍了 Perl 中线程的实现,数据的共享以及线程间的同步,最后归纳并总结了 ...

  9. MYSQL查询数据中通讯最多的两个人

    SELECT GREATEST( sender_id, recipient_id ) , LEAST( sender_id, recipient_id ) , COUNT( * ) AS aFROM ...

  10. C#最简单的登录Web服务

    因为演示程序,所以有下面问题: 1.password是明码传输. 本文在  C#建立最简单的web服务,无需IIS  的基础上完毕. 详细步骤: 一.RequestProcessor添加变量mLogi ...