Weekly 10 小结
模拟
T = int(input())
while T:
T -= 1
s = raw_input()
n = len(s)
res, pre = 0, 0
for i in xrange(1, n):
if (s[i] == s[pre]):
res += 1
else:
pre = i
print res
模拟
n, k = map(int, raw_input().split())
s = raw_input() res = []
ans = 0
for i in xrange(n):
if i >= k:
ans ^= int(res[i-k])
tmp = ans ^ int(s[i])
res.append(tmp)
ans ^= tmp
print ''.join(map(str, res))
题目大意:给出k种高度不同的积木,每种积木可以使用无数次,问使用这些积木拼成高度为N的塔的方法数对1e9 + 7的模是多少。
另F(x)为拼接成高度为x的方法数,则F(x) = sigma(F(i)) (1 <= i <= k && high[i] <= x)
可先处理出1~15的F函数的值,当N>15时,使用矩阵加速即可。
#include <cmath>
#include <cstdio>
#include <vector>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; typedef long long LL;
const int MOD = 1e9 + ;
#define rep(i, n) for (int i = (1); i <= (n); i++)
LL N, K, A[], f[];
struct Matrix {
LL a[][];
Matrix() {memset(a, , sizeof(a));} Matrix operator * (const Matrix &x) const {
Matrix c;
rep (i, ) rep (k, ) rep (j, ) c.a[i][j] = (c.a[i][j] + x.a[k][j] * a[i][k]) % MOD;
return c;
}
}; Matrix pow_mod(Matrix a, LL b) {
if (b < ) return a;
Matrix res;
rep (i, K) res.a[i][i] = ;
while (b > ) {
if (b & ) res = res * a;
a = a * a;
b >>= ;
}
return res;
} int main() {
ios::sync_with_stdio(false);
cin >> N >> K;
rep (i, K) cin >> A[i]; sort(A + , A + K + );
f[] = ;
rep (i, ) rep (j, K) if (i >= A[j]) f[i] = (f[i] + f[i - A[j]]) % MOD;
rep (i, ) cerr << f[i] << endl;
if (N <= ) {
cout << f[N] * % MOD << endl;
return ;
} Matrix a; rep (i, ) a.a[i][i-] = ;
a.a[][] = ; rep (i, K) a.a[][A[i]] = ;
Matrix res = pow_mod(a, N - );
LL ans = ;
rep (i, ) ans = (ans + res.a[][i] * f[ - i]) % MOD;
ans = (ans * ) % MOD;
cout << ans << endl;
return ;
}
题目大意:给出N个点,每个点有两个值V和P。要求从1开始走到N,在每个点选择有两种选择,要么将总得分加上V,要么还可以向前走P步。
目标是使得走到N时的总得分最大。题目保证至少存在一种解。
这题DP方程很明显,从后往前进行dp, dp[i] = min(dp[i], dp[j]), i < j <= i + P[i];
所以对于每个点,要快速的求出dp[i]~dp[i + P[i]] 的最小值。
直到做这个题我才知道原来BIT也可以用来求最值,原来0base和1base是这个含义。。(数组下标从0/1开始)
原来BIT数组下标可以从0开始,貌似被称为0base邪教,如:for (int x = i; x >= 0; x -= ~x & x + 1) {}
这里很巧妙的利用了~x = - x + 1,即~x = -(x + 1),还有运算符的优先级。摘自叉姐代码。
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std; #define rep(i, n) for (int i = (1); i <= (n); i++)
typedef long long LL;
const int MAX_N = ;
const LL INF = (LL)1e18;
int V[MAX_N], P[MAX_N];
LL tree[MAX_N];
int N; int main() {
scanf("%d", &N);
for (int i = ; i <= N; i++) scanf("%d %d", V+i, P+i); fill(tree+, tree+N+, -INF);
LL ans = tree[N] = V[N], sum = ;
for (int i = N-; i >= ; i--) {
ans = -INF;
for (int x = min(i+P[i], N); x > ; x -= x&-x)
ans = max(ans, tree[x]);
if (ans > -INF) {
for (int x = i; x <= N; x += x&-x)
tree[x] = max(tree[x], ans - V[i]);
} ans += sum;
sum += V[i];
}
printf("%lld\n", ans); return ;
}
Weekly 10 小结的更多相关文章
- CI Weekly #10 | 2017 DevOps 趋势预测
2016 年的最后几个工作日,我们对 flow.ci Android & iOS 项目做了一些优化与修复: iOS 镜像 cocoapods 版本更新: fir iOS上传插件时间问题修复: ...
- 学过 C++ 的你,不得不知的这 10 条细节!
每日一句英语学习,每天进步一点点: “Action may not always bring happiness; but there is no happiness without action.” ...
- ASP.NET MVC 5 05 - 视图
PS: 唉,这篇随笔国庆(2015年)放假前几天开始的,放完假回来正好又赶上年底,公司各种破事儿. 这尼玛都写跨年了都,真服了.(=_=#) 好几次不想写了都. 可是又不想浪费这么多,狠不下心删除.没 ...
- SQList
SQLite顾名思议是以 SQL为基础的数据库软件,SQL是一套强大的数据库语言,主要概念是由「数据库」.「资料表」(table).「查询指令」(queries)等单元组成的「关联性数据库」(进一步的 ...
- Python黑帽编程2.2 数值类型
Python黑帽编程2.2 数值类型 数值类型,说白了就是处理各种各样的数字,Python中的数值类型包括整型.长整型.布尔.双精度浮点.十进制浮点和复数,这些类型在很多方面与传统的C类型有很大的区 ...
- 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》
本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...
- [连载]《C#通讯(串口和网络)框架的设计与实现》-1.通讯框架介绍
[连载]<C#通讯(串口和网络)框架的设计与实现>- 0.前言 目 录 第一章 通讯框架介绍... 2 1.1 通讯的本质... 2 1 ...
- 【模块化编程】理解requireJS-实现一个简单的模块加载器
在前文中我们不止一次强调过模块化编程的重要性,以及其可以解决的问题: ① 解决单文件变量命名冲突问题 ② 解决前端多人协作问题 ③ 解决文件依赖问题 ④ 按需加载(这个说法其实很假了) ⑤ ..... ...
- 软件工程导论-目录-K-T+RJ大
目录 10 第1章 软件工程学概述/1 19 1.1 软件危机/1 19 1.1.1 软件危机的介绍/1 19 1.1.2 产生软件危机的原因/3 21 1.1.3 消除软件危机的途径/4 22 1. ...
随机推荐
- 解决Mysql因内存不足启动失败的问题
参考:https://www.jb51.net/article/136432.htm 一.查看内存 free -h free -m 二.解决方法: 1.增加swap交换空间解决问题: dd if=/d ...
- MAC地址获取,有线网卡与无线网卡、物理网卡与虚拟网卡的区分
获取当前活跃状态的网卡MAC地址.物理地址 Wmic命令:Win32_NetworkAdapter和Win32_NetworkAdapterConfiguration. 其中cmd命令行执行: 1. ...
- Angular 监听滚动条事件
一.引用fromEvent import { fromEvent } from 'rxjs'; 二.调用fromEvent this.subscribeScoll = fromEvent(window ...
- egret 篇——关于ios环境下微信浏览器的音频自动播放问题
前段时间公司突然想用egret(白鹭引擎)做一个金币游戏,大半个月边看文档边写吭哧吭哧也总算是弄完了.期间遇到一个问题,那就是ios环境下微信浏览器的音频自动播放问题. 个人感觉吧,egret自己封装 ...
- c语言学习笔记 - 结构体位域
在学习结构体的时候遇到了位域这个概念,位域主要是为了节省内存空间,比如用一个32位,4个字节的int存储一个开关变量时,会造成空间浪费,于是干脆就考虑在这个32划分不同的区域来存储数据,例如划出1位存 ...
- 大O法时间复杂度计算
困惑的点——log,如何计算得出? ① 上限:用来表示该算法可能有的最高增长率. ② 大O表示法:如果某种算法的增长率上限(最差情况下)是f(n),那么说这种算法“在O(f(n))中”.n为输入规模. ...
- Spring MVC(四)--控制器接受pojo参数
以pojo的方式传递参数适用于参数较多的情况,或者是传递对象的这种情况,比如要创建一个用户,用户有十多个属性,此时就可以通过用户的pojo对象来传参数,需要注意的是前端各字段的名称和pojo对应的属性 ...
- 基于vue-cli的vs code设置
vue-cli自带eslin校验,vs code采用下可以设置在保存文件时会自动纠正格式 { // vscode默认启用了根据文件类型自动设置tabsize的选项 "editor.detec ...
- 【转载】Python eval
转载 作者博文地址:https://www.cnblogs.com/liu-shuai/ eval 功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法: eval(source[, gl ...
- springMVC dubbo注解无效,service层返回空指针
出现空指针的原因是:spring mvc扫描的时候根本无法识别@Reference ,同一方面,dubbo的扫描也无法识别Spring @Controller ,所以两个扫描的顺序要排列好, 如果先 ...