喵哈哈村的代码传说 1——4

链接:http://qscoj.cn/problem/35/

喵哈哈村的代码传说 第一章 冒泡排序

发布时间: 2017年3月11日 11:35   最后更新: 2017年3月11日 11:36   时间限制: 1000ms   内存限制: 128M

描述

“敢问这位兄台,为何这喵哈哈广场围了这么多人?”,一位年轻人模样的人问着旁边的卖报小哥。

卖报小哥一听,噗嗤一下,“这位兄弟,从你这问题来看,你可不是本地人。你可知今儿是什么日子?今天可是一年一度的挑战大会!”

“不不不,此言差矣,我是本地人,只不过离开的日子太久了罢了。”,这位年轻人仿佛叹了一口气,“罢了罢了,待我去看看这村子究竟变成了什么模样。”

卖报小哥哈哈大笑,明明一年轻人,装什么老头。卖报小哥接着吆喝起自己的报纸来。

说罢,这位年轻人便走进围观人群,开始观看起来。

---

台上打的正烈!

两个人影不停的在台上移动,互相出招、应对。

“看我一招冒泡排序!”,只见沈宝宝从怀中掏出自己的键盘,噼里啪啦的迅速敲了起来。

冒泡排序虽是黄阶低级的斗技,但是沈宝宝这一手冒泡排序似乎和平时的冒泡排序并不一样。

一般人的冒泡排序可能需要在键盘上敲击五行以上的代码,可这一手!居然只用了四行,威力大增。这一手冒泡排序没有一两年的功夫,怕是练就不成的。

只见空气中的斗气凝练在沈宝宝的键盘之上,形成一个玄色尖刺,甚是骇人。不过沈宝宝的身体仿佛也不好受,他当前的身体,根本承受不了这么强的斗气之力。不过为了胜利,他只好掏出自己这压箱底的宝贝。

只见沈宝宝一下朝着对方的正面击打了过去!

--

“这下王晔就要遭重啦,这个冒泡排序,从这威力来看,估计炼体四阶以下无解。炼体三阶的王晔怕是要遭重啦。”

“王晔肯定输了。”

“不过沈宝宝使完这一招,估计也得回家躺个几天吧。”

“……”

围观人都指指点点道。

王晔却邪魅一笑,居然也不闪躲,直直的朝着尖刺迎了上去。

“王晔怎么回事儿!居然不躲!”沈宝宝心中诧异,但也不容多想,还是一招打了上去。

“嘣”,只听一声闷响。

--

沈宝宝一下子被击飞,跌在地上一动不动,而王晔却只是往后退了一小步。

赢了,王晔居然赢了。

“承让。”说完这句,王晔便走下了挑战台。

全场鸦雀无声,静谧的针落可闻,一个个全都震惊地望着躺在地上的沈宝宝,满眼的匪夷所思。

刚刚发生了什么,怎么一瞬间就被击败了。

---

“王晔居然一瞬间从怀中掏出了100000个数,直接打在了沈宝宝的键盘之上。”那一开始问路的年轻人惊讶了一下,“这王晔居然是一个造数师。”

冒泡排序虽说被沈宝宝用的极为娴熟,但是毕竟冒泡只是一个n^2的黄阶低级算法,处理大量数据的时候,会非常慢,以至于沈宝宝一下子被王晔击败。

如果沈宝宝不用冒泡排序的话,估计能够稳稳的胜下这一场,可惜可惜,遇上了天敌。

“有趣,有趣,这个挑战大会有意思。”年轻人笑了笑。

---

现在,假设你就是沈宝宝,你会怎么应对这100000个数的排序问题呢?

输入

本题包含若干组测试数据。
第一行一个n,表示有n个数。
第二行n个整数a[i]。

保证 1<=n<=100000,1<=a[i]<=100000

输出

对于每组测试数据,输出从小到大排序后的结果。
注意,每一行的末尾都得多加一个空格哦。
比如样例“1 2 3 4 5 \n1 2 3 \n”

样例输入1 

5
1 3 2 4 5
3
3 2 1

样例输出1

1 2 3 4 5
1 2 3 题解:sort排序,可以不用写cmp
#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){
    return a<b;
}
int main(){
    int n;
    while(cin>>n){
        int num[100005]={0};
        for(int i=0;i<n;i++)cin>>num[i];
        sort(num,num+n,cmp);
        for(int i=0;i<n;i++)cout<<num[i]<<" ";
        cout<<endl;
    }
}

喵哈哈村的代码传说 第二章 神经网络

发布时间: 2017年3月11日 14:45   最后更新: 2017年3月11日 14:48   时间限制: 1000ms   内存限制: 128M

描述

(不想读废话的,可以直接跳到最后。)

造数师,是天玄大陆五大职业中的一种。该职业往往需要凡人不可拥有的强大精神力,因为造数师需要看破对手的斗技,然后迅速用自己的精神力凝结出数字,攻击到敌方的斗技弱点上。

相传强大的造数师,会瞬间创造出以PB记数量级的数据,这些数据就算毫无控制的直接扔下去,就足以暴力破坏掉他所能看见的任何事物,山崩地裂。而还有另外一些强大造数师,利用数据能创造出另一方世界,也许这个世界,便是某个强大的造数师所创造的。

而王晔,便是一名造数师,只不过他现在实在是太弱了。

王晔的上一场战斗,虽说一下子掏出了100000个元素,但是他自己也知道,其实那100000个元素全是0,他的精神力根本造不出那么多自定义的数字。

如果沈宝宝的斗技预先检查一遍的话,输的恐怕就是王晔了。

---

之后过了四五天,王晔虽然斗技不精,但也凭着自己低阶造数师的身份,辅佐强大的精神力,打入了八强。

他的造数师身份,也被大家熟知。

---

接下来这一场八强之战,将会是他面对的一场恶战,因为对手,叫做徐告。

徐告,天玄徐家之后,虽说只有十四五岁的年纪,但是他已通过了天玄大陆第一门派谷歌派的招生筛选,成为了谷歌派的实习弟子,今年七月,他便要去谷歌派修习。

虽说还未去修习,但是就凭他能通过那0.1%不到的招生筛选,就知道徐告的实力不容小觑。

---

“八强第三场战斗,徐告对阵王晔,现在开始!”,只听裁判一声吆喝,就宣布了这对于王晔异常凶险的一场比赛开始了!

那徐告一身白衣,手握静电容键盘,站在挑战台的一端,望着蓝天,仿佛根本没有注意到这场比赛开始了一般。

王晔也不敢乱动,他知道,徐告的实力肯定在他之上,硬拼斗技的话,肯定是他输。

他在等,等徐告的出手。

两人就这样,站着。

一个望着天,一个望着他。

---

“你我差距太大,一招,如果身为造数师的你,能看破这一招,便算你赢。”徐告仿佛回过了神,淡淡的说道。

“在下实力虽然……”王晔这句话还未说完,徐告就拿出键盘攻了过来。

仿佛徐告根本不在乎王晔的回复,他说的话只是一种宣告罢了,根本不在乎你的回复,这或许就是徐家的高傲吧。

徐告的纤细手指飞舞在静电容键盘上,带着“嗒嗒”的声音。

一个光影,从静电容键盘中飞了出来。光影瞬间变得很大,笼罩了王晔的全身。

---

这个光影好像并无伤害能力,只是一个控制斗技,牢牢的困住了王晔。

王晔也不慌张,随手一招天玄大陆人人都会的A与B问题就朝着光影扔了上去。

那光影仿佛根本不会A与B一样,被打了个闷响,被打散了少许。

王晔一看这一招A与B居然有效果,于是迅速凭着自己的精神力,又造了一堆A与B的数据击打过去。

这光影被连连击退,但是击退的部分却越来越小。

王晔感觉渐渐掌握了节奏,又迅速的造了一些数据,击打了过去。

但是第三波数据之后,光影就纹丝不动了。

“这是?”,王晔感到一丝诧异。

“正是”,徐告拿着键盘站在光影之外,静静地说道,“这是神经网络斗技,玄阶中级斗技,是隶属于机器学习的一种,具有学习能力,可谓你越强,这光影就会越强。这斗技虽然只是玄阶中级,但是练就深处,恐怕地阶的一些斗技也挡不住此招。”

王晔一听,仿佛听出了什么。王晔大声问道,“这神经网络的隐含层有几层?”

“只有一层,告诉你也无妨。”徐告淡淡答道。

---

只见王晔的精神力,迅速凝结成几个组数据就扔了过去。

光影挣扎了几下,便被打散了。

神经网络便消失在空中。

徐告仿佛知道这一切的样子,淡淡说道,“看来你看破了。”

“不敢当,不敢当,在下只是恰好在书中看过罢了。神经网络的感知机只会由输出神经元进行激活函数的处理,即只拥有一层功能神经元,实际上该神经网络的学习能力很有限。感知机的学习过程一定是会收敛的,所以感知机能够处理大部分问题。比如A与B,就是一个线性可分的问题,他存在一个线性超平面能够将他们分开。”

徐告说道,“但是,他不能处理非线性可分问题。”

王晔点了点头,“没错,所以只要造出非线性可分问题的数据便能击破神经网络,比如A异或B问题。”

“胜利者,王晔,晋级四强!”

---

现在,假设你就是徐告,你会怎么应对这异或问题呢?

如果不知道异或是什么,那就百度吧。

输入

本题包含若干组测试数据。
第一行一个整数n,表示王晔所制造的数据位数。
第二行两个n位二进制数a,b,保证只含有0或者1.

满足 1<=n<=1000

输出

输出n位数,表示异或之后的答案。

样例输入1 

3
000 111
5
01010 01010

样例输出1

111
00000题解:字符串手动比较
#include<bits/stdc++.h>
using namespace std;

int main(){
    int n;
    while(cin>>n){
        char a[1005]={0},b[1005]={0};
        for(int i=0;i<n;i++)cin>>a[i];
        for(int i=0;i<n;i++)cin>>b[i];
        for(int i=0;i<n;i++){
            if(a[i]==b[i]) printf("0");
            else printf("1");
        }
        cout<<endl;
    }
}

喵哈哈村的代码传说 第三章 宽度优先搜索

发布时间: 2017年3月12日 16:00   最后更新: 2017年3月12日 16:01   时间限制: 1000ms   内存限制: 128M

描述

给你一个由0和1构成的矩阵,其中0是墙面,1是道路,现在给你起点的位置(x0,y0),终点的位置(x1,y1),问你从起点到终点最近的路是多少。

如果不能到达输出-1。

保证起点和终点位置都是1。

输入

本题包含若干组测试数据。
第一行六个整数n,m,x0,y0,x1,y1表示这个地图的大小,起点位置,终点。
接下来n行,每行m个数,表示这个地图的样子。

满足1<=n,m<=100

输出

对于每组测试数据,输出最近的路,否则输出-1.

样例输入1

3 3 1 1 3 3
100
100
111
3 3 1 1 3 3
100
000
111

样例输出1

4
-1

 题解:利用队列找最小距离,保存可走的位置,用后pop掉,开mp记录最短距离,从第一个位置开始,之后的(new)等于上一个位置(now)距离+1。check判断是否符合条件

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+6;
int n,m,x0,yy0,x1,yy1;
string s[maxn];//map
int mp[maxn][maxn];//记录最短距离
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
int check(int x,int y){
    if(x<0||x>=n)return false;
    if(y<0||y>=m)return false;
    if(mp[x][y]!=-1)return false;
    if(s[x][y]==‘0‘)return false;
    return true;
}
void solve(){
    x0--,yy0--,x1--,yy1--;
    for(int i=0;i<n;i++)cin>>s[i];
    memset(mp,-1,sizeof(mp));
    queue<int> qx,qy;
    qx.push(x0);qy.push(yy0);
    mp[x0][yy0]=0;
    while(!qx.empty()){
        int nowx=qx.front();
        int nowy=qy.front();
        qx.pop();qy.pop();
        for(int i=0;i<4;i++){
            int newx=nowx+dx[i];
            int newy=nowy+dy[i];
            if(check(newx,newy)){
                mp[newx][newy]=mp[nowx][nowy]+1;
                qx.push(newx);qy.push(newy);
            }

        }

    }
    printf("%d\n",mp[x1][yy1]);
    return;

}
int main(){
    while(cin>>n>>m>>x0>>yy0>>x1>>yy1){
        solve();
    }
}

喵哈哈村的代码传说 第四章 并查集

发布时间: 2017年3月12日 16:00   最后更新: 2017年3月12日 16:01   时间限制: 1000ms   内存限制: 128M

描述

有一个非常大的村子,叫做喵哈哈村,一开始他们都互相不认识,但是渐渐地,他们就会相互来往,所以就会有以下问题的产生:

1 x y,x家与y家成为朋友

2 x y,提问x家和y家是否为朋友,间接成为朋友也算。

输入

本题包含若干组测试数据。
第一行两个整数n,m,表示这个村子有n户家庭,一开始他们都不认识。含有m个问题。
接下来m行:
1 x y
2 x y
分别表示操作和询问。
满足1<=n,m<=100000,注意x

输出

是朋友输出Yes,否则输出N

样例输入1

3 4
2 1 2
2 1 1
1 1 2
2 1 2

样例输出1

No
Yes
Yes题解并查集,注意uni中要找祖先
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+7;
int fa[maxn];
int fi(int x){
    return fa[x]==x?x:fa[x]=fi(fa[x]);
}
void uni(int x,int y){
    x = fi(x),y = fi(y);
    fa[x]=y;
}
int main(){
    int n,m;
    while(cin>>n>>m){
        for(int i=1;i<=n;i++)fa[i]=i;
        for(int i=0;i<m;i++){
            int op,a,b;
            cin>>op>>a>>b;
            if(op==1) uni(a,b);
            if(op==2){
                if(fi(a)==fi(b))cout<<"Yes"<<endl;
                else cout<<"No"<<endl;
            }
        }
    }
}

 
时间: 2024-10-11 18:31:39

喵哈哈村的代码传说 1——4的相关文章

喵哈哈村的代码传说 第四章 并查集

描述 有一个非常大的村子,叫做喵哈哈村,一开始他们都互相不认识,但是渐渐地,他们就会相互来往,所以就会有以下问题的产生: 1 x y,x家与y家成为朋友 2 x y,提问x家和y家是否为朋友,间接成为朋友也算. 输入 本题包含若干组测试数据.第一行两个整数n,m,表示这个村子有n户家庭,一开始他们都不认识.含有m个问题.接下来m行:1 x y2 x y分别表示操作和询问.满足1<=n,m<=100000,注意x 输出 是朋友输出Yes,否则输出N 样例输入1 复制 3 4 2 1 2 2 1

喵哈哈村的代码传说 第三章 宽度优先搜索

题目链接:http://qscoj.cn/problem/37/ 要写作业了-- 先上代码 #include<bits/stdc++.h> #define MAXN 10086 using namespace std; int dx[5]={0,-1,0,0,1}; int dy[5]={0,1,0,-1,0}; int mp[MAXN][MAXN];//标记数组 string s[MAXN];//s是一排,MAXN是列数 int n,m;//地图大小 int xx0,yy0,xx1,yy1;

喵哈哈村的代码传说 第一章 冒泡排序

输入 本题包含若干组测试数据.第一行一个n,表示有n个数.第二行n个整数a[i]. 保证 1<=n<=100000,1<=a[i]<=100000 输出 对于每组测试数据,输出从小到大排序后的结果.注意,每一行的末尾都得多加一个空格哦. #include<bits/stdc++.h>using namespace std;int n,a[100000],i;main(){ while(cin>>n) { for(int i=0;i<n;i++) cin

喵哈哈村的木星传说

链接:http://qscoj.cn/problem/72/ 喵哈哈村的木星传说(一) 发布时间: 2017年4月11日 20:01   最后更新: 2017年4月11日 20:01   时间限制: 1000ms   内存限制: 128M 描述 喵哈哈村有一个挂在空中的木星爷爷,每天晚上都讲一些故事.而星星同学,作为木星爷爷的听众,为了报答,于是每天晚上都会为他解决一个问题. 今天,星星同学要为木星爷爷解决这样一个问题: 给一个n*n的方阵,请将这个方阵顺时针旋转90°. 输入 本题包含若干组测

10喵哈哈村的魔法石

题目传送: 描述 传说喵哈哈村有三种神奇的魔法石:第一种魔法石叫做人铁石,拥有A的能量:第二种魔法石叫做地冈石,拥有B的能量:而第三种,则是最神奇的天玄石,拥有无可比拟的C的能量! 但是有一天,沈宝宝太调皮了,把一颗天玄石玩丢了-- "这可玩大发了,这样我会被天行廖责备的."沈宝宝悲伤的说到,"怎么办呢?" 这时候沈宝宝望了望窗外的飞过的白鸽,突然急中生智,想到了一个办法:干脆就用人铁石和地冈石把天玄石凑出来吧! "只要我拿若干个人铁石,若干个地冈石,他们

qscoj 128 喵哈哈村的魔法源泉(2)(模仿快速幂,好题)

喵哈哈村的魔法源泉(2) 发布时间: 2017年5月9日 20:59   最后更新: 2017年5月9日 21:00   时间限制: 1000ms   内存限制: 128M 描述 喵哈哈村有一个魔法源泉,里面有无穷无尽的力量. 但是前提是你能答出这样一个问题: 给你a,b,p,让你输出a*b%p的值. 输入 本题包含若干组测试数据.第一行三个整数a,b,p. 满足:0<=a,b,p<=1e18 输出 输出答案 样例输入1 复制 10 1 7 样例输出1 3题目链接:http://qscoj.c

qscoj 喵哈哈村的魔法考试 Round #5 (Div.2) 题解(前1,2,3题)ps:前三题在本人水平可掌控范围之内

题目链接:http://qscoj.cn/problem/30/ 第一题 喵哈哈村的狼人杀大战(1) 时间限制: 1000ms   内存限制: 128M 描述 喵哈哈村最近热衷于玩一个叫做狼人杀的游戏! 张小田今天她抽到的是民的身份,按照她的一贯玩法,她不会考虑发言者的发言,她只考虑站队情况. 现在是警上竞选的投票环节,现在只剩下还能当警长的两个真假预言家. 张小田认为,如果在某一天,有连续坐在一起的k个人投票给同一个人的话,那么她就认为这一局可能比较危险. 投给第一个预言家的,就记为0,投给第

喵哈哈村的魔法考试 Round #19 (Div.2) C

描述 喵哈哈村有一个魔法源泉,里面有无穷无尽的力量. 但是前提是你能答出这样一个问题: 小T打算在城市C开设一家外送快餐店.送餐到某一个地点的时间与外卖店到该地点之间最短路径长度是成正比的,小T希望快餐店的地址选在离最远的顾客距离最近的地方. 快餐店的顾客分布在城市C的N个建筑中,这N个建筑通过恰好N-1条双向道路连接起来,不存在任何两条道路连接了相同的两个建筑.任意两个建筑之间至少存在一条由双向道路连接而成的路径.小T的快餐店可以开设在任一建筑中,也可以开设在任意一条道路的某个位置上(该位置与

喵哈哈村的种花魔法(线段树的区间更新)

描述 喵哈哈村有一个谷歌廖,谷歌廖特别喜欢种花. 而且谷歌廖最神奇的就是,他会施展一种种花魔法,会使得一定区间的花儿,长高k厘米. 在谷歌廖施展若干次魔法之后,好奇的沈宝宝想知道,每朵花儿的高度是多少. 输入 第一行两个整数n,m,分别表示花儿的数量,和谷歌廖施展种花魔法的次数.第二行n个整数a[i],表示花儿一开始的高度为a[i]厘米.接下来m行,每行三个整数l,r,k.表示谷歌廖使得区间[l,r]的花儿长高了k厘米. 1<=n,m<=1000001<=a[i],k<=10000