A题

模拟

 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

B题

模拟

 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))

C题

题目大意:给出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 ;
}

D题

题目大意:给出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 ;
}

E题

Weekly 10 小结的更多相关文章

  1. CI Weekly #10 | 2017 DevOps 趋势预测

    2016 年的最后几个工作日,我们对 flow.ci Android & iOS 项目做了一些优化与修复: iOS 镜像 cocoapods 版本更新: fir iOS上传插件时间问题修复: ...

  2. 学过 C++ 的你,不得不知的这 10 条细节!

    每日一句英语学习,每天进步一点点: “Action may not always bring happiness; but there is no happiness without action.” ...

  3. ASP.NET MVC 5 05 - 视图

    PS: 唉,这篇随笔国庆(2015年)放假前几天开始的,放完假回来正好又赶上年底,公司各种破事儿. 这尼玛都写跨年了都,真服了.(=_=#) 好几次不想写了都. 可是又不想浪费这么多,狠不下心删除.没 ...

  4. SQList

    SQLite顾名思议是以 SQL为基础的数据库软件,SQL是一套强大的数据库语言,主要概念是由「数据库」.「资料表」(table).「查询指令」(queries)等单元组成的「关联性数据库」(进一步的 ...

  5. Python黑帽编程2.2 数值类型

    Python黑帽编程2.2  数值类型 数值类型,说白了就是处理各种各样的数字,Python中的数值类型包括整型.长整型.布尔.双精度浮点.十进制浮点和复数,这些类型在很多方面与传统的C类型有很大的区 ...

  6. 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》

    本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...

  7. [连载]《C#通讯(串口和网络)框架的设计与实现》-1.通讯框架介绍

    [连载]<C#通讯(串口和网络)框架的设计与实现>- 0.前言 目       录 第一章           通讯框架介绍... 2 1.1           通讯的本质... 2 1 ...

  8. 【模块化编程】理解requireJS-实现一个简单的模块加载器

    在前文中我们不止一次强调过模块化编程的重要性,以及其可以解决的问题: ① 解决单文件变量命名冲突问题 ② 解决前端多人协作问题 ③ 解决文件依赖问题 ④ 按需加载(这个说法其实很假了) ⑤ ..... ...

  9. 软件工程导论-目录-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. ...

随机推荐

  1. Android开发 多媒体提取器MediaExtractor详解_入门篇

    前言 MediaExtractor字面意思是多媒体提取器,它在Android的音视频开发里主要负责提取视频或者音频中的信息和数据流(例如将视频文件,剥离出音频与视频).本章博客将讲解一些入门简单的东西 ...

  2. [JZOJ4649] 【NOIP2016提高A组模拟7.17】项链

    题目 描述 题目大意 给你一堆小串,每个小串都有一定的分数. 让你构造一个字符串,若子串中出现了之前的小串,就可以得到对应的分数(可以重复) 问最大分数. 思考历程 一看这题就知道是什么字符串方面的算 ...

  3. 2016.8.19上午初中部NOIP普及组比赛总结

    2016.8.19上午初中部NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1338 这次总结发得有点晚啊!我在这里解释一下, 因为浏览器的问 ...

  4. 用C++Builder在Windows开始按钮上绘图制作方法

    熟悉Windows操作系统的软件设计人员知道,在Win95/98/NT/2000中有一任务栏(Task Bar)程序,路径为:C:\WINDOWS\SYSTEM\SYSTRAY.EXE(假设你的Win ...

  5. LUOGU P2831 愤怒的小鸟 (NOIP 2016)

    题面 题解 好像昨天wxl大爷讲的是O(Tn*2^n)的做法,后来没想通,就自己写了个O(Tn^2*2^n)的暴力状压, 莫名其妙过了??数量级二十亿??懵逼,可能到了CCF老爷机上就T了.dp[S] ...

  6. Bean容器的初始化

    Bean容器的初始化

  7. 杂项-公司:Microsoft

    ylbtech-杂项-公司:Microsoft 微软,是一家美国跨国科技公司,也是世界PC(Personal Computer,个人计算机)软件开发的先导,由比尔·盖茨与保罗·艾伦创办于1975年,公 ...

  8. Docker在线文档收集

    极客学院 kubernetes中文社区 易百教程

  9. java — 抽象类和接口

    老生常谈的一个概念,很明确,不过我们多从几个角度来看下应该会有更好的理解,最近翻了下java8的某些新特性 关于接口的新特性让笔者受惊了,下面结合下做个总结,有更新的话直接在这里更新. 设计层面讲: ...

  10. OSG实现利用菲波那契网格(Fibonacci lattice 或 Fibonacci grid)均分球面

    #include<Windows.h> #include<osg/Node> #include<osg/Geode> #include<osg/Group&g ...