军事2014-11-2 NOIP模拟赛1

提起词,诸多丁一定会清楚它们分为婉约派和豪放派。也还晓得每个派的表示人物。不过好早我就算发现了,这些老牛之大神可以玩转两种植风格。超脱诗人婉约起来更让人口痛心,九曲回肠。婉约诗人豪放起来更为吃人产生种植抛头颅洒热血的豪情澎湃。

Noip2009 团结模拟赛
万一题目理解困难,请自行阅读要参考样例。
内存限制均为 256MB,时间限定均为 1s。
发题人不见面 故意 在题材中安圈套,但要好小心程序的是。
IO 文件名(.in/.out)与程序名为(题目叫做)相同。
对此具有语言都未使优化增选项。
对 Pascal 选手,打开-Ct –Cr –Ci –Co 四独编译开关。
祝福各位答题顺利,谢谢。

01   苏轼

LazyChild 黑 OJ

(blackoj.pas/c/cpp)

LazyChild 开了同样下“善良 OJ” 。但多数口且未知道,这实质上是家黑
OJ。亲爱的同校,请
决不奇怪,古时候有黑店,现代干什么非克闹黑 OJ 呢?每 AC
一鸣题,网站虽会自动在电
头脑上安一栽木马。LazyChild 通过窃取信息得到收入(如网游帐号、OI
资料、YuanY 和
TT 的相片等等) 。
用作一如既往称名黑客,老 Z 某日突然发现, “善良
OJ”上之木马,自己电脑上还尚未。这不过十
分开给他过意不失去。老 Z 决定通过多 A 题,来增长自己电脑的病倒毒库。
透过调查,老 Z
发现,很多木马是休克存活之。比如“和谐”木马与“团结”木马,两者
不得不任选其一。然而,老 Z
是单完美主义者,他想要协调的病倒毒库尽可能增加。
老 Z 不懈的追求最终打动了达成龙。天上的神仙(半仙?)
“牛人雨”给这题目不怎么小下滑了
少数难度。神仙规定,对于 n
种木马,有且仅发生(n-1)对匪能够存活,并且于每种木马,都包藏
在至少一个木马与之无可知存活。
老 Z 不在乎自己 AC 多少书。请告诉他,他极度多能打“善良
OJ”上抱木马的个数。
【输入】
先是执,一个正整数 n,表示木马个数。
剩余(n-1)行,每行一对木马,表示他们不能够存活。
(保证同一的木马可以共存,任意不同两
执行的讲述不齐)
木马编号从 0 至(n-1)
【输入】
一行,老 Z 最多获得木马的个数。你得看开始经常莫任何木马。
【输入样例】
3
0 1
1 2
【输出样例】
2
【数据规模】
对于 100%的数据,1<=n<=200

军事 1军事 2

#include<iostream>
#include<cstdio>
using namespace std;
#define maxn 210
int n,num,head[maxn],f[maxn][2];
struct node{
    int to,pre;
}e[maxn*2];
void Insert(int from,int to){
    e[++num].to=to;
    e[num].pre=head[from];
    head[from]=num;
}
void dfs(int now,int father){
    f[now][0]=0;f[now][1]=1;
    for(int i=head[now];i;i=e[i].pre){
        int to=e[i].to;
        if(to==father)continue;
        dfs(to,now);
        f[now][0]+=f[to][1];
        f[now][1]+=f[to][0];
    }
}
int main(){
    freopen("blackoj.in","r",stdin);freopen("blackoj.out","w",stdout);
    scanf("%d",&n);
    int x,y;
    for(int i=1;i<n;i++){
        scanf("%d%d",&x,&y);
        x++;y++;
        Insert(x,y);Insert(y,x);
    }
    dfs(1,0);
    int ans=max(f[1][0],f[1][1]);
    printf("%d",ans);
    fclose(stdin);fclose(stdout);
    return 0;
}

20分 树形dp

军事 3军事 4

#include<iostream>
#include<cstdio>
using namespace std;
#define maxn 210
int n,num,head[maxn],f[maxn][2];
bool vis[maxn];
struct node{
    int to,pre;
}e[maxn*2];
void Insert(int from,int to){
    e[++num].to=to;
    e[num].pre=head[from];
    head[from]=num;
}
void dfs(int now,int father){
    vis[now]=1;
    f[now][0]=0;f[now][1]=1;
    for(int i=head[now];i;i=e[i].pre){
        int to=e[i].to;
        if(to==father)continue;
        dfs(to,now);
        f[now][0]+=max(f[to][0],f[to][1]);
        f[now][1]+=f[to][0];
    }
}
int main(){
    freopen("blackoj.in","r",stdin);freopen("blackoj.out","w",stdout);
    //freopen("Cola.txt","r",stdin);
    scanf("%d",&n);
    int x,y;
    for(int i=1;i<n;i++){
        scanf("%d%d",&x,&y);
        x++;y++;
        Insert(x,y);Insert(y,x);
    }
    dfs(1,0);
    int ans=max(f[1][0],f[1][1]);
    printf("%d",ans);
    //fclose(stdin);fclose(stdout);
    return 0;
}

100分
还是树形dp,刚才有只细节错了

 

豪放

世界人民特别融汇

(greatunion.pas/c/cpp)

当今,世界之主题是和平及进步。社会学博士老 Z
认为,要贯彻和平发展,首先要落实世界
线苍生非常融汇。
世界上发 n 个人。他们胸前及暗中各有一个自然数,大于或顶 0 且低于或当
6。两个身
及含蓄某个相同数字的食指管随身同样的数字合在一起,就落实了并肩作战。比如,(0,1)(1,2)就实
现了互联,而(0,1)(2,1)和(0,0)(1,2)都不是合力。把数合在一起的计,是衷心靠胸、背倚坐、
背着倚胸或胸靠背。
吁判断世界公民是否实现团结。如果能,请输出大团结的实现方案。
【输入】
率先执行,一个正整数 n,表示世界上起 n 个人。
剩余 n 行,每行是因此空格隔开的星星只自然数,大于等于 0 且低于等于
6,第(1+i)行代表第 i
民用胸前及暗的数字。
【输出】
如若大融汇可以实现,输出 n
行,每行两只空格隔开的数字。第一独凡是丁的号(同输入) ;
次只凡是“-”或“+” , “+”表示是人口心头在前,背在晚,
“-”反之。人们以你输出的沿
先后以及当的矛头打眼前到后站立。具体参见样例。
要老融汇不可知促成,输出一行“No Solution” (不包含引号) 。
【样例输入】
5
1 2
2 4
2 4
6 4
2 1
【样例输出】
2 –
5 +
1 +
3 +
4 –
【数据规模】
对于 100%的数据,1<=n<=100

军事 5军事 6

#include<iostream>
#include<cstdio>
#define maxn 110
using namespace std;
struct node{
    int x,y;
}a[maxn*2];
int n,ans[maxn*2],cnt;
bool vis[maxn*2],flag;
void dfs(int pos){
    if(flag==1)return;
    if(pos==n+1){
        for(int i=1;i<=n;i++){
            if(ans[i]>n)printf("%d -\n",ans[i]-n);
            else printf("%d +\n",ans[i]);
        }
        flag=1;
        return;
    }
    if(pos>1){
        node pre=a[ans[pos-1]];
        int now=pre.y;
        for(int i=1;i<=n;i++){
            if(a[i].x==now&&!vis[i]){
                vis[i]=1,vis[n+i]=1;
                ans[pos]=i;
                dfs(pos+1);if(flag)return;
                vis[i]=0,vis[n+i]=0;
            }
            int ii=i+n;
            if(a[ii].x==now&&!vis[ii]){
                vis[ii]=1;vis[ii-n]=1;
                ans[pos]=ii;
                dfs(pos+1);if(flag)return;
                vis[ii]=0;vis[ii-n]=0;
            }
        }
    }
    else{
        for(int i=1;i<=n;i++){
            vis[i]=1,vis[n+i]=1;
            ans[pos]=i;
            dfs(pos+1);
            if(flag)return;
            vis[i]=0,vis[n+i]=0;

            int ii=i+n;
            vis[ii]=1;vis[ii-n]=1;
            ans[pos]=ii;
            dfs(pos+1);
            if(flag)return;
            vis[ii]=0;vis[ii-n]=0;
        }
    }
}
int main(){
    //freopen("Cola.txt","r",stdin);
    freopen("greatunion.in","r",stdin);freopen("greatunion.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d%d",&a[i].x,&a[i].y);
        a[i+n].x=a[i].y,a[i+n].y=a[i].x;
    }
    dfs(1);
    if(!flag)
        printf("No Solution");
    fclose(stdin);fclose(stdout);
    return 0;
}

80分 暴力

军事 7军事 8

/*
    以自然数0至6为顶点,以每个人为边,建图。求出图上的欧拉回路或欧拉路即可。
*/
#include<iostream>
#include<cstdio>
using namespace std;
#define maxn 110
int n,du[maxn],map[maxn][maxn],ans[maxn],tot;
bool vis[maxn];
struct node{
    int x,y;
}a[maxn];
void Eular(int now){
    for(int i=1;i<=7;i++){
        if(map[now][i]){
            du[now]--;du[i]--;
            map[now][i]--;map[i][now]--;
            Eular(i);
        }
    }
    ans[++tot]=now;
}
int main(){
    freopen("greatunion.in","r",stdin);
    freopen("greatunion.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d%d",&a[i].x,&a[i].y);
        a[i].x++;a[i].y++;
        du[a[i].x]++;du[a[i].y]++;
        map[a[i].x][a[i].y]++;
        map[a[i].y][a[i].x]++;
    }
    int cnt=0;
    for(int i=1;i<=7;i++)
        if(du[i]&1)cnt++;
    if(cnt!=2&&cnt!=0){
        printf("No Solution");
        return 0;
    }
    int S;
    if(cnt){
        for(int i=1;i<=7;i++){
            if(du[i]&1){S=i;break;}
        }
    }
    else S=1;
    Eular(S);
    for(int i=1;i<=7;i++){
        if(du[i]){
            printf("No Solution");
            return 0;
        }
    }
    for(int i=1;i<tot;i++){
        for(int j=1;j<=n;j++){
            if(vis[j])continue;
            if(ans[i]==a[j].x&&ans[i+1]==a[j].y){
                printf("%d +\n",j);
                vis[j]=1;
                break;
            }
            else if(ans[i]==a[j].y&&ans[i+1]==a[j].x){
                printf("%d -\n",j);
                vis[j]=1;
                break;
            }
        }
    }
    return 0;
}

100分 欧拉路

 

江城子  密州田

老夫聊发少年狂,左牵黄,右擎苍,锦帽貂裘,千骑卷平冈。为报倾城随太近,亲射虎,看孙郎。

酒酣胸胆尚开张,鬓微霜,又何妨?持节云中,何日遣冯唐?会挽雕弓如满月,西北望,射天狼。

擒贼先擒王

(king.pas/c/cpp)
公元 3941 年 10 月,宇宙中最好富有侵略野心的 X
星人发现了地球。他们坐月亮为据点,向人
看似开战。同年 12 月 7 日,X
星人一次等得逞之偷袭,使人类军队中重创,以至在军事力量
高达,人类无法同 X 星人抗衡。
X 星人正陶醉在偷袭成功之欢乐着经常,老
Z——人类社会之一等间谍,秘密地潜入月球,盗
收获了 X 星军队的一样客机密军事材料。
WREAMC(World Resist Extraterrestrial Aggression Military
Committee,世界反外来入侵军事
委员会)于 12 月 8 日凌晨 4 时接受了及时卖机密材料,通过 3
小时的钻,WREAMC 有足
的证据证实该材料中含 了 X 星军队有成员的个人档案。据《宇宙法》513
漫长:档案是
宇宙生物之绝无仅有标识。然而,WREAMC 发现,X
星军队档案集中有些档案所讲述的始末以
抵押齐 是平的。换句话说,某些成员的个人档案在该档案集中已经屡次起。
WREAMC 猜想,某个成员的档案在拖欠档集出现的频率更加强, 该成员以 X
星军队中的位置
尽管更为强。而档案出现频率高的,自然就是 X
星军队的首领(你不要多疑该猜想的不利,
咱理应相信 WREAMC 成员的直觉) 。
恰恰所谓“擒贼先擒王”,在人类军事力量处于劣势的景下,WREAMC
决定集中力量,消灭
X 星军队的领袖。你的天职就是依据当时卖档案集,帮助 WREAMC 找到 X
星军队领袖的档案
案。
为便利你的研究,WREAMC 已经用档案集简化成了巴科斯-瑙尔范式(BNF):
<档案> ∷= ( <属性> | <子女档案> { , <属性> |
<子女档案> } )
<子女档案> ∷= <档案>
<属性> ∷= <数字> { <数字> }
<数字> ∷= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
流淌:其中“∷=”表示定义为,“|”表示或,“{…}”内之宗好再次任意多次还是不出新。
X
星人的个人档案和人类的如出一辙,包括了自的各种性能。为了方便研究,我们所以不同之整
几度来表示不同之属性,数值相同则属性相同。 (注意是数值,不是字符串)
及人类档案略有不同,X 星人的个人档案中尚隐含他亲生子女的个人档案。
X 星人的个人档案中之属性与儿女档案都或出重,这些又用于忽略。
X 星人的个人档案中的性质和儿女档案可以按照擅自顺序以档案被起。
【输入】
输入文件之第 1 行事档案集中档案的条数 n(1≤n≤100)。
输入文件的第 2 实施到第 n+1 行每行表示一致漫长档案。
各级条档案的长不越 100 字符。
输入文件被从来不多余的空格。
输入文件被保证 X 星军队受到来且仅来一个首脑。
【输出】
输出文件来少执行
输出文件首先行一个平头,表示 AAA 军队领袖档案在档案集中出现的次数。
出口文件第二表现 X 星军队领袖在输入文件首不善面世的档案的序号。
【输入输出样例】
king.in
6
(3,3,(01,3),2,(2,3),(3,2))
(2,(3,1),3,(3,2),(1,3,1))
(2,3,(3,1),(1,3,1))
(((1231231231)))
((1231231231))
(1231231231)
king.out
2
1

婉约

机房人民非常融汇

(smallunion.c/cpp/pas )
近日,机房出了一个免团结分子:Dr.Weissman。他每每欺骗同学等吃等同种“教授糖豆”
,使
同学等神志不清,殴打他人,砸烂计算机,破坏机房团结。幸运地,一个跟谐家认清了
Dr.Weissman 的真相。机房人民并肩作战在齐,共同对抗 Dr.Weissman
及“教授糖豆” 。
同学等很享社会责任感:他们怕“教授糖豆”流向社会,导致乱。于是,刚才提到
的协调家身先士卒,为了试验,品尝“教授糖豆” 。
每个“教授糖豆”的性能都有所不同。同志等已研究出每个糖豆对人口的影响。具体地,每
独糖豆都发一个破坏值,吃少这粒糖豆后,身先士卒的协调家会对机房造成一定之毁坏,破
十分程度也先前攒的破坏值加上本次食用糖豆的破坏值,而且这粒“教授糖豆”的毁值会
加入累积。为了减小实验造成的损坏,同学等准备了几粒“治疗糖豆“,功能是无条件将劳动
积的“破坏值”清零。
由试验要求,和谐家只能按照给定的一一吃少“教授糖豆”
,但可以天天吃少一粒或多发
“治疗糖豆” 。
您会帮以及谐家同志尽量减多少试验所导致的毁伤也?
【输入】
先是执行,两个数,用空格,分隔开,一个 n,一个 m。 (n,m 都为正整数。 )n
表示“教授
糖豆”的数码,m 代表“治疗糖豆”的数额。
剩余 n 行,每行 1
个刚整数,表示“教授糖豆”的破坏值。和谐家要按给定的依次,一
差一个,吃少所有“教授糖豆” 。
【输出】
一行,一个频,表示实验造成的最好小坏。
【输入样例】
3 1
1 2 3
【输出样例】
7
【数据规模】
对于 100%的数据,1<=n<=100,m<=n
有破坏值的加以和小于 10^9。

军事 9军事 10

#include<iostream>
#include<cstdio>
using namespace std;
#define maxn 110
int n,m,a[maxn],ans=0x7fffffff;
void dfs(int pos,int sum,int now,int cnt){
    if(pos==n+1){
        ans=min(ans,now);
        return;
    }
    dfs(pos+1,sum+a[pos],now+sum+a[pos],cnt);
    if(cnt<m)dfs(pos+1,a[pos],now+a[pos],cnt+1);
}
int main(){
    freopen("smallunion.in","r",stdin);freopen("smallunion.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    dfs(1,0,0,0);
    cout<<ans;
    return 0;
}

30分 暴力

军事 11军事 12

/*
    f[i][j][k]表示吃了i个糖,j个药,最后一个药在吃k个糖前吃了的最小代价
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<set>
#define ll long long
#define inf (1LL<<60)
using namespace std;
int read()
{
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
int n,m;
ll ans=inf,f[105][105][105],a[105],sum[105];
ll cal(int l,int r)
{
    if(l==0)return sum[r];
    return sum[r]-sum[l-1];
}
int main()
{
    //freopen("smallunion.in","r",stdin);
    //freopen("smallunion.out","w",stdout);
    n=read();m=read();
    for(int i=1;i<=n;i++)a[i]=read();
    for(int i=1;i<=n;i++)sum[i]=sum[i-1]+a[i];
    for(int i=0;i<=n;i++)
        for(int j=0;j<=n;j++)
            for(int k=0;k<=n;k++)
                f[i][j][k]=inf;
    f[0][0][0]=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=0;j<i;j++)
            for(int k=0;k<=i;k++)
                f[i][j][k]=f[i-1][j][k]+cal(k,i);
        for(int j=1;j<=i;j++)
            for(int k=0;k<i;k++)
                f[i][j][i]=min(f[i][j][i],f[i-1][j-1][k]+a[i]);
    }
    for(int i=0;i<=m;i++)
        for(int j=0;j<=n;j++)
            ans=min(ans,f[n][i][j]);
    printf("%lld",ans);
    return 0;
}

100分 动态规划

 

江城子

十年生死两广大,不思量,自难忘主里孤坟,无处话凄凉。纵使相逢应不识,尘满面,鬓如霜。

夜来幽梦忽还乡,小轩窗,正梳妆。相顾无言,惟有泪千行。料得年年肠断处,明月夜,短松冈。

暨为《江城子》,一篇豪放,一篇婉约。一首侠骨,一首柔情。一篇豪情壮志,一篇悲痛。

《江城子 
密州田》写的凡苏轼刚任密州知州外出打猎的状,同样是上阙写景,下阙抒情。但全都文行云流水,酣畅淋漓。第一句子就感人。“老夫聊发少年狂,左牵黄,右擎苍。”此时苏轼40春。这无异于句很有画面感,我虽回忆一个闹先生意气的中年叔,骑在马上,在旷野上疯奔。好一个“狂”字。这吃自己回忆了杨过,最后之初五决,黄蓉为他了一个“狂”字。狂是呀,是翩翩,是宏伟,是我行我素。列一样词都露出漏着苏轼的豪爽。千骑车平岗。在我设想,应该是坏远就是会听见马蹄声,震耳欲聋。无看见马群,只看见尘土被扬起来。真可谓席卷而来!
大口喝酒大口吃肉,头发白了又怎,还有射天狼的无畏气魄。

《江城子
 十年生死两开阔》同样是苏轼于密州任知州之早晚写的。但作风一模一样转,让人口落泪。我首先破沾就首词的时不是于教材里。而是在金庸的《神雕侠侣》里。杨过得知黄蓉骗他历来无南海神尼后望了。下面要看原稿。

外似乎行尸走肉一般踉跄下山,一日同样夜不负不动,但苏唇燥舌焦,于是走至小溪之别,掬水而饮,一低头,猛见水中倒影,两鬓竟然白了平切开。他此时三十六秋,年方壮盛,不该发就白,更以内功精纯。虽然一样远在艰苦颠沛,但向来头上等同清银丝也随便,突见两鬓如霜,满脸尘土,几乎不识得自己外貌,伸手在额角鬓际拔下三到底毛发来,只见三到底被倒有半点干净是白之。

霎时之间,心中想起几句词来:“十年生死两广大,不思,自难忘。千里孤坟,无处话凄凉。纵使相逢应不识,尘满面,鬓如霜。”这是苏东坡悼亡之词。杨过一生潜心武学,诗词学的免多,数处前当江南一模一样小有些酒吧壁上突发性看看题在当时首词,但觉情深意真,随口念了几百分之百,这时忆及,已无记得是哪个所犯。心想:“他是十年生死两广,我及龙儿已相隔一十六年了。他还有只孤坟,知道爱妻埋骨之所,而我倒并老婆葬身何处呢自不知。”接着又想到马上歌词之下半阕,那是作者一后梦到亡妻的地步:“夜来幽梦忽还乡,小轩窗,正梳妆;相对无言,惟有泪千行!料想年年肠断处,明月夜,短松岗。”不由得心中大恸:“而己,而自己,三日老三夜不能够死亡,竟连梦为举行不交一个!”

苏轼对妻子的思念起差不多特别,就比如杨过对有些龙女的想念。二者不相上下。不曾想了,如此之很文豪悲伤起来呢只好”惟有泪千行”。体会的起他的豪爽,感受有他的婉约。其实在我看来,这种婉约之架里发漏着滚滚。外非像“春花秋月何时了”的无病呻吟。也未曾“更那堪冷落清秋节”的有感而发。而是实实在在的指向死亡的太太的思念。豪放之状了下。只不过用词比含蓄而已。

02   陆游

豪放

十一月四日风雨大作

僵卧孤村不自哀,尚思也国戍 轱辘台.

夜阑卧听风吹雨,铁马冰河适合梦乡来。

书愤

早岁那么亮世事艰,中原北望气若山。

楼船夜雪瓜洲渡,铁马秋风大散关。

狼吞虎咽上长城空自许,镜中衰鬓已先斑。

出征一表真名世,千充满谁堪伯仲间!

陆游,爱国诗人,他的豪放大部分凡军上主战派。宋朝,一个舅悄然外患。造就了如此多的不羁主战派诗人。极力抗金,留下了大多是战地上的豪放。然而他的爱恋却以是那么的不幸,在沈园留下了过去绝唱的婉约词《钗头凤》

红酥手,黄縢酒,满城春色宫墙柳。东风恶,欢情薄。一抱愁绪,几年去索。错,错,错!

情如原来,人空瘦,泪痕红浥鲛绡透。桃花落,闲池阁。山盟虽在,锦书难托。莫,莫,莫!

陆游和内唐婉没有会以同,是为母亲对唐婉的无好听,无奈休妻,多年后以沈园相遇。其中悲苦,顿时涌上衷心。整首词来场景有东西,有满满的回忆,有错误的操纵。最后不得不无可奈何之服。莫莫莫,是没法的唉声叹气吧。

当陆游写了就篇词后,唐婉也如出一辙犯了首《钗头凤》

人情薄,人情恶,雨送黄昏花易落。晓风干,泪痕残。欲笺心事,独倚斜阑。难,难,难!

人成各,今非昨,病魂常如秋千索。角声寒,夜阑珊。怕人寻问,咽泪装欢。瞒,瞒,瞒!

发表评论

电子邮件地址不会被公开。 必填项已用*标注