上次我介绍了第 001 号分析思维模型: 福格行为模型(点我) 下面开始介绍第 002 号分析思维模型: 杜邦分析模型 1. 应用杜邦分析模型的步骤: (1)从核心指标开始,逐层分解各个指标; (2)制作杜邦分析图,填入相关指标数据; (3)对比前后期数据,或者横向进行对比。 2. 应用举例 杜邦分析模型在财务分析、销售管理等领域都有着广泛的应用。 比如说,我用 Excel 做了一个杜邦分析模型,它体现了数据分析的对比思维和细分思维,就是把一些重要的财务指标,按月份进行对比,并层层进行分解。 ? 小结 杜邦分析模型带给我们的启示,是在日常工作和生活中,要有对比思维、细分思维和上游思维,深度参与和服务自己的上一个环节,争取在问题发生之前,就把问题解决掉。
题意 可以对每个数进行除2的操作,求最少需要操作多少次,使得数组中有k个相同的数 思路 题目中说答案始终存在,因为每个数都可以变成0,但很明显,让数字变成0的情况是不存在的,每个数字不停的除2肯定可以变成 0 5 2* 10^5 2∗105,每个数字除2不超过20次就可以变成1,我们遍历一遍数组即可得到答案。 int> PII; typedef pair<long,long> PLL; typedef pair<char,char> PCC; typedef long long ll; const int N=2* =1){ f/=2; cnt[f]++; tot[f]+=res; if(
Vladik and Courtesy time limit per test:2 seconds memory limit per test:256 megabytes input:standard After that Valera gave Vladik 2 his candies, so that no one thought that he was less generous. Examples Input 5 5 5 4 3 2 1 1 5 3 1 3 1 2 4 3 4 4 4 2 5 3 Output Yes No Yes Yes No Input 6 5 1 4 3 2 5 6 2 4 3 1 6 2 4 5 4 1 3 3 2 6 3 Output Yes No Yes No Yes Note Explanation of first test case: [1, 2, 3, 4, 5] — permutation after sorting, 3-rd element hasn’t changed, so answer is "Yes"
我们可以发现,枚举的中间区间一定是连续的,以 [ 1 , 1 , 1 , 2 , 1 , 2 , 1 , 1 ] [1,1,1,2,1,2,1,1] [1,1,1,2,1,2,1,1]为例,见下图 假设当前数字出现的次数为 u u u ,则两侧最多有 u / 2 u/2 u /2个数字。 如果 u u u 是偶数,则中位数有两个: u / 2 u/2 u /2和 u / 2 − 1 u/2-1 u /2−1。 如果 u u u 是奇数,那么中位数只有一个: u / 2 u/2 u /2,但要保证两侧数字出现的次数相同,所以我们只能取 u / 2 − 1 u/2-1 u /2−1和 u / 2 + 1 u/2+ 我们可以发现,如果取 u / 2 u/2 u /2和 u − u / 2 u-u/2 u − u /2的话,对于奇偶来说是相同的,所以不用对奇偶进行判断。
那么总的来说,我分为四种思维模式: 一、技术思维 卧槽!干代码!出bug了!没错,这就是你进步的源头。 二、业务数据思维 业务思维上,更多会考虑到业务本身的价值,具有较强的业务敏感度。 三、产品思维 对于产品思维,很多人会想到,程序员总想砍死产品经理,改来改去哈哈。。但是其实产品思维的核心在于 与人打交道、与业务打交道、与技术打交道 以及 事物的推动作用。 那么产品思维,我们就可以概括为:业务本身、技能专业度、洞察力、心理学、全局观、高情商以及耐心,是一种复合的思维。 四、复合思维 毕竟本人也是技术出身,所以对于技术的感官更加强烈哈哈。。 但是如果,你能在精通专业技术的基础上,融合 技术 业务 产品 的体系化思维模式,我称之为复合型思维,因为这种思维模式,包含强大的同理心,包含敏锐的洞察力,同时也包含一定的视野广度,需要结合心理学、哲学、
Vicious Keyboard time limit per test:2 seconds memory limit per test:256 megabytes input:standard input 此题的意思就是要找出KV这个组合,判断a[i+1]=='K'||(a[i]=='V'&&a[i+2]!='K'是否成立,成立+1,否则输出组合情况数! 下面给出AC代码: 1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 char a[105]; ans++; 15 i++; 16 } 17 else if(a[i+1]=='K'||(a[i]=='V'&&a[i+2] The function takes two strings s1 and s2.
基本类型的赋值 整数类型 整数类型有byte, short, int和long,分别占用1/2/4/8个字节,取值范围分别是: 类型名 取值范围 byte -2^7 ~ 2^7-1 short -2^15 ~ 2^15-1 int -2^31 ~ 2^31-1 long -2^63 ~ 2^63-1 我们用^表示指数,2^7即2的7次方。 int c = 2*a+b; //2乘以a的值再加上b的值赋给c 上面介绍的赋值都是在声明变量的时候就进行了赋值,但这不是必须的,可以先声明变量,随后再进行赋值。 数组类型 赋值语法 基本类型的数组有三种赋值形式,如下所示: int[] arr = {1,2,3}; int[] arr = new int[]{1,2,3}; int[] arr = new int [3]; arr[0]=1; arr[1]=2; arr[2]=3; 第一种和第二种都是预先知道数组的内容,而第三种是先分配长度,然后再给每个元素赋值。
---- AC代码: #include <bits/stdc++.h> using namespace std; int n; map<int,int> ma1,ma2; int main() { ,&n); for(int i=1;i<=n;i++){ int x; scanf("%d",&x); if(ma1[x] == 0) ma1[x] = i; ma2[ x] = i; } int ans = 0; for(int i=1;i<=n;i++){ if(ma1[i] == ma2[i] && ma1[i] == 0) continue; if(ma1[i] == 1 && ma2[i] == n) continue; if(ma1[i] ! = 1 && ma2[i] !
原理 逆向思维的工作原理基于以下几个方面: 反转视角:要求我们从与传统观点相反的角度看待问题,通过反转问题的方向、目标或假设,打破常规的思维模式,发现新的可能性和解决方案。 出处 逆向思维作为一种思维模型,其概念和应用广泛存在于各个领域和学科中,特别是在创新和问题解决方面。它并非特定于某个特定的学术文献或著作,而是一种普遍的思维方式。 定义 逆向思维,也称求异思维,是对司空见惯的、似乎已成定论的事物或观点反过来思考的一种思维方式。 缺点:简单场景不需要逆向思维;有些场景逆向思维会增加复杂性;有些场景则不适合逆向思维。 使用场景 创新领域:帮助人们打破传统思维的桎梏,找到全新的创意和创新点。 问题解决:当传统方法无法解决难题时,逆向思维可以帮助人们打破思维定势,寻找新的解决方案。 图例
题目链接:https://codeforces.com/contest/1131/problem/C
yum: name=httpd state=latest - name: write the apache config file template: src=/srv/httpd.j2
版权声明:欢迎转载,若转载,请标明出处,如有错误,请指点,也欢迎大佬们给出优化方法 https://blog.csdn.net/Charles_Zaqdt/article/details/89067262
今天选择的题目是codeforces contest 1419的D2题,难度也不算很大,也是典型的思维题。 如果大家跟过几篇文章,相信应该对codeforces的风格也比较熟悉了,以思维题为主,算法为辅。 我个人比较喜欢这样的风格,做不出来题目一定不是算法不会,而是思维能力不够没想到解法,我个人觉得比较锻炼人,非常适合用来面试之前的思维训练。 也就是对于1 2 2 4 5这样的样例就无法满足,无法满足的原因也很简单,因为出现了重复的2。按照我们刚才的做法,导致4 2 2无法构成低价。 这也是我们算法能力当中很大的一部分,比如面试的时候当我们遇到问题卡住的时候,就非常需要这样固定的思维模式。希望大家好好体会一下这道题的思考过程,领会这种分析问题解决问题的思考过程。
思路大致就是暴力,但是最简单的暴力的时间复杂度应该是n^2*m的,所以需要换一种思路,用ma来存每个数出现的次数,我们枚举x和y中的x,然后看有多少组数中含有x,然后我们去寻找出现了m-ma[x]次数的数
当然最终在大方向上达成了一致,不过沟通的过程对我有些许启发,即技术思维和产品思维的不同。 所谓的技术思维是什么呢?一切以技术为出发点,拿着锤子四处敲钉子。 但换个角度,技术同学的技术思维,又何尝不是一种思维惯性的依赖路径。因为擅长什么,所以什么事都下意识从自己擅长的角度去分析和尝试解决。 产品思维是什么呢?用户有什么痛点,该如何解决他们的问题,我能提供什么产品功能和服务,能否解决用户的痛点,怎样才能让用户选择我的产品,而不是其他竞品? 课程矩阵,组合课程优惠策略,提供免费的软技能提升服务,定时定向的内部分享; 产品思维,其实是一种换位思考解决问题的思维方式。 不要成为锤子下的牺牲品 不要仅限于只做测试工作 构建自己的思维逻辑体系 如何构建自己的知识体系?
升级Vue3后,让人最脑壳疼的应该是新的Compostion API语法,他的难点不是语法,而是他提供了全新的组织代码的思维方式。 在Vue2中,通常做法是响应数据放到data、逻辑方法放到methods,这样的做法非常方便,也让我们很容易组织代码。 我在github随便找了一段代码,你觉得这段代码比Vue2简洁吗? 也就是说,你不应该被option api限制思维,而更多关注逻辑内聚问题。 但是从讨论的内容和我实战的经验,用新的API,一定要注意转变代码组织思维,记住一个词"逻辑关注点"。
题目链接:https://codeforces.com/contest/1131/problem/B 题意是输入一个n,然后n行每行输入两个数,表示在某一时刻场上两个队的比分,比如说1 1到2 2中间的变化可能是(1 2)(2 2)或者(2 1)(2 2),问在所有的变化中,出现平分的次数最多有多少次。 思路就是在一个比分到下一个比分中,能出现相同的分数的一定在min(next1 next2)和max(now1 now2)之间,所以每次就找这两个值相减就好了,如果now1等于now2的话会多算一次。
Examples Input 1 1 10 Output 10 Input 1 2 5 Output 2 Input 2 3 9 Output 1 Note Taymyr is a place in the Examples Input 7 4 3 7 6 9 1 2 Output 2 3 9 6 7 1 4 Input 8 6 1 4 2 5 6 9 2 Output 2 1 6 2 5 4 9 6 At the begining row was [2, 3, 9, 6, 7, 1, 4]. After first operation row was [4, 1, 7, 6, 9, 3, 2]. The final row is [4, 3, 7, 6, 9, 1, 2]. So the answer for this case is row [2, 3, 9, 6, 7, 1, 4].
从我的角度来解读,其实这也反映了技术思维和管理思维的区别。 这篇文章,聊聊我对技术思维和管理思维的理解。 技术思维和管理思维的区别 回到本文的标题,技术思维更多的是遇到问题解决问题,解决技术领域的问题;管理思维则需要考虑资源、风险、投入产出比、是否能为业务价值实现提供支撑。 技术思维和产品思维 技术之外的职场成长指南 职场新人如何快速融入团队 职场新人如何提高工作效率 职场新人如何保持不断成长 技术同学如何快速熟悉业务 技术同学如何做好向上管理 技术同学如何提高职场话语权
如果是第一种做法,那么这就是我说的"编程思维",而第二种则是“SQL思维”。 我之前将"编程思维","SQL思维"发了个朋友圈,问大家他们之间有啥区别,答案五花八门。 而编程的话,则是一种高度灵活的思维,他本身没有给你一个方向,所以一般大家会按照编程的自然习惯,也就是for循环的思维去解决问题。 但是编程语言自身并没有对如何操作集合给出一个“规范的”思维,因为它允许用户用无数的解决方案去解决。而SQL则对这一类操作做了一个总体的设计和规范,如果你习惯了SQL的模式,大部分数据操作会很简单。 以编程思维为主的人接触SQL会觉得各种别扭,还是觉得自己for循环(包含if/else)的模式更可控,更自由。