题目链接


题目大意:

就是你有n次操作,每次操作给你三个参数:ti,xi,yit_i,x_i,y_iti​,xi​,yi​。
如果ti==1t_i == 1ti​==1你可以进行k=k+xik=k+x_ik=k+xi​若干次可以为0但是最大不能超过yiy_iyi​;
如果ti==2t_i == 2ti​==2你可以进行k=k∗xik=k*x_ik=k∗xi​若干次可以为0但是最大不能超过yiy_iyi​;
对于1到m中的数,询问你是否可以通过若干次操作变成这个数,如果可以最小的操作次数是多少?


解题思路:

1.搜先它要的是最少的操作次数那么我们只能枚举n去计算了
2.但是我们怎么快速的算出前n次操作可以造出那些数?
最暴力的想法就是枚举n之后我们再枚举m,看看里面有哪些数是已经存在的,存在的数再进行操作总的时间复杂度是O(nm2)O(nm^2)O(nm2)爆炸!!
3.搜先我们先看一下,假如说这里已经存在的数是[3,11], 而 ti=1,xi=4,yi=4t_i=1,x_i=4,y_i=4ti​=1,xi​=4,yi​=4
那么3进化的集合为[3,7,11,15,19]
11进化的集合为[11,15,19,23,27]
你会发现已经重合了后面部分那么,我们就可以从大到小枚举m大到小枚举m大到小枚举m如果出现数字已经构造出来了就直接break,这样虽然里面是两层循环但是我们都是控制再[0,m]范围内,那么总的时间才O(n∗m)O(n*m)O(n∗m)


#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 10;
int n, m;
int ans[maxn];
int main() {cin >> n >> m;memset(ans,0x3f,sizeof(ans));ans[0] = 0;for(int i = 1; i <= n; ++ i) {ll t, x, y;cin >> t >> x >> y;for(int j = m; j >= 0; -- j) {if(ans[j] == INF) continue;ll z = j;for(int k = 1; k <= y; ++ k) {if(t == 1) z = (z * 1e5 + 1e5 + x - 1) / 1e5;else z = (z * x + 1e5 - 1) / 1e5;if(z > m) break;if(ans[z] != INF) break;ans[z] = i;}}       }for(int i = 1; i <= m; ++ i)if(ans[i] == INF)cout << "-1 ";else cout << ans[i] << " "; return 0;
}

枚举 ---- Codeforces Round #711 (Div. 2) D. Bananas in a Microwave[枚举暴力+思维优化]相关推荐

  1. CodeCraft-21 and Codeforces Round #711 (Div. 2) D. Bananas in a Microwave 优化暴力

    传送门 文章目录 题意: 思路: 题意: 有nnn个时间,每个时间给你两个操作,第一个是k=k+xk=k+xk=k+x,第二个是k=k∗xk=k*xk=k∗x,且可以执行[0,y][0,y][0,y] ...

  2. CodeCraft-21 and Codeforces Round #711 (Div. 2)

    CodeCraft-21 and Codeforces Round #711 (Div. 2) 题号 题目 考点 A GCD Sum 签到,模拟 B Box Fitting 贪心 C Planar R ...

  3. CodeCraft-21 and Codeforces Round #711 (Div. 2) 题解

    先上链接CodeCraft-21 and Codeforces Round #711 (Div. 2) A: 从n开始往后找,不出几十个 一定能找到的,所以暴力就好了 void sovle(){cin ...

  4. 【Christmas Game】【CodeCraft-21 and Codeforces Round #711 (Div. 2)】【Nim-博弈】【树形DP】【拆分树】

    CodeCraft-21 and Codeforces Round #711 (Div. 2) Christmas Game Nim-博弈 树形DP 拆分树 牛客链接 https://ac.nowco ...

  5. Codeforces Round #636 (Div. 3) F. Restore the Permutation by Sorted Segments 思维 + 暴力

    传送门 文章目录 题意: 思路: 题意: n≤200n\le200n≤200 思路: 首先关注到rrr从[2,n][2,n][2,n]都出现一次,所以很明显最后一个位置只出现一次,但是这样倒着来不是很 ...

  6. Codeforces Round #727 (Div. 2) F. Strange Array 线段树 + 区间合并 + 排序优化

    传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的数组,对每个位置iii求一个最大价值,价值计算方式如下:选择一个包含iii的[l,r][l,r][l,r],让后将其拿出来排序,之后价值 ...

  7. Codeforces Round #601 (Div. 2) E2. Send Boxes to Alice (Hard Version) 思维 + 质因子

    传送门 文章目录 题意: 思路: 题意: 大体题意跟easyeasyeasy版本差不多,就是hardhardhard版本的aaa范围更大.见这里Codeforces Round #601 (Div. ...

  8. acm-(模拟、暴力枚举)Codeforces Round #664 (Div. 1) A. Boboniu Chats with Du

    传送门 将元素分为两类,大于mmm的和小于等于mmm的. 对于大于mmm的,我们将最大的那个放在序列末端,然后枚举其它元素有多少个能产生贡献,假设有xxx个能产生贡献,那么这xxx个元素还会消耗xdx ...

  9. CodeCraft-21 and Codeforces Round #711 (Div. 2) C. Planar Reflections

    题意 给定一个衰变期为k的粒子,依次穿过n个墙(从左到右),每次穿过一个墙,都会在运动的反方向生成一个衰变期为k -1 的粒子,这个粒子仍保持原来的衰变期和方向穿下一个墙,生成的粒子沿反方向穿墙.直到 ...

最新文章

  1. Powershell管理系列(二十八)PowerShell操作之修改AD账号密码
  2. ajax的data传参的两种方式
  3. C#设计模式之16-迭代器模式
  4. 学会这篇文章分享的知识,你就超过了90%的测试人
  5. Takeown 实现解析
  6. vim 模式下的几个快捷用法
  7. Kaggle Tabular Playground Series - Jan 2022 学习笔记2(使用时间序列的线性回归)
  8. 由PPP项目总结的几点项目经验
  9. confirm() 中写html,confirm用法 Confirm……that……
  10. 冒烟测试 SMOKE Test
  11. C++计算md5/sha1/sha256/sha384/sha512算法
  12. 用python编写一个点餐程序_急急急!求大神帮忙做个Python在线点餐小软件
  13. 请问这个问题怎么解决呀?打开什么也用不了
  14. GPU深度发掘 -- GPGPU数学基础教程
  15. 大学学计算机专业要自带电脑吗,大学上课要带电脑吗
  16. 国开,现代汉语专题,形考答案形考任务一
  17. 阿朱推荐的产品经理读物30本书(修订版)
  18. 【OpenCV】OpenCV基础教程(9)—— 傅里叶变换
  19. 设计模式6--适配器模式
  20. Springboot基于Android的洗衣店预约APP 毕业设计-附源码260839

热门文章

  1. 万维网与HTTP协议
  2. 如何停止电脑正在运行的VBS程序?
  3. ACMNO.9求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。 例如:2+22+222+2222+22222(n=5),n由键盘输入。 输入 n 输出 a=2 时
  4. 七个算法小仙女,写出一本1200页的深度学习技术手册!(限时公开下载)
  5. 比较全面的L1和L2正则化的解释
  6. 世界机器人领域12个前沿技术趋势
  7. 第6章——广度优先搜索
  8. 基础知识——列表简介(二)
  9. lnmp shell安装脚本
  10. RHEL 5服务篇—修改MySQl数据库root密码的几种方式