hiho[Offer收割]编程练习赛30
题目1 : 提取用户名
描述
在现在的各种互联网应用中,在一段文字中使用'@'字符来提起一名用户是流行的做法。
例如:
"@littleho submitted his code 30 times before he got passed the system test."
其中littleho就是一个用户名。我们规定在一段文字中,'@'字符之后一段连续的、非空的大小写英文字母组成的字符串被视为提起的用户名。
给定一段文字,请你输出其中所有提到的用户名。
输入
一行文本,只包含大小写字母、标点符号和空格。长度不超过800。
输出
按文本中的顺序输出所有提到的用户名,之间用一个空格隔开。重复提到的相同用户名也重复输出。
- 样例输入
-
@abc:@@,@littleho's code is so confusing. @abc.
- 样例输出
-
abc littleho abc
无脑模拟,直接写就好了,但是要记得回退
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
getline(cin,s);
for(int i=;s[i];i++)
{
if(s[i]=='@')
{
string c;
i++;
for(;s[i];i++)
if(s[i]>='A'&&s[i]<='Z'||s[i]>='a'&&s[i]<='z')
c+=s[i];
else break;
if(c.length())
{cout<<c<<" ";}
if(s[i]=='@')i--;
} }
return ;
}
题目2 : 股票价格II
描述
小Hi最近在关注股票,为了计算股票可能的盈利,他获取了一只股票最近N天的价格A1~AN。
在小Hi的策略中,每天可以在下列三种操作中选取一种:
1.什么也不做;
2.按照当天的价格买进一个单位的股票;
3.按照当天的价格卖出部分或所有股票。
现在小Hi希望能够知道,如果在N天前手中持有的股票数为0,并且假设拥有无限的金钱,在这N天结束能够获得的最大利润是多少?
输入
第一行包含一个整数N。
第二行包含N个整数,A1, A2, ... AN。
对于30%的数据, 1 ≤ N ≤ 103
对于100%的数据,1 ≤ N ≤ 106, 1 ≤ Ai ≤ 100
输出
输出这N天结束能够获得的最大利润。
- 样例输入
-
5
1 2 3 4 5 - 样例输出
-
10
这个题目只要维护最高点就可以了,
相当于其他天都在买,等到最高点卖就行了
我把数组开小了,真是让人愁人
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+;
int a[N],b[N];
int main()
{
int n;
scanf("%d",&n);
for(int i=; i<=n; i++)
{
scanf("%d",&a[i]);
b[i]=a[i]+b[i-];
}
b[n+]=-;
int s=;
for(int i=n; i>; i--)
{
b[i]=max(b[i+],a[i]);
s+=b[i]-a[i];
}
printf("%d",s);
return ;
}
题目3 : 小Hi的生成树计数
描述
小Hi最近对生成树(包含所有顶点的联通无环子图。)非常的感兴趣,他想知道对于特定的简单平面无向图是不是存在求生成树个数的简单方法。
小Hi定义了这样的图:一个以{0,1,2……n}为顶点的图,顶点0与其他n个顶点直接相连,对于顶点i(1 ≤ i < n),顶点i与顶点i+1连有一条边。下面是小Hi画的图n=4的图:

请求出对于任意n,这样的图的生成树个数。
输入
多组数据,每组数据一行,包括一个整数n
30%的数据(1 ≤ n ≤ 100),组数不超过10组
70%的数据(1 ≤ n ≤ 1000000),组数不超过10组
100%的数据(1 ≤ n ≤ 1000000000),组数不超过10组
输出
每组数据输出一个行包括一个整数,代表了图的生成树个数(对1000000007取模)。
- 样例输入
-
2
- 样例输出
-
3
找规律的题,不,其实是让你找到状态转移方程的
f[i][0]表示第i个点选择完毕,其连通性为0的方案数
则f[i+1][0]=f[i][0](i+1只与i有边,拯救了i的连通性,却没解决自己的)
+f[i][1](i+1没有边连)
f[i+1][1]=f[i][1]*2(i+1与i连边,或者与0连边,解决了自己的连通性)
+f[i][0]
an=2*an-1+an-2+……+a1+a0
a1=1,a0=1
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
LL A[][], B[][], C[][], n;
const LL MD = 1e9+;
struct MX
{
int v[][];
void O()
{
memset(v,,sizeof(v));
}
void E()
{
memset(v,,sizeof(v));
for (int i = ; i < ; ++i)
v[i][i] = ;
}
MX operator * (const MX &b) const
{
MX c;
c.O();
for (int k = ; k < ; ++k)
{
for (int i = ; i < ; ++i)
if (v[i][k])
{
for (int j = ; j < ; ++j)
{
c.v[i][j] = (c.v[i][j] + (LL)v[i][k] * b.v[k][j]) % MD;
}
}
}
return c;
}
MX operator ^ (LL p) const
{
MX y;
y.E();
MX x;
memcpy(x.v, v, sizeof(v));
while (p)
{
if (p & )y = y * x;
x = x * x;
p >>= ;
}
return y;
}
} a, b, c;
int main()
{
a.O();
a.v[][] = ;
a.v[][] = ;
b.O();
b.v[][] = ;
b.v[][] = ;
b.v[][] = ;
b.v[][] = ;
LL n;
while (cin>>n)
{
cout<<(a * (b ^ (n - ))).v[][]<<endl;
}
return ;
}
按照3*3的矩阵也能做

hiho[Offer收割]编程练习赛30的更多相关文章
- hihocoder [Offer收割]编程练习赛4
描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...
- hihocoder [Offer收割]编程练习赛61
[Offer收割]编程练习赛61 A:最小排列 给定一个长度为m的序列b[1..m],再给定一个n,求一个字典序最小的1~n的排列A,使得b是A的子序列. 贪心即可,b是A的子序列,把不在b中的元素, ...
- [Offer收割]编程练习赛46
[Offer收割]编程练习赛46赛后题解 A.AEIOU 分析
- hiho #1283 hiho密码 [Offer收割]编程练习赛3
#1283 : hiho密码 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho根据最近在密码学课上学习到的知识,开发出了一款hiho密码,这款密码的秘钥是这样生成的 ...
- hiho #1272 买零食 [Offer收割]编程练习赛2
#1272 : 买零食 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho很喜欢在课间去小卖部买零食.然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐姐以冷若冰 ...
- hihocoder offer收割编程练习赛11 A hiho字符串
思路: 我用的尺取. 注意题目描述为恰好2个'h',1个'i',1个'o'. 实现: #include <iostream> #include <cstdio> #includ ...
- HihoCoder1641 : 热门号码([Offer收割]编程练习赛37)(模拟)
描述 1 2 3 ABC DEF 4 5 6 GHI JKL MNO 7 8 9 PQRS TUV WXYZ * 0 # 我们知道电话拨号盘上数字会有若干字母对应,例如2对应ABC,7对应PQRS. ...
- [Offer收割]编程练习赛48
题目1 : 折线中点 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定平面上N个点P1, P2, ... PN,将他们按顺序连起来,形成一条折线. 请你求出这条折线的 ...
- [Offer收割]编程练习赛5-1 小Ho的防护盾
#1357 : 小Ho的防护盾 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho的虚拟城市正在遭受小Hi的攻击,小Hi用来攻击小Ho城市的武器是一艘歼星舰,这艘歼星 ...
随机推荐
- Android商城开发系列(七)—— 使用RecyclerView展示首页数据
前面我们讲到了使用OkHttp请求网络和FastJson解析数据了,接下来我们就开始把获取到的数据通过数据适配器展示在页面上了.Adapter是用来帮助填充数据的中间桥梁,简单点说就是:将各种数据以合 ...
- 什么样子的WordPress网站更受搜索引擎欢迎
网站的导航功能对于搜索引擎而言是非常重要的 网站的导航功能对于帮助用户迅速找到他们想要的内容来说是很重要的.它对帮助搜索引擎理解该网站有哪些重要内容同样非常重要.虽然百度的搜索结果都是指向每一个特定的 ...
- 2018.3.27 Mac 配置Tomcat
先在官网上下载Tomcat .也可以用这个传送门. https://tomcat.apache.org/download-70.cgi 选择zip文件夹的下载就ok 下载完成之后将该文件夹.(如果是t ...
- overloading and overriding
What is the difference between method overloading and method overriding in Java? Differences between ...
- Oracle SQL语句性能优化方法大全
Oracle SQL语句性能优化方法大全 下面列举一些工作中常常会碰到的Oracle的SQL语句优化方法: 1.SQL语句尽量用大写的: 因为oracle总是先解析SQL语句,把小写的字母转换成大写的 ...
- oracle系統表、數據字典介紹與日常問題診斷
oracle系統表.數據字典介紹與日常問題診斷 數據字典是由唯讀的table和view組成的,產生於$oracle_home\rdbms\admin\catalog.sql.裡面儲存Oracle資料庫 ...
- Vue路由跳转到新页面时 默认在页面最底部 而不是最顶部 的解决
今天碰到一个问题 vue路由跳转到新的页面时会直接显示页面最底部 正常情况下是显示的最顶部的 而且好多路由中不是全部都是这种情况 折腾好长时间也没解决 最后在网上找到了解决办法 其实原理很 ...
- VC下的C语言程序随机数的产生
本文章适用于VC编译器,VC编译器里有个rand()函数,我们用它来实现取随机数. #include <stdio.h> #include<stdlib.h> //随机数的头文 ...
- POJ-1426-Find the multiply
这题深搜广搜都可以做,深搜的做法就是把每个由1 和 0 组成的数字拓展10倍以及拓展10倍+1,然后压入队列. 这样可以走过所有由10组成的数字,且两个方向平行发展(*10 +0和+1). bfs ...
- 关键字final
final数据 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改:如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象.再次赋值将引起编译报错. 当f ...