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城市的武器是一艘歼星舰,这艘歼星 ...
随机推荐
- sqlserver 查询某表的所有列名
select name + ',' from syscolumns where id = object_id('SEND_TALLY') AND name <> 'PICDATAS'
- OCX和DLL的区别
转自:http://blog.csdn.net/scucj/archive/2006/06/29/852181.aspx OCX和DLL的区别 一.关于DLL的介绍 DLL,动态链接库,Dy ...
- 首次将项目从eclipse提交到服务器的SVN
1.在Eclipse项目中,点击需要提交到svn的项目,鼠标右键,如下图: 2.鼠标右键后,我们看到Team选项,在二级菜单中点击“Share Project”,这个时候弹出“Share Projec ...
- POJ 2184 Cow Exhibition 奶牛展(01背包,变形)
题意:有只奶牛要证明奶牛不笨,所以要带一些奶牛伙伴去证明自己.牛有智商和幽默感,两者可为负的(难在这),要求所有牛的智商和之 / 幽默感之和都不为负.求两者之和的最大值. 思路:每只牛可以带或不带上, ...
- [机器视觉] SIFT特征-尺度不变特征理解
SIFT特征-尺度不变特征理解 简介 SIFT,即尺度不变特征变换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述.这种描述具有尺度不变性 ...
- MySQL8 Authentication plugin 'caching_sha2_password' cannot be loaded
这是因为mysql8 和以前密码的验证方式不同,可以先从命令行进入 MySQL -uroot -p 然后输入 ALTER USER 'root'@'localhost' IDEN ...
- Word2vec资料
Word2vec 很好的资料 Word2Vec-知其然知其所以然 https://www.zybuluo.com/Dounm/note/591752 Word2Vec数学原理讲解 http://w ...
- Java基础面试操作题:线程同步代码块 两个客户往一个银行存钱,每人存三十次一次存一百。 模拟银行存钱功能,时时银行现金数。
package com.swift; public class Bank_Customer_Test { public static void main(String[] args) { /* * 两 ...
- 51nod——2504 是子序列的个数(一看就会的序列自动机原理)
还以为序列自动机是什么,写完无意间看到帖子原来这就是序列自动机……这算自己发现算法
- [LUOGU] 4149 [IOI2011]Race
点分治裸题 #include<iostream> #include<cstring> #include<cstdio> using namespace std; i ...