JSOI2015 day1

JSOI2015 day1

题目和官方题解:点击打开链接

t1:
题目大意 设全集为1个拥有n个数的集合,现在把全集的子集填入k行的三角形中,其中三角形第i行有i列(有点像杨辉三角).
要求对于i行j列填入的子集f[i][j],必须使得f[i][j]为f[i-1][j]的子集,同时也要是f[i][j+1]的子集.(当f[i][j]==f[i-1][j]这种情况发生时也认作合法).
给出n和k,求方案数mod(1e9+7).
(n,k<=10^9)
思路:
想都没想就深搜打了一个4x4的表,发现答案就是2^(n*k)....开心.
然而这到底怎么做的呢?

t2:
题目大意 有n个物品,每个物品有不同的值A[i],允许从中选出连续的一段物品(长度在l到r之间,l,r由题中给出.)
最大化(max(A[i]...A[j])-min(A[i]...A[j]))/(j-i+k).
(i到j为选出的区间).k是题目给出的常数.

(n<=50000)

思路:分数规划(其实这是什么鬼我不知道....)只打了一个暴力.

t3:
题目大意 给出一棵树,每一条树边上有一个字符串,每次询问给出a,b,一个字符串s,询问a到b路径上有多少条边上的字符串以s为前缀.
(n,q<=10^5,所有字符串的长度<=10)

思路:
可持久化trie裸题.
倒是我自己yy了一种算法(卡hash好不容易A了...)对于每一条边上的字符串把它所有的前缀都hash下来存在以root[]为根的权值线段树中,询问的时候树链剖分+权值线段树前缀和相减就可以了.


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值