A.吐泡泡(模拟)
链接:https://www.nowcoder.com/acm/contest/74/A
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
小鱼儿吐泡泡,嘟嘟嘟冒出来。小鱼儿会吐出两种泡泡:大泡泡”O”,小泡泡”o”。
两个相邻的小泡泡会融成一个大泡泡,两个相邻的大泡泡会爆掉。
(是的你没看错,小气泡和大气泡不会产生任何变化的,原因我也不知道。)
例如:ooOOoooO经过一段时间以后会变成oO。

输入描述:
数据有多组,处理到文件结束。
每组输入包含一行仅有’O’与’o’组成的字符串。
输出描述:
每组输出仅包含一行,输出一行字符串代表小鱼儿吐出的泡泡经过融合以后所剩余的泡泡。
示例1
输入

ooOOoooO
输出

oO
说明

自左到右进行合并
备注:
对于100%的数据,
字符串的长度不超过100。

思路:模拟题,只要注意细节。从左往右。每次合成从头开始就可以了。

#include<bits/stdc++.h>
#define PI 3.1415926
#define INF 1e18
#define inf 1e9
#define min(a,b) a<b?a:b
#define max(a,b) a>b?a:b
using namespace std ;
typedef long long ll;
typedef unsigned long long ull;int main(){string s;while(cin>>s){string ch = "";int len = s.length();char c;for(int t = 1 ; ; t++){int i = 0;ch ="";while(i < len){c = s[i];if(s[i] == s[i+1]){if(s[i] == 'O'){i+=2;break;}else{ch += 'O';i+=2;break;}}i++;ch+=c;  } if(ch == s) break;else{s = s.substr(i);s = ch+s;}len = s.length();}   cout<<s<<endl;}return 0;
}

B.taotoa要吃鸡(背包DP)
链接:https://www.nowcoder.com/acm/contest/74/B
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述

Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了,
和绝地求生一样,游戏人物本身可以携带一定重量m的物品,装备背包
之后可以多携带h(h为0代表没有装备背包)重量的东西。玩了几天
taotao发现了一个BUG,当装备背包之后,如果可携带重量没有满,就
可以拿一个任意重的东西。(解释看样例)有一天taotao空降到了一个
奇怪的岛上,岛上有n件装备,每个装备都有重量Wi和威力值Vi,但taotao
不认识这些装备,所以他来求助你,挑选威力最大的装备,帮助他吃鸡。
输入描述:
本题有多组输入(小于10),当n=0时结束输入。
第一行输入n,m,h。n,m,h为整数,并且0<=n,m,h<=100,
接下来n行,每行输入第i个物品的物品的重量Wi和威力值Vi。0<=Wi,Vi<=100.
输出描述:
输出最大威力值,每组输出一行。
示例1
输入

3 3 3
2 3
3 2
2 3
0
输出

8
说明

可携带的总重量为6,当拿了前两件装备,此时容量为5/6,还可以再拿第三件物品。

背包问题。这里不同的就是在于一些小细节。比如用贪心的思维在v-1的体积下取最大,然后加上体积最大的物品就可以了。要注意没有背包时候是没有BUG的。

#include<bits/stdc++.h>
#define PI 3.1415926
#define INF 1e18
#define inf 1e9
#define min(a,b) a<b?a:b
#define max(a,b) a>b?a:b
using namespace std ;
typedef long long ll;
typedef unsigned long long ull;const int _max = 105;
struct node{int w,v;
}a[_max];
int dp[_max*2];
int main(){int n;while(cin>>n){if(!n) break;int m,h;cin>>m>>h;for(int i = 1 ; i <= n ; i++)cin>>a[i].w >>a[i].v;   if(h!=0){int v = m+h-1;int ans = 0;for(int t = 1 ; t <= n ; t++){memset(dp,0,sizeof(dp));for(int i = 1 ; i <= n ; i++){if(i==t) continue;int w = a[i].w;int p = a[i].v;for(int j = v ; j >= w ; j--){dp[j] = max(dp[j],dp[j-w]+p);}}ans = max(ans,dp[v]+a[t].v);    }cout<<ans<<endl;    }else{int v = m;int ans = 0;memset(dp,0,sizeof(dp));for(int i = 1 ; i <= n ; i++){int w = a[i].w;int p = a[i].v;for(int j = v ; j >= w ; j--){dp[j] = max(dp[j],dp[j-w]+p);}}ans = dp[v];    cout<<ans<<endl;}}return 0;
}

D.YB要打炉石
链接:https://www.nowcoder.com/acm/contest/74/D
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
Wozuinb非常喜欢打炉石传说,但是菜的不行,所以他决定打
竞技场来练练手。系统按顺序给出n张卡牌,每张卡牌都有自
己的使用消耗a[i],每次只给出一张,wozuinb可以选择或者
弃掉这张牌。每选择一张牌都会按选择顺序放在卡槽中,当
卡槽中放满30张即可组成一套套牌。Wozuinb希望自己的套牌的
消耗满足一个平滑的曲线,即30张卡牌都满足第i张卡牌的消耗
不小于第i-1张(i>1)。请你帮助wozuinb看一看,这些卡牌能不
能组成想要的套牌,如果能组成输出“yes”,如果不能输出“no”。

输入描述:
第一行输入一个整数n,0

#include<bits/stdc++.h>
#define PI 3.1415926
#define INF 1e18
#define inf 1e9
#define min(a,b) a<b?a:b
#define max(a,b) a>b?a:b
using namespace std ;
typedef long long ll;
typedef unsigned long long ull;
int dp[105];
int main(){int n;while(cin>>n){int a;int id = 0;dp[0] = 0;while(n--){cin >> a;if(dp[id] <= a)dp[++id] = a;else{int l=0,r=id,m;while(l<r){m = (l+r)>>1;if(dp[m]>a) r=m;else l=m+1;}m = (l+r)>>1;dp[m]=a;           }}if(id>=30) cout<<"yes"<<endl;else cout<<"no"<<endl;}return 0;
}

E.小G有一个大树
链接:https://www.nowcoder.com/acm/contest/74/E
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
小G想要把自己家院子里的橘子树搬到家门口(QAQ。。就当小G是大力水手吧)
可是小G是个平衡性灰常灰常差的人,他想找到一个这个橘子树的平衡点。
怎么描述这棵树呢。。。就把它看成由一个个节点构成的树吧。结点数就
代表树重。

输入描述:
多组数据输入输出,
第一行包含一个整数n(3<=n<=1000)代表树的结点的个数
以下n-1行描述(1-n)节点间的连接关系。
输出描述:
输出两个个整数 x,num 分别代表树的平衡点,和删除平衡点后最大子树的结点数(如果结点数相同输出编号小的)。
示例1
输入

3
1 2
1 3
输出

1 1

dfs+dp。先搜索到树最底层然后层层向上传递信息。
PS:这里重心的意思就是最长的树枝越接近一半就是重心了。

#include<bits/stdc++.h>
#define PI 3.1415926
#define INF 1e18
#define inf 1e9
#define min(a,b) a<b?a:b
#define max(a,b) a>b?a:b
using namespace std ;
typedef long long ll;
typedef unsigned long long ull;
const int _max = 1005;
vector<int> t[_max];
int ans,id;
int dp[_max];
int n;
int dfs(int now,int fa){dp[now]=1;int cnt = 0;for(int i = 0 ; i < t[now].size() ; i++){int rz = t[now][i];if(rz == fa) continue;dp[now] += dfs(rz,now);cnt = max(cnt,dp[rz]);}cnt = max(cnt,n-dp[now]);if(cnt < ans){ans = cnt;id = now;}else if(cnt == ans&&now < id) id = now;return dp[now];
}
int main(){while(cin>>n){for(int i = 1 ; i <= n ; i++)t[i].clear();int a,b;for(int i = 1 ; i < n ; i++){cin>>a>>b;t[a].push_back(b);t[b].push_back(a);}ans = inf;dfs(1,0);cout<<id<<" "<<ans<<endl;}return 0;
} 

G.送分了QAQ
链接:https://www.nowcoder.com/acm/contest/74/G
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述

杭州人称傻乎乎的人为62,而嘟嘟家这里没有这样的习俗。相比62,他那里的人更加讨厌数字38,当然啦,还有4这个数字!所以啊,嘟嘟不点都不想见到包含38或者4的数字。每次给出一个区间[n,m],你能找到所有令人讨厌的数字吗?

输入描述:
多组输入输出;
输入的都是整数对n、m(0

#include<bits/stdc++.h>
#define PI 3.1415926
#define INF 1e18
#define inf 1e9
#define min(a,b) a<b?a:b
#define max(a,b) a>b?a:b
using namespace std ;
typedef long long ll;
typedef unsigned long long ull;
const int _max = 1000005;
int s[_max];
void judge() {int t=0;for(int l=0; l<1000000; l++) {int now,last=0,k;k=l;while(k) {now=k%10;if(now==4||now==3&&last==8) {t++;break;}k=k/10;last=now;}s[l]=t;}
}
int main() {int n,m;judge();while(scanf("%d %d",&n,&m),n||m) {printf("%d\n",s[m]-s[n-1]);}return 0;
}

H.了断局
链接:https://www.nowcoder.com/acm/contest/74/H
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
既然是了断局了,大家就随便玩玩数字呗。
已知一个数列前10项分别是
{0, 1, 1, 2, 4, 7, 13, 24, 44, 81}
小G不满足呀:我要更多的数!!!不给就不让你们玩了。
小G会问你第n项是什么数字,请回答这个顽皮的孩子吧。

输入描述:
多组数据输入输出;
第一行输入一个整数n(1<=n<=50)
输出描述:
输出数列中的第n个数。
示例1
输入

1
2
3
输出

0
1
1

找规律,打表,结束

#include<bits/stdc++.h>
#define PI 3.1415926
#define INF 1e18
#define inf 1e9
#define min(a,b) a<b?a:b
#define max(a,b) a>b?a:b
using namespace std ;
typedef long long ll;
typedef unsigned long long ull;
const int _max = 55;
ll a[_max];int main(){memset(a,0,sizeof(a));a[1]=0,a[2]=1,a[3]=1;for(int i = 4 ; i <= 50 ; i++)a[i] = a[i-1]+a[i-2]+a[i-3];int n;while(cin>>n){cout<<a[n]<<endl;}return 0;
} 

2018年全国多校算法寒假训练赛相关推荐

  1. 【题集】牛客网·2018年全国多校算法寒假训练营练习比赛(第二场)

    原文链接:2018年全国多校算法寒假训练营练习比赛(第二场) A 吐泡泡 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Form ...

  2. 【题集·待解决】牛客网·2018年全国多校算法寒假训练营练习比赛(第二场)

    原文链接:2018年全国多校算法寒假训练营练习比赛(第二场) A 吐泡泡 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Form ...

  3. 2018年全国多校算法寒假训练营练习比赛(第四场)F:Call to your teacher

    传送门:https://www.nowcoder.net/acm/contest/76/F 题目描述 从实验室出来后,你忽然发现你居然把自己的电脑落在了实验室里,但是实验室的老师已经把大门锁上了.更糟 ...

  4. 2018年全国多校算法寒假训练营练习比赛(第五场)解题报告

    A-逆序数 https://www.nowcoder.com/acm/contest/77/A 题目描述 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆 ...

  5. 牛客网 2018年全国多校算法寒假训练营练习比赛(第二场) H.了断局-递推

    H.了断局 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 链接:https://www.nowcode ...

  6. 2018.1.28 牛客网2018年全国多校算法寒假训练营练习比赛题解

    Pre:DP专场,不得不说出题人脑洞真的大,题目质量真心不错.能将当今比较热门的游戏素材与算法竞赛有机结合,也是肥肠因缺斯汀的呀哈哈哈哈~ 打的最有意思也是最扎心的一场比赛,还是自己菜.DP是需要下慢 ...

  7. 2018年全国多校算法寒假训练营练习比赛(第四场)

    地址:点击打开链接 A 石油采集 思路: 二维矩阵四连通图是一个二分图,其实仔细想想就是将相邻的"#"建图,然后在找最大匹配.匈牙利算法即可.也可以dfs,代码如下: 匈牙利: # ...

  8. 牛客网 2018年全国多校算法寒假训练营练习比赛(第四场) 题解

    A-石油采集 题目描述 随着海上运输石油泄漏的问题,一个新的有利可图的行业正在诞生,那就是撇油行业.如今,在墨西哥湾漂浮的大量石油,吸引了许多商人的目光.这些商人们有一种特殊的飞机,可以一瓢略过整个海 ...

  9. 2018年全国多校算法寒假训练营练习比赛(第五场)题解

    [题目链接] A - 逆序数 经典问题,有很多方法,例如树状数组,线段树,归并排序.分治等.代码不贴了. B - Big Water Problem 单点修改求区间和,树状数组或者线段树都可以. #i ...

最新文章

  1. 【java】用javaSE来实现对mysql数据库的增删改查
  2. Windows Embedded CE 6.0开发初体验(七)编译和调试平台
  3. php隐藏webshell_PHP 安全的十个必备技巧
  4. 2021云栖大会开源引力峰会发布的战略合作,Grafana服务到底是什么?
  5. 开着开着,Model S天窗飞了!特斯拉回应...
  6. vb ClipBoard 剪切板应用(复制剪切粘贴)
  7. mysql分析函数的实现
  8. BlockChange丨谁在监管加密货币?各国数字货币政策情况概览
  9. SuperWebSocket发布0.1版本
  10. 转:华为最新ARP防护
  11. 安装服务器系统提示没有驱动程序,安装windows server系统提示“无法在此驱动器上安装windows”的解决办法 安装Win...
  12. ico付费图标下载器 附带易语言源码
  13. 0ctf_2017_babyheap详解
  14. 制作自己的 Kindle 电子书
  15. 人人网模拟用户登陆行为后进入包贝尔的个人主页
  16. ERP/MIS开发 LLBL Gen多表操作
  17. 索尼Xperia S_4.0一键ROOT工具┇_┇免解锁┇_┇一分钟ROOT┇_┇
  18. android glide面试题,Android面试:80%的面试官关于Glide都会问这几个问题!【建议收藏】...
  19. 国外it的一些学习网站
  20. 记录论文中用到的伪代码

热门文章

  1. 中国石油天然气股份有限公司2008年半年度报告摘要(业绩公告)
  2. WordPress主题-柒比贰B2 V2.9.9主题去授权无限制
  3. 华清远见嵌入式班结业总结
  4. Java如何正确的使用try catch finally关闭文件流的总结
  5. Thread--线程让步yield
  6. java 工资管理系统_Java工资管理系统
  7. kd-tree和八叉树的概念及相关算法
  8. java wrap()_Java中的CharBuffer wrap()方法
  9. 1934: [Shoi2007]Vote 善意的投票
  10. 秋色园Blog 博客系列索引