A组Day7
A. 放置石子

我们设第一格的东西为 \(x\) ,则接下来的格数为
3:2x+1\\
4:3x+2\\
5:5x+3\\
...
\]
易得x的系数就是原来的斐波那契额数列,而后面加上来的也是!我们可以打表

左边为系数表,右边为加的数表
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll xs[21] = {0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765};
ll k[21] = {1, 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181};
int main()
{
freopen("kela.in", "r", stdin);
freopen("kela.out", "w", stdout);
long long a, x, b;
while (cin >> a >> x >> b)
{
if ((x - k[a]) % xs[a] == 0)
printf("%lld\n", (x - k[a]) / xs[a] * xs[b] + k[b]);
else
puts("-1");
}
return 0;
}
B.连通块数

暴力进行dfs即可,这里注意,每次进行dfs的时候都要扩展完毕,然后后面一遇到没扩展的就扩展
#include <bits/stdc++.h>
using namespace std;
const int N = 55;
int l, w, h, m;
int dx[7] = {0, 0, 0, 0, 0, 1, -1};
int dy[7] = {0, 0, 0, -1, 1, 0, 0};
int dz[7] = {0, 1, -1, 0, 0, 0, 0};
int a[N][N][N];
bool vis[N][N][N];
int ans = 0;
void dfs(int x, int y, int z)
{
for (int i = 1; i <= 6; i++)
{
int tx = x + dx[i], ty = y + dy[i], tz = z + dz[i];
if (tx < 1 || tx > l || ty < 1 || ty > w || tz < 1 || tz > h || vis[tx][ty][tz])
continue;
if (abs(a[x][y][z] - a[tx][ty][tz]) <= m)
{
vis[tx][ty][tz] = 1;
dfs(tx, ty, tz);
}
}
}
int main()
{
freopen("engineer.in", "r", stdin);
freopen("engineer.out", "w", stdout);
cin >> l >> w >> h;
cin >> m;
for (int i = 1; i <= l; i++)
for (int j = 1; j <= w; j++)
for (int k = 1; k <= h; k++)
cin >> a[i][j][k];
for (int i = 1; i <= l; i++)
for (int j = 1; j <= w; j++)
for (int k = 1; k <= h; k++)
{
if (!vis[i][j][k])//就是这里
{
ans++;
vis[i][j][k] = 1;
dfs(i, j, k);
}
}
cout << ans << endl;
return 0;
}
C.股票问题
反悔贪心模板题目
#include <bits/stdc++.h>
using namespace std;
int n;
priority_queue<int, vector<int>, greater<int>> q;
int main()
{
freopen("b.in", "r", stdin);
freopen("b.out", "w", stdout);
long long ans = 0;
cin >> n;
for (int i = 1; i <= n; i++)
{
int k;
cin >> k;
if (!q.empty() && q.top() < k)////如果今天的卖出股票比之前的某一天卖出股票更优的话,就买回之前的股票,然后再卖出今天的股票
ans += k - q.top(), q.pop(), q.push(k);
q.push(k);
}
cout << ans << endl;
return 0;
}
D.灯泡开关
考虑加上一个等差数列。
怎么维护呢?先差分这个数组,举个例子,如果要在0 0 0 0 0 0 0 0 0 0 0中的3-7加一个从1开始的等差数列,
0 0 1 2 3 4 5 0 0 0 0差分后变成0 0 1 1 1 1 1 -5 0 0 0,就是一个区间+1后在末尾减掉最后一个数,
再差分一次,0 0 1 1 1 1 1 -5 0 0 0就变成了0 0 1 0 0 0 0 -6 5 0 0,发现等差数列差分两次后的数组只涉及三个数的修改。
所以我们每次更新原来的答案数组的差分再差分数组,最后前缀和还原差分数组以及还原原数组即可。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e6 + 10;
int n, m;
ll a[N];
ll cnt[N][2];//cnt[i]表示以i为舒适值最多少走多少
//0,1分别是因为这是一个环差分。
ll check()
{
ll res = 0;
for (int i = 2; i <= n; i++)
{
if (a[i] > a[i - 1])
res += a[i] - a[i - 1];
else
res += a[i] + m - a[i - 1];
}
return res;
}
void change(int l, int r, int s)
{
// cout << l << ' ' << r << ' ' << s << endl;
cnt[l][0] += s;
cnt[r + 1][0] -= s;
cnt[l + 1][1] += 1;
cnt[r + 1][1] -= (r - l + 1);
cnt[r + 2][1] += (r - l);
}
int main()
{
freopen("light.in", "r", stdin);
freopen("light.out", "w", stdout);
cin >> n >> m;
for (int i = 1; i <= n; i++)
cin >> a[i];
for (int i = 2; i <= n; i++)
{
if (a[i] > a[i - 1])
{
if (a[i] - a[i - 1] >= 2)
change(a[i - 1] + 2, a[i], 1);
}
else
{
if (m - a[i - 1] >= 2)
change(a[i - 1] + 2, m, 1), change(1, a[i], m - a[i - 1]);
if (m - a[i - 1] == 1)
change(1, a[i], 1);
if (m == a[i - 1])
{
if (a[i] >= 2)
change(2, a[i], 1);
}
}
}
for (int i = 2; i <= m + 1; i++)
cnt[i][0] += cnt[i - 1][0], cnt[i][1] += cnt[i - 1][1];
for (int i = 2; i <= m + 1; i++)
cnt[i][1] += cnt[i - 1][1];
ll ans = 0;
for (int i = 1; i <= m; i++)
ans = max(ans, cnt[i][0] + cnt[i][1]);
cout << check() - ans << endl;
return 0;
}
A组Day7的更多相关文章
- 纪中2018暑假培训day7提高b组改题记录
由于今天太颓了,所以没有解释 t1: Description 码零鼠是一只很喜欢mx数学的神犇,上面那个不是ta本人的样子.这天,ta在研究一个神奇的数列,这个数列是这样的:a0 = 1an = ai ...
- 热情组——项目冲刺 Day7
项目相关 作业相关 具体描述 班级 班级链接 作业要求 链接地址 团队名称 热情组 作业目标 实现软件制作,以及在福大的传播 Github链接 链接地址 SCRUM部分: 成员昵称 昨日目标 开始时间 ...
- python笔记 - day7
python笔记 - day7 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 面向对象,初级篇: http://www.cnblog ...
- python_way.day7 模块(configparser,xml,shutil,subprocess)、面向对象(上)(创建类,类的构成,函数式编程与面向对象编程的选择,类的继承)
python_way.day7 1.模块 configparser,xml,shutil,subprocess 1.模块 a.configparser 用于处理特定格式的文件,其本职上使用open ...
- 《团队作业第三、第四周》五小福团队作业--Scrum 冲刺阶段--Day7
<团队作业第三.第四周>五小福团队作业--Scrum 冲刺阶段--Day7 一.项目燃尽图 二.项目进展 [20172301郭恺第七天的进展] 第七天完成的任务: 代码整合,界面调整为相对 ...
- sqli-labs学习笔记 DAY7
DAY7 sqli-labs阶段总结 基本步骤 判断是否报错 判断闭合符号 判断注入类型 构建payload 手工注入或者编写脚本 基本注入类型 报错型注入 floor公式(结果多出一个1):and ...
- 2019暑期金华集训 Day7 动态规划
自闭集训 Day7 动态规划 LOJ6395 首先发现这个树的形态没啥用,只需要保证度数之和是\(2n-2\)且度数大于0即可. 然后设\(dp_{i,j}\)表示前\(i\)个点用了\(j\)个度数 ...
- 01.SQLServer性能优化之----强大的文件组----分盘存储
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...
- SQL Server 大数据搬迁之文件组备份还原实战
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 解决方案(Solution) 搬迁步骤(Procedure) 搬迁脚本(SQL Codes) ...
- SQLSERVER将一个文件组的数据移动到另一个文件组
SQLSERVER将一个文件组的数据移动到另一个文件组 有经验的大侠可以直接忽视这篇文章~ 这个问题有经验的人都知道怎麽做,因为我们公司的数据量不大没有这个需求,也不知道怎麽做实验 今天求助了QQ群里 ...
随机推荐
- 【译】为你的 ASP. NET Core Web API 创建 Microsoft Power App
通过轻松创建 Web API 前端来提升您的开发体验. 低代码工具在开发人员中越来越流行,因为用更少的代码更快地创建应用程序.在 Visual Studio 2022 17.6 预览版2中,您现在可以 ...
- 使用 FastGPT 构建高质量 AI 知识库
作者:余金隆.FastGPT 项目作者,Sealos 项目前端负责人,前 Shopee 前端开发工程师 FastGPT 项目地址:https://github.com/labring/FastGPT/ ...
- 【路由器】OpenWrt 配置使用
目录 Web 界面 汉化 root 密码 ssh 升级 LuCI 美化 锐捷认证 MentoHUST MiniEAP 防火墙 开放端口 端口转发 IPv6 USB 安装 USB 驱动 自动挂载 Ext ...
- Android13深入了解 Android 小窗口模式和窗口类型
Android13深入了解 Android 小窗口模式和窗口类型 小窗模式,作为一种在移动设备上的多任务处理方式,为用户带来了便捷和高效的体验,尤其在一些特定场景下,其价值愈发凸显.以下是为什么需要小 ...
- 虚拟机问题:VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行
解决办法:关闭Hyper-V功能. windows10使用VMware Workstation打开虚拟机时显示 VMware Workstation 与 Hyper-V 不兼容.请先从系统中移除 Hy ...
- 推荐一个react上拉加载更多插件:react-infinite-scroller
在开发网页和移动应用时,经常需要处理大量数据的展示和加载.如果数据量非常大,一次性全部加载可能会导致页面卡顿或崩溃.为了解决这个问题,我们可以使用无限滚动(Infinite Scroll)的技术.Re ...
- Java 21 新特性:switch的模式匹配
在之前的Java 17新特性中,我们介绍过关于JEP 406: switch的模式匹配,但当时还只是关于此内容的首个预览版本.之后在JDK 18.JDK 19.JDK 20中又都进行了更新和完善.如今 ...
- 宏观上理解blazor中的表单验证
概述 表单验证的最终效果大家都懂,这里不阐述了,主要从宏观角度说说blazor中表单验证框架涉及到的类,以及它们是如何协作的,看完这个,再看官方文档也许能更轻松点. blazor中的验证框架分为两部分 ...
- CopyOnWriteArrayList 写时复制思想
写时复制 conpyOnWrite容器即写时复制容器.往一个容器添加元素的时候,不直接往当前容器Object[]添加,而是先将当前容器Object[]进行Copy,复制出一个新的容器Object[] ...
- JS逆向实战23 某市wss URL加密+请求头+ws收发
声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 本文首发链接为: http ...