精华内容
下载资源
问答
  • 学校心理学家的实际/期望的角色功能、角色功能的感知控制和工作满意度 学校心理学第 27 卷,1990 年 1 月 实际/期望的角色功能、角色功能的感知控制以及学校心理学家 EDWARD Indian M. LEVINSON 之间的工作满意...
  • 突然看到去年找的关于《理想工作环境》的相关资料,现在贴出来分享给大家。这个源于一个面试题, 忘了是哪家公司问我,你心中理想的工作环境是怎样的,我一时语塞,甚至从来没有考虑过这样的问题。理想的工作环境?...

    突然看到去年找的关于《理想工作环境》的相关资料,现在贴出来分享给大家。这个源于一个面试题, 忘了是哪家公司问我,你心中理想的工作环境是怎样的,我一时语塞,甚至从来没有考虑过这样的问题。理想的工作环境?!能有人要我就非常不错了,后来还是找了非常多的资料总结了总结。因为准备面试所以也找了不少双语的材料,各位凑合看吧。


    Can you describe your ideal working environment to me?

    Alternative and related questions:
    Which of your previous working environments was the best?
    The meaning behind the question:

    As with other questions which ask you to describe your ‘ideal’ of something work-related, the interviewer is attempting to assess how closely your ideal fits with the reality of their organisation. Unless you see through this aspect of their question, you could easily reveal reasons for them to notch up black marks on your application. They’re testing your compatibility.

    Your answer:

    How much do you know about the working environment in the organisation to which you’re applying? Shallow as it may seem, this is what you need to be describing.

    With a bit of luck, you’ll already have been able to glean quite a bit of useful information from the interviewer during the course of your interview – information which you can now feed back to them.

    Example:

    My ideal working environment is one where there’s a good sense of team spirit. A strong work ethic is obviously important but the human side is also important. I enjoy working with people who have a decent sense of humour and who, while they might take their work very seriously, don’t necessarily take themselves overly seriously! I like people who are down to earth but who have a dynamic and progressive approach to their work. I really enjoy working as part of a highly committed and professional team.

    Word of warning:
    Avoid saying anything along the lines of the way they’ve described their organisation’s working environment as sounding like your idea of the ideal working environment. Don’t be seen to be overtly sucking up! Subtly does it.


    The Interview Question & Answer Book

    The Interview Question and Answer Book (推荐一本书)

    图书介绍
    col 3 isTake the fear out of your interview and never be stuck for the right answer to even the toughest questions with The Interview Question & Answer Book.The job market is fierce, competition has never been greater and it’s important that you can grab every opportunity for competitive advantage and stay one step ahead. Written by one of the world’s leading careers experts and bestselling author of The Interview Book, this definitive guide to questions and answers encourages every job-hunter to think on your feet and express your individuality while supplying ideal responses to interview questions so that you’re seen as the ideal candidate for the job.

    理想工作环境的核心----充分的自由

    管理大师彼得·杜拉克指出,理想的工作环境要能够授权给员工,免除不必要的监督,员工知道公司对他们的期望,也很清楚公司如何评量他们的工作。

    用计算机的时候,我是半躺在椅子上。思考的时候,我习惯把脚翘的比头还高,坐相就别说有多难看了。但公司要的是我写的程序,不是要我来当美姿示范的。所有的布置装潢、茶点饮料供应,以及充足的软硬件供应,都是为了能提供一个不同一般的工作环境。以促进软件人员的生产力来说,这些投资相对来说是很便宜的

    Management guru Peter Drucker pointed out, the ideal working environment for employees to be able to authorize, eliminating unnecessary oversight, employees know their company’s expectations, it is very clear how companies evaluate their work.

    When using a computer, I was half lying on a chair. Thinking, I used Alice’s feet higher than the head, let alone sit with how ugly. But the company is that I want to write a program, not to me when Timmia demonstration. All furnished decor, refreshments supply and adequate supply of hardware and software, are generally in order to provide a different working environment. To promote staff productivity software, these investments are relatively cheap

    工资比较高,工作环境宽敞充满了人文关怀以及绿色植物。高科技快节奏的IT 企业。
    有一套完整的培训计划,这样我有很多机会能跟企业一同完善自我,一同成长。

    当我能够在家附近找到工作,这当然是最好的,但是趁着年期,多在外地闯荡一下也是好的,能够积累很多经验,俗话说,读万卷书,行万里路,这也是宝贵的人生体验嘛

    随着时间的推移,IT时代的到来告诉我们,每一个人都能成为自己的老板,如果你的创意足够,你就能开发一款流行的app应用,从运营商的分成模式中整取不菲的收益,现在的我们应该转变思维模式,从为了给别人打工,每时每刻的学习积累经验,最后在生活中成为自己的老板

    Relatively high wages, working environment full of humanistic care and spacious greenery. Fast-paced high-tech IT enterprise.
    Has a comprehensive training program, so I have many opportunities to talk to companies with self-improvement, to grow together.

    When I was able to find a job close to home, which of course is the best, but taking advantage of young, mostly in the field battles what is good, can accumulate a lot of experience, saying,‘Read a thousand books, travel a thousand miles.’ this is a valuable life experience

    Over time, the arrival of the era of IT tells us that everyone can be your own boss, if you are creative enough, you can develop a popular app application to get into a lot of money from the operator mode income, now we should change mindset from others in order to work, the experience accumulated learning all the time, and finally become your own boss in your life.


    理想的工作环境是多元的

    这里写图片描述

    理想的工作环境是由“理想的企业”、“理想的领导”和“理想的员工”这三个元素组合而成,这种组合是动态的,时刻都在自我平衡。

    人活着就必须要工作,有很大一部分时间是在工作,所以往往很多时候,人的压力都是来自工作,回家通常会好点,在上班的时候,很多压力往往会让人很不快乐,甚至有的时候会将这些不快乐的心情带回家。在我看来,每个人潜意识里可能都在追求一个理想的工作环境,它是我们快乐生活一个基础。有了这个开始,我就问自己什么叫理想的工作环境?它怎么组成的?我认为理想的工作环境包括三个元素:一个是理想的企业,一个是理想的上司,一个是理想的员工。

    首先,理想的企业是一个环境,有了一个理想的环境,我们作为一个员工进去,我们可能扮演一个基层员工,也可能扮演一个上司,很多时候往往是同时扮演两个角色,我们有上司,同时我们也有下属,所以我认为一个理想的工作环境,就是这三个元素动态的互动,最后出来的结果就是我们的工作环境。

    这三个元素里面,其实包括了心态、沟通和知识。理想的企业,需要理想的企业文化,理想的沟通机制,还有一个套方法,就是怎么样让这个公司发展的很好,发展得好的公司才会创造出一个快乐的环境,如果有很多内耗的话,也会影响到员工的成长。那么同样的这三个元素也会用在上司和员工上。所以我们可以这样来想象,一个就是心态、沟通、知识,横着的就是企业、上司、员工,这样组成一个 3 x 3 的结构。
    我以前讲“理想的工作环境”的时候,采取的是互动的方式,跟很多学员在互动,我问大家是否同意理想工作环境是具备了这些因素,反馈回来的结果有7点,有几点其实不重要,它只是提出一种参考,没有对错,不是一定是要7个5个6个3个,这个不重要,重要的是理想的工作环境对每个人来讲可能都不太一样,但是对很多人来讲就是有这7个方面考虑:

    第一是“清晰的企业目标”
    很多员工为什么在一个企业里面做得不是很顺利,因为他们对一个企业到底想做什么、它的目标都不太清晰,如果他不知道企业的目标是什么,他就很难与这个企业去配合,也很难找到他自己的价值,所以最后还是反映到他个人的身上,所以一个企业必须要有一个清晰的目标,这个目标也是给员工一个清晰的目标去追随,这个很关键。

    第二是“能体现个人价值”
    在这个环境里面,从员工的角度来讲,不管你是管理者还是一个员工,这个环境里应该是一个可以让你“体现自己价值的工作环境”,就是你上班不光是为薪水,而是你觉得有些理念,有些追求,是能够在这个环境里面实现的。

    第三是有一个“开放的沟通渠道”
    就是能够畅所欲言,能够表达自己的思路、想法,并且感觉到很安全,这样的环境是每个人都追求的,特别是我们现在的年轻人,都追求这个。

    第四是“协作的同事关系”
    不要看小这个,其实我们发觉很多,虽然我没有真正的数据,但是我相信,很多所谓工作的压力都是与同事关系不顺引发的,这些同事可能是平级,可能是跟上司,这种同事关系的不协调是带来工作压力的最大原因,所以很多时候,并不是工作原因给你带来很多压力,而是同事的关系不太顺给你带来很多压力。

    第五是“发展与学习”
    ,这个工作环境能否提供一个“持续发展与学习的平台”,一个人要不断进步的话就要不断学习,不断去提高自己,所以工作环境要提供这个条件,让员工一方面工作、付出的同时,也可以在这个环境里面去学习,自己不断的去进步。

    第六就是“工作环境与家庭的平衡”
    就是在这个工作环境里面我还能得到一个与家庭平衡的一个生活状态,比如有些企业就是整天要你无缘无故加班,你基本上没有什么家庭生活,理想的工作环境是会考虑到员工是需要一个生活的平衡。

    第七就是“持续改善的生活素质”
    你如果在一个工作环境里面很多条件都很好,但是企业经营不好,经营得不好的话,你的收入每年降低,你的生活素质也难以改善。
    所以基本上上来讲,理想的工作环境就是有这七方面的考虑,当然这七点也不是很完全,但是覆盖的面也已经是蛮大的了。


    环境是一种人文关怀

    google,facebook等的咱就不说了。我狭隘的认为环境好的公司一定也不会差到哪去:

    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

    p.s.

    国内大部分公司是这个吊样:

    这里写图片描述

    希望终有一天,我们都能有个好的办公环境!


    参考文献

    https://www.amazon.co.uk/gp/product/0273763717?ie=UTF8&tag=thcvce-21

    展开全文
  • 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使...

    工作流的概念

    工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。
    工作流管理系统(Workflow Management System, WfMS)是一个软件系统,它完成工作量的定义和管理,并按照在系统中预先定义好的工作流逻辑进行工作流实例的执行。工作流管理系统不是企业的业务系统,而是为企业的业务系统的运行提供了一个软件的支撑环境。
    工作流管理联盟(WfMC,Workflow Management Coalition)给出的关于工作流管理系统的定义是:工作流管理系统是一个软件系统,它通过执行经过计算的流程定义去支持一批专门设定的业务流程。工作流管理系统被用来定义、管理、和执行工作流程。
    工作流管理系统的目标:管理工作的流程以确保工作在正确的时间被期望的人员所执行在自动化进行的业务过程中插入人工的执行。

    常见的工作流框架

    Activity5.1.3、JBPM4.4、OSWorkFlow、WorkFlow
    工作流框架的底层需要有数据库提供支持,activiti5.13版本,有23张表。JBPM4.4框架底层有数据库支持,18张表。JBPM底层使用hibernate操作数据库。Activiti框架底层使用的mybatis操作数据库。

    Activiti介绍

    Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM平台,创始人Tom Baeyens是JBoss jBPM的项目架构师,它特色是提供了eclipse插件,开发人员可以通过插件直接绘画出业务流程图。

    工作流引擎

    工作流引擎是Activiti工作的核心。负责生成流程运行时的各种实例以及数据、监控和管理流程的运行。

    BPMN2.0*

    业务流程建模与标注(Business Process Model And Notation, BPMN) ,描述流程的基本符号,包括这些图元如何组合成一个业务流程图(Business Process Diagram)

    数据库

    Activiti的后台是有数据库的支持,所有的表都以ACT_开头。第二部分表示用途的两个字母标识。用途也和服务的API对应。
    (1) ACT_RE_*:'RE' 表示repository。这个前缀的表包含了流程定义和流程静态资源(图片,规则,等等)。
    (2) ACT_RU_*:'RU' 表示runtime。这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。Activiti只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录。这样运行时表可以一直很小速度很快。
    (3) ACT_ID_*:'ID' 表示identity。这些表包含身份信息,比如用户,组等等。
    (4) ACT_HI_*:'HI' 表示history。这些表包含历史数据,比如历史流程实例,变量,任务等等。
    (5) ACT_GE_*:通用数据,用于不同场景下。

    资源库流程规则表

    (1) act_re_deployment  部署信息表。
    (2) act_re_model           流程设计模型部署表。
    (3) act_re_procdef         流程定义数据表。

    运行时数据库表

    (1) act_ru_execution    运行时流程执行实例表。
    (2) act_ru_identitylink   运行时流程人员表,主要存储任务节点与参与者的相关信息。
    (3) act_ru_task             运行时节点表
    (4) act_ru_variable       运行时流程变量数据表

    历史数据库表

    (1) act_hi_actinst           历史节点表
    (2) act_hi_attachment    历史附件表
    (3) act_hi_comment       历史意见表
    (4) act_hi_identitylink     历史流程人员表
    (5) act_hi_detail             历史详情表,提供历史变量的查询
    (6) act_hi_procinst         历史流程实例表
    (7) act_hi_taskinst         历史人物实例表
    (8) act_hi_varinst           历史变量表
    注意:inst 是instance 实例 的缩写

    组织机构表

    (1) act_id_group            用户组信息表
    (2) act_id_info               用户扩展信息表
    (3) act_id_membership 用户与用户组对应的信息表
    (4) act_id_user              用户信息表
    这四张表很常见,基本的组织机构管理,关于用户认证方面建议自己开发一套,组件自带的功能太简单,很难满足项目中的很多需求。

    通用数据表

    (1) act_ge_bytearray   二进制数据表
    (2) act_ge_property    属性数据表中存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录。

    activiti.cfg.xml

    Activiti核心配置文件,配置流程引擎创建工具的基本参数和数据库连接池参数。
    定义数据库配置参数:
    jdbcUrl: 数据库的JDBC URL。
    jdbcDriver: 对应不同数据库类型的驱动。
    jdbcUsername: 连接数据库的用户名。
    jdbcPassword: 连接数据库的密码。
    基于JDBC参数配置的数据库连接 会使用默认的MyBatis连接池。 下面的参数可以用来配置连接池(来自MyBatis参数):
    jdbcMaxActiveConnections: 连接池中处于被使用状态的连接的最大值。默认为10。jdbcMaxIdleConnections: 连接池中处于空闲状态的连接的最大值。
    jdbcMaxCheckoutTime: 连接被取出使用的最长时间,超过时间会被强制回收。 默认为20000(20秒)。
    jdbcMaxWaitTime: 这是一个底层配置,让连接池可以在长时间无法获得连接时, 打印一条日志,并重新尝试获取一个连接。(避免因为错误配置导致沉默的操作失败)。 默认为20000(20秒)。
    示例数据库配置:
    <!-- 配置流程引擎创建工具参数 -->
    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
    	<!-- 数据库连接配置,默认使用MyBatis连接池 -->
    	<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti"/>
    	<property name="jdbcDriver" value="com.mysql.jdbc.Driver"/>
    	<property name="jdbcUsername" value="root"/>
    	<property name="jdbcPassword" value="root"/>
    	<!-- 
    		databaseSchemaUpdate: 设置流程引擎启动和关闭时如何处理数据库表
    		false:(默认) 检查数据库的版本和依赖库的版本,如果版本不匹配就抛出异常。
    		true:构建流程引擎时,执行检查,如果需要就执行更新,如果不存在就创建
    		create-drop:构建流程引擎时创建数据库表,关闭流程引擎时就删除这些表
    	 -->
    	 <property name="databaseSchemaUpdate" value="true"/>
    	 <!-- 是否启动任务调用 -->
    	 <property name="jobExecutorActivate" value="false"/>
    	 <!-- 邮件服务器配置 -->
    	 <property name="mailServerHost" value=""/> <!-- 邮件服务器地址 -->
    	 <property name="mailServerPort" value=""/> <!-- 邮件服务器端口 -->
    	 <property name="mailServerUsername" value=""/> <!-- 邮件服务器的用户名 -->
    	 <property name="mailServerPassword" value=""/>
    </bean>
    也可以使用第三方的连接池 比如Apache的DBCP连接池
    <!-- 方式二:使用别的数据源 -->
    <!-- 配置DBCP连接池基本参数 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    	<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    	<property name="url" value="jdbc:mysql://localhost:3306/activiti"/>
    	<property name="username" value="root"/>
    	<property name="password" value="root"/>
    </bean>
    
    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
    	<!-- 配置第三方连接池 -->
    	<property name="dataSource" ref="dataSource"/>
    	<!-- 
    		databaseSchemaUpdate: 设置流程引擎启动和关闭时如何处理数据库表
    		false:(默认) 检查数据库的版本和依赖库的版本,如果版本不匹配就抛出异常。
    		true:构建流程引擎时,执行检查,如果需要就执行更新,如果不存在就创建
    		create-drop:构建流程引擎时创建数据库表,关闭流程引擎时就删除这些表
    	 -->
    	 <property name="databaseSchemaUpdate" value="true"/>
    	 <!-- 是否启动任务调用 -->
    	 <property name="jobExecutorActivate" value="false"/>
    	 <!-- 邮件服务器配置 -->
    	 <property name="mailServerHost" value=""/> <!-- 邮件服务器地址 -->
    	 <property name="mailServerPort" value=""/> <!-- 邮件服务器端口 -->
    	 <property name="mailServerUsername" value=""/> <!-- 邮件服务器的用户名 -->
    	 <property name="mailServerPassword" value=""/>
    </bean>

    log4j.properties

    日志配置文件

    准备环境

    activiti5 软件环境

    (1)JDK1.6或者更高版本
    (2)支持的数据库有:h2, mysql, oracle, postgres, mssql, db2等。
    (3)支持activiti5运行的jar包
    (4)开发环境为Eclipse3.7或者以上版本,myeclipse为8.6版本

    相关资源下载

    1)JDK可以到sun的官网下载
    http://www.oracle.com/technetwork/java/javase/downloads/index.html
    2)数据库,例如:mysql可以在官网上下载。
    http://www.mysql.com
    3)activiti也可以到Activiti官方网站下载得到。
    http://activiti.org/download.html
    4)Eclipse3.7或者MyEclipse8.6也可以到相应的网站上获得下载。

    安装流程设计器(eclipse插件)

    在有网络的情况下,安装流程设计器步骤如下:
    (1)打开 Help -> Install New Software
    (2)在如下的Install界面,点击Add按钮

    配置新装插件的地址和名称
    (3)然后填入下列字段
    Name: Activiti BPMN 2.0 designer
    Location: http://activiti.org/designer/update/
    如图所示:

    (4)回到Install界面,在面板正中列表中把所有展示出来的项目都勾上:

    (5)点击复选框
    在Detail部分记得选中 "Contact all updates sites.." , 因为它会检查所有当前安装所需要的插件并可以被Eclipse下载.
    (6)安装完以后,点击新建工程new->Other…打开面板,如果看到下图内容:

    注意:MyEclipse是无法安装此插件的,即使安装成功 也无法保存图片
    另一种方法直接将下载好的activiti-eclipse-plugin.zip解压后 放入Eclipse安装目录的dropins文件夹 重启即可。

    流程设计器的使用说明

    打开菜单Windows->Preferences->Activiti->Save下流程流程图片的生成方式:

    虽然流程引擎在单独部署bpmn文件时会自动生成图片,但在实际开发过程中,自动生成的图片会导致和BPMN中的坐标有出入,在实际项目中展示流程当前位置图会有问题。
    所在完成以上配置后,会由我们自己来管理流程图片。在发布流程时把流程规则文件和流程图片一起上传就行了。

    准备Activiti5开发环境

    添加Activiti5的jar包

    在activiti-5.16.1->wars目录下是一些示例项目,解压activiti-rest项目,导入activiti-rest目录中WEB-INF\lib下所有包。添加到classpath中。
    由于我使用的是Mysql数据库,Mysql数据库的链接驱动Activiti官方包中并没有提供,需要导入。手动导入mysql-connector-java.jar,添加到classpath

    初始化数据库

    方式一:使用Activiti提供的建表语句


    方式二:使用Activiti的自动建表功能

    (1)不使用配置文件(不建议采用)
    /**
     * 使用框架提供的自动建表功能(不提供配置文件)
     */
    @Test
    public void testDb1() {
    	// 创建Activiti流程引擎配置对象
    	ProcessEngineConfiguration cfg = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
    	
    	// 配置数据库驱动
    	cfg.setJdbcDriver("com.mysql.jdbc.Driver");
    	// 配置数据库连接
    	cfg.setJdbcUrl("jdbc:mysql://localhost:3306/activiti?createDatabaseIfNotExist=true");
    	// 配置用户名
    	cfg.setJdbcUsername("root");
    	// 配置数据库密码
    	cfg.setJdbcPassword("root");
    	/**
    	 * 设置自动建表
    	 */
    	cfg.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
    	// 根据引擎配置对象创建流程引擎
    	ProcessEngine processEngine = cfg.buildProcessEngine();
    }
    在Activiti中,在创建核心的流程引擎对象时会自动建表。如果程序正常执行,mysql会自动建库,然后创建23张表。
    (2)使用指定的配置文件
    在Actiiti5中定制流程必定会操作到数据库,如果都像上面写一大段代码会非常麻烦,所以我们可以把数据库连接配置写入配置文件。
    在Activiti5的官方示例中并没有现成的配置文件,所以先得找到activiti-rest\WEB-INF\classes下有:
    1.activiti-context.xml : 一个类似spring结构的配置文件,清空内容后改名为activiti.cfg.xml,用来做流程引擎的相关配置。按照上面代码配置ProcessEngineConfiguration对象,主要定义数据库的连接配置和建表策略,配置文件代码如下:
    <!-- 配置流程引擎配置对象 -->
    <bean id="processEngineConfiguration"
    	class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
    	<property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
    	<property name="jdbcUrl" value="jdbc:mysql:///activiti" />
    	<property name="jdbcUsername" value="root" />
    	<property name="jdbcPassword" value="root" />
    	<property name="databaseSchemaUpdate" value="true" />
    </bean>
    Java代码如下:
    /**
     * 使用框架提供的自动建表功能(使用配置文件)--可以从框架提供的例子中获取
     */
    @Test
    public void testDb2() {
    	String resource = "activiti-context.xml";// 配置文件名称
    	String beanName = "processEngineConfiguration";// 配置id值
    	ProcessEngineConfiguration conf = ProcessEngineConfiguration
    			.createProcessEngineConfigurationFromResource(resource,
    					beanName);
    	ProcessEngine processEngine = conf.buildProcessEngine();
    }
    createProcessEngineConfigurationFromResource的参数值为我们添加的配置文件activiti.cfg.xml的名称,执行java代码,流程引擎对象创建成功运行后数据库会自动建表。
    log4j.properties 日志配置文件
    log4j提供的日志级别:Fatal error warn info debug trace
    ### direct log messages to stdout ###
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.err
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
    
    ### direct messages to file mylog.log ###
    log4j.appender.file=org.apache.log4j.FileAppender
    log4j.appender.file.File=c:\mylog.log
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
    
    ### set log levels - for more verbose logging change 'info' to 'debug' ###
    
    log4j.rootLogger=info, stdout
    把两个文件放入resource目录下即可。
    注意:数据库编码要指定为utf8
    (3)使用配置文件(使用默认配置)
    要求配置文件的名称必须为activiti-context.xml或者activiti.cfg.xml 配置的信息必须如下所示(Bean的id不能改变):
    <!-- 配置流程引擎配置对象 -->
    <bean id="processEngineConfiguration"
    	class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
    	<property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
    	<property name="jdbcUrl" value="jdbc:mysql:///activiti" />
    	<property name="jdbcUsername" value="root" />
    	<property name="jdbcPassword" value="root" />
    	<property name="databaseSchemaUpdate" value="true" />
    </bean>
    
    <!-- 配置一个流程引擎工程bean,用于创建流程引擎对象 -->
    <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
    	<property name="processEngineConfiguration" ref="processEngineConfiguration" />
    </bean>
    获取流程引擎的代码:
    		ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

    核心API

    ProcessEngine

    (1)在Activiti中最核心的类,其它的类都是由此类获取的
    (2)产生方式:ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    有好多种创建ProcessEngine(流程引擎)的方式,而此中方式简化很多,调用ProcessEngines的getDefaultProcessEngine方法时会自动加载classpath下名为activiti-context.xml或activiti.cfg.xml配置文件。
    (3)可以产生RespositoryService
    RepositoryService repositoryService = processEngine.getRepositoryService();
    (4)可以产生RuntimeService
    RuntimeService runtimeService = processEngine.getRuntimeService();
    
    (5)可以产生TaskService
    TaskService taskService = processEngine.getTaskService();
    各个Service的作用:
    Respository:管理流程定义
    RuntimeService:执行管理,包括启动、推进、删除流程实例等操作。
    TaskService:任务管理
    HistoryService:历史管理(执行完数据的管理)
    IdentityService:组织结构管理
    FormService:一个可选服务,任务表单管理

    RepositoryService

    是Activiti的仓库服务类。所谓的仓库指流程定义文档的两个文件:bpmn文件和流程图片。
    (1)产生方式
    RepositoryService repositoryService = processEngine.getRepositoryService();
    
    (2)可以产生DeploymentBuilder,用来定义流程部署的相关参数。
    DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
    (3)删除流程定义
    repositoryService.deleteDeployment(deploymentId);

    RuntimeService

    是Activiti的流程执行服务类。可以从这个服务类中获取很多关于流程执行相关的信息。

    TaskService

    是activiti的任务服务类。可以从这个类中获取任务的信息。

    ProcessDefinition

    流程定义类。可以从这里获得资源文件等。

    ProcessInstance

    代表流程定义的执行实例。例如企业某员工请了一周的假期,那么他就必须发出一个流程实例的申请。一个流程实例包括了所有的运动节点。我们可以利用这个对象来了解当前流程实例的进度信息。
    如下图是ProcessInstance的源代码:

    从源代码中可以看出ProcessInstance就是Execution的子接口。也可以说ProcessInstance就是Execution。但是在实际意义上是有所区别的:

    在单线流程中,如上图的贷款流程,ProcessInstance与Execution是一致的。

    这个例子有一个特点:write money(汇钱)和archive(存档)是并发执行的。此时,总线路流程代表ProcessInstance,而分线路中的每个活动代表Execution。

    Execution

    Activiti用这个对象去描述流程执行的每一个节点,在没有并发的情况下,等同于ProcessInstance。


    展开全文
  • 来自于以为网友的问题,我想有共性,就整理了一下和大家分享一下吧:问:我明年就要毕业了~~~这期间一直在一家公司做JAVA程序员,最近公司给我一份应聘的登记表,里面要填想在北京工作还是在郑州工作,(公司在北京...

    来自于以为网友的问题,我想有共性,就整理了一下和大家分享一下吧:

    问:
    我明年就要毕业了~~~
    这期间一直在一家公司做JAVA程序员,
    最近公司给我一份应聘的登记表,里面要填想在北京工作还是在郑州工作,(公司在北京和郑州都有分公司)
    然后要填期待的月薪!!!!!
    但是公司保密度太好了!!!没打听出来。而且我也没啥社会阅历!!
    在这里冒然请教在在IT界滚打这么多年的前辈!!!!
    像我这样的JAVA程序员(WEB方面的),在北京和郑州的月薪到底多少啊????

    我根本不会填这玩意儿啊~~~~~咋样才不会吃亏啊?
    再次谢谢帮助我的所有人~~~~~~


    分析:
    这期间一直在一家公司做JAVA程序员,证明你有过java的基础和一些经验

    你的公司在北京和郑州都有分公司,证明你公司不是特别小的公司。
    你面临2个问题:
    1.去郑州还是去北京
    2.填多少钱


    首先回答你的第1个问题:

    北京和郑州,不用问,我肯定去北京。原因:北京和郑州离我的家乡都很远,并且北京的工资相对高点,周末的生活选择性多一些。你需要根据你的实际情况做一些判断,比如你的老家地址,你的女朋友地址,等等权衡考虑。。。实际情况实际决定

    现在回答你的第2个问题:

    工资问题我和上面的几位保持一样的看法,郑州,我不清楚,北京(3000-5000)对于一个稍微有点经验的人。其中的浮动根据你的能力(面试+学历+实力)

    我想提醒你一件事情,那就是第一份工资,或者是前2年的工资,不要特别特别的在意,关键在于找一个能提升自己的一个能力的环境,那么以后你根本不用天天为鸡毛蒜皮的工资考虑,更多的关心,以后的职业生涯。。



    总结:
    找一个好的行业,一个好的公司,比你找一份 当前看来 不错的薪水更重要。你挣钱的时候还没到呢。等你有了资本,就可以大幅度的提高薪水了。
    展开全文
  • 概率和期望

    千次阅读 2017-11-02 14:31:23
    (在此鸣谢yty提供故事的人物材料)引子概率是一个玄学的东西 。...先讲个故事吧(about Pascal & Fermat)by《数学一本通》yty是hh的基友,有一天,yty跟hh说,他赌博饥渴难耐,hh很无奈,只能陪yty进行了一场赌博。

    (在此鸣谢yty提供故事的人物材料)

    引子

    概率是一个玄学的东西 。有个认知方面的误区就是,各位oier在小学和初中的时候接触到的概率都是一个叫做“古典概率”的东西,这是很只是概率这一个大旗帜下的一个小喽啰,真正的概率水深着呢。

    先讲个故事吧(about Pascal & Fermat)by《数学一本通》

    yty是hh的基友,有一天,yty跟hh说,他对赌博饥渴难耐,hh很无奈,只能陪yty进行了一场赌博。yty和hh下了相同的赌注,约定先获胜3局的那个人获得全部赌金。然后这俩家伙就开始了史诗级oier之间的赌博。yty赢了2局,hh赢了1局,这个时候,hh的GF(懂吧)突然给hh打了一个电话,说要hh陪吃饭,yty表示很无奈,被塞一口狗粮,没心思再赌博,就同意hh离开了。但是yty想要把赌金先给结算了,毕竟ytty今天人品大爆发,赢了hh两局。
    所以问题来了,这个赌金应该怎么分配呢?
    存在的问题:规定的先赢3局的目标还没有完成,所以不能给yty全部的赌金;而且也不能平分,因为hh比yty少赢1局,yty会不爽的。
    解答
    这就要跟概率牵扯起来了。对于下一局,yty和hh赢的概率各是50%,如果是yty赢,那么整场赌博游戏就是yty赢了;如果是hh赢,2:2就打平了,那么双方就需要额外进行决胜局。对于决胜局,yty赢得几率是25%(50%*50%),整场赌博游戏yty赢的几率就是前面的50%+现在的25%,共75%;hh赢的几率是25%。因此赌金应该yty:hh=3:1的比值分配。

    事件发生的概率

    我们先约定,当我们在一个特定的环境下,A、B等代表可能发生的所有单个事件,S代表所有可能发生的单个事件的集合。所以有A∈S,B∈S。
    如果有一个集合是C,满足C∩S=∅,我们就说C是“不可能事件”,如果有一个集合D,满足D=S,就说D是必然事件。因为不管S中的事件发生多少次,C都不可能发生,D都一定发生。(是不是有点绕口,一定要啃完)

    和事件和积事件

    事件A∪B称为事件A和事件B的和事件(A∪B可以理解为A or B,即A和B任意发生一个),如果A和B至少任意发生一个,我们就说事件A∪B发生。A∪B有时候也记作A+B。
    事件A∩B称为事件A和事件B的积事件(A∩B可以理解成A and B,即A和B同时发生),如果A和B同时发生,我们就说A∩B发生。A∩B有时候也记作A*B。
    当有多个事件的时候我们可以用 nk=1Ak nk=1Ak

    互斥和互补

    如果A∩B=∅,称事件A和事件B互斥,指A和B不能同时发生。
    如果A∪B=S,且A∩B=∅,称事件A和事件B互为对立事件(补集)。对立事件的性质是,对于每一次试验,都是事件A和事件B一定有且只有一个发生。

    频率和概率

    频率:在相同的条件下,进行了n次试验,在n次试验中,事件A发生了 NA/n 次,那么 NA/n 称为事件A发生的频率(n是频数)。
    我们可以发现,当n=∞时,对于相同事件,频率无限接近概率。

    概率的性质

    我们设事件A发生的概率是P(A),那么有:

    1. 非负性:对于任何事件A,都有 0PA1
    2. 规范性:对于每个必然事件A, PA=1 ;每个不可能事件A, PA=0
    3. 互斥性:对于任意两个事件A和B, PAB=PA+PBPAB
    4. 互斥事件的可加性:如果事件A和B是互斥的,那么 PAB=PA+PB
    5. 对立事件的概率之和=1;
    6. 独立事件的可乘性:如果A和B之间是相互不干扰的,我们就说A和B是相互独立的事件,那么就有 PAB=PAPB
    7. 伯努利大数定理:如果在一次实验中,某事件发生的概率是p,不发生的概率是q,则在n次试验中至少发生m次的概率等于 p+qn 的 展开式 中从 pn 到包括 pmqnm 为止的各项之和。 如果在一次实验中,某事件发生的概率为p,那么在n次独立重复的试验中这个事件恰好发生k次( 0kn )的概率是 Pn(k)=Cnkpk(1p)nk

    例题

    yty找文件

    yty有一张书桌,有8个抽屉,分别用数字1~8编号。每次拿到一个文件后,他都会把这份文件随机地放在某一个抽屉中。但是,可怜的yty非常粗心,有 15 的概率会忘了把这个文件放进抽屉,最终因为没有放进抽屉而把文件弄丢。现在,yty要找一个文件,他按照编号顺序依次打开每一个抽屉,直到找到这份文件为止,或者最终发现文件已经丢失。请回答下列问题:

    1. 如果yty打开了第一个抽屉,但是没有发现他要的文件,请问这份文件在其余7个抽屉的概率是多少?
    2. 如果yty打开了前4个抽屉,里面没有发现他要的文件,请问这份文件在其余4个抽屉里的概率是多少?
    3. 如果yty打开了前7个抽屉,里面没有他要的文件,请问这份文件在最后一个抽屉里的概率是多少?

    解析:
    答案是 79 23 13 ,如你所见,概率是越来越小的。我们应该怎么计算呢?
    因为上文提到过了,yty弄丢文件的概率是 15 也就是说,10份文件中,有2份弄丢,其余8份放进了yty有的8个抽屉。我们可以这样想:假设又多了两个编号为9和10的抽屉,并且这两个抽屉是“无底洞”,扔进去的文件都找不回来了。那么就好办了,设yty已经翻过了n个抽屉,那么我们就是求文件在前(8-n)个抽屉的概率,显然剩余(10-n)个抽屉,所以我们的方法就是: 8n10n 把不同的n值带进去就可以求出来了。

    古典概率

    古典概率也叫事前概率,也就是在事情发生之前我们就可以推算出来任何事件发生的概率。概率用的最早就是一些概率游戏和赌博中。
    古典概率有几个特点:

    1. 样本容量有限;
    2. 事件可能性相同;
    3. 事件互斥;

    就像丢硬币,只有两种可能,而且每种可能都是50% ,丢了正面就不会同时丢反面(除非你立起来,不过你也可以尝试下几次之后能立起来),这些具有这样的特点的随机试验我们称之为古典概型或者等可能概型。计算古典概型的方法称为概率的古典定义或者古典概率。
    在计算古典概率的时候,如果在全部可能出现的基本事件范围内构成事件A的基本事件有 an 个,不构成事件A的基本事件有 bn 个,且那么出现事件A的概率是 PA=a/a+b

    例题

    yty买圆珠笔

    yty受厉总委托,去商店买一些子圆珠笔。yty到商店后,发现商店还剩下40支圆珠笔,在这40支圆珠笔中有30支是黑色的,10支是红色的。yty需要买4支圆珠笔,请问yty随机买4支圆珠笔,至少买到一支红笔的概率?
    方法一——分解问题
    设从40支笔中任意取出4支,恰好有1支或者2支或者3支或者4支红笔的事件记为A、B、C、D。我们有:
    PA=C110C330/C440=40600/91390
    PB=C210C230/C440=19575/91390
    PC=C310C130/C440=3600/91390
    PD=C410C030/C440=210/91390
    根据题意,事件A、B、C、D两两互质,所以 PABCD=PA+PB+PC+PD=63985/913900.7
    方法二——对立
    我们也可以从对立事件的概率来分析,设从40支笔中取4支全是黑色的事件为A,则有 PA=C430/C440=27405/913900.3 。所以,对立事件的概率是0.7。

    数学期望

    数学期望可以理解为某件事情大量发生之后的平均结果(这个事件的概率会受一些因素的干扰),可以这样分辨:概率针对几率,而期望是针对的最终结果。我们举个例子:对于一个骰子,每个面的概率都是 16 ,但是你大量投骰子之后的数学期望值是: 116+216+316+416+516+616=3.5
    我们举个赌博的例子吧:

    yty杀回赌场

    yty在上一次赌博游戏之后感觉很不服,”为什么??我赢的场数比hh多,hh本应该输的,怎么还能拿25%的赌金呢???“于是乎就又去找hh赌博,并规定了以下规则:

    1. 关掉手机(避免上次的情况);
    2. 赌博道具:14张扑克牌,有一张是A;
    3. 游戏规则:yty进行坐庄,hh在14张牌里面抽取任意一张牌,如果hh抽到了A,那么yty给hh10块钱;如果hh没有抽到A,那么hh给yty1块钱;

    在这场游戏中,看起来好像是有利于hh的,因为hh抽取一张牌就有两种情况:1种是抽到A,一种情况是没有抽到A。但是大错特错,因为抽到A和不抽到A的概率是不相同的。从hh的角度看,抽取到A的概率是 114 ,收益是10;没有抽取到的概率, 1314 ,收益是-1;所以我们可以算出数学期望: 11410+13141=314<0 所以hh是绝对亏的。

    计算公式

    所以我们在算数学期望值的时候不能简单地使用古典概率的计算方法,不能只考虑样本容量,还得考虑样本中每个事件出现的概率。
    假设我们规定: x1,x2,x3 ……是随机输出值(在投骰子中,就是1 、2 、3 、4 、5 、6),这些随机输出值对应的概率就是 p1,p2,p3 ……(当然 ipi=1 ),所以数学期望值的公式: EX=ipixi

    拓展公式

    1. 期望的“线性”性质。对于任何随机变量X和Y以及常量a和b,有: EaX+bY=aEX+bEY
    2. 全概率公式。假设{ Bn|n=1,2,3, }是一个概率空间的有限或者可数无限的分割,且每个集合 Bn 是一个可测集合,则对任意事件A有全概率公式: PA=nPA|BnPBn 。其中:P(A|B)是B发生后A的条件概率。
    3. 全期望公式。 pij=P(X=xi,Y=yj)(i,j=1,2,) ,当 X=xi 时,随机变量Y的条件期望以 EY|X=xi 表示。则全期望公式:
      EEY|X=iPX=xiEY|X=xi=ipikykpikpi=ikpiykpikpi=ikykpik=EY

      所以: EY=EEY|X=iPX=xiEY|X=xi
      对于全期望我们来举个例子吧。

    yty的工作

    yty跟hh赌博了三天三夜之后,真的赌地身无分文。无奈下,只能去搬砖。如果yty一个人搬砖,平均需要4小时,而hh有0.4的概率来帮yty搬砖,两个人一起搬砖平均只需要3小时。若用X表示完成搬砖的人数,而Y表示完成搬砖的期望时间(单位小时),由于这项搬砖的工作要么由yty单独完成,要么由yty和hh共同完成,那么搬砖的工作完成的期望时间是 EY=PX=1EY|X=1+PX=2EY|X=2=10.440.43=3.6

    用递推解决期望问题

    对于期望问题,递推是一种快速有效的解决方法。我们不需要将所有可能的情况都枚举出来,而是根据已经求出的期望推出其他状态的期望,也可以根据一些特点和结果相同的情况,求出其概率。
    对于一些比较难找到递推关系的数学期望问题,可以利用期望的定义式: EX=ipixi ,根据实际情况以概率或者方案数(也就是概率*总方案数)作为一种状态,而下标直接或间接对应了这个概率下的变量值(有没有哈希的味道),将问题变成比较一般的统计方案数问题或者利用全概率公式计算概率的递推问题。对于另外一些带有决策的期望问题,可以使用DP解决,这类题由于要满足最优子结构,一般都用期望来表示状态,而期望正或负表现了这单个状态的优或劣。对于递推和动态规划都无法有效结局的模型,由于迭代的效率低,而且迭代的致命缺点是无法得到精确解,可以建立线性方程组并利用高斯消元的方法来解决。(高斯消元待博客)

    例题——yty的百事世界杯之旅

    题目

    题目描述
    “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字。只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更可赴日韩观看世界杯。还不赶快行动!”
    yty关上电视,心想:假设有n个不同的球星名字,每个名字出现的概率相同,平均需要买几瓶饮料才能凑齐所有的名字呢?
    yty心动了。开始了一波编程计算:

    输入输出格式
    输入格式:
    整数n(2≤n≤33),表示不同球星名字的个数。
    输出格式:
    输出凑齐所有的名字平均需要买的饮料瓶数。如果是一个整数,则直接输出,否则应该直接按照分数格式输出,例如五又二十分之三应该输出为(复制到记事本):
    3 5– 20 第一行是分数部分的分子,第二行首先是整数部分,然后是由减号组成的分数线,第三行是分母。减号的个数应等于分母的为数。分子和分母的首位都与第一个减号对齐。
    分数必须是不可约的。

    输入输出样例
    输入样例#1:
    2
    输出样例#1:
    3

    分析

    这道题目用期望的语言来说就是:“我们期望买多少饮料能够搞到所有的奖品”。

    这道题目我们可以采用递推求数学期望的方法。我们设 f(n,k) 是一共有n个球星,而且现在还剩下k个球星没有收集到,还需要购买饮料的期望次数。所以我们最后要求取的答案是 f(n,n)

    假设我们现在推到了 f(n,k) ,我们再买一瓶饮料,有两种可能性,一种是:我们买到了我们没有拥有的球员,那么剩下的子问题就是 f(n,k1) ;如果买到了我们拥有的球员,那么剩下的子问题就是 f(n,k) 。然而我们任意买一个瓶盖,有 kn 的可能性买到我们没有的,有 nkn 的可能性买到我们已经有的。所以这道题目的递推是就是:

    f(n,k)=(nk)f(n,k)n+kf(n,k1)n+1
    然后呢,经过移项,会有
    f(n,k)=f(n,k1)+nk
    这就是一个递推式了。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    int n;
    long long p,q=1,r;
    inline int cc(long long x)//cc函数用来统计数x的位数
    {
        int p=0;//p用来记录最后的答案
        while(x>0)
        {
            x/=10;
            p++;
        }//非常小儿科的求位数
        return p;
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            p=p*i+q*n;
            q*=i;
            //递推
            r=__gcd(p,q);
            /*__gcd函数。这是一个库函数,是用来求
            两个数的最大公约数的。但是由于功能过于
            强大,ccf已经规定了:所有下划线开头的
            库函数都不能在oi中使用。*/
            p/=r;
            q/=r;//分数的约分。
        }//这部分是用来求最后结果的,p放分子,q放分母
        r=p/q;
        p%=q;
        /*把这个分数化成带分数的形式,r存放整数部分,
        p和q放分子和分母。*/
        if(p==0)
        {
            printf("%lld\n",r);
            return 0;
        }//如果分子为0,就说明答案是整数,直接输出整数部分
        for(int i=1;i<=cc(r);i++)
        printf(" ");
        //为了对齐补充的空格。
    
        if(r>0)
        printf("%lld",r);
        //这里要慎重:如果p==0,则不用输出
    
        for(int i=1;i<=cc(q);i++)
        printf("-");
        //分数线长度是分母的长度
        printf("\n");
    
        for(int i=1;i<=cc(r);i++)
        //为了对齐补充的空格。
        printf("%lld\n",q);
        return 0;
    }

    概率 习题

    例题一

    题目背景
    从前有一个聪明的小魔女帕琪,兴趣是狩猎吸血鬼。
    帕琪能熟练使用七种属性(金、木、水、火、土、日、月)的魔法,除了能使用这么多种属性魔法外,她还能将两种以上属性组合,从而唱出强力的魔法。比如说为了加强攻击力而将火和木组合,为了掩盖弱点而将火和土组合等等,变化非常丰富。

    题目描述
    现在帕琪与强大的夜之女王,吸血鬼蕾咪相遇了,夜之女王蕾咪具有非常强大的生命力,普通的魔法难以造成效果,只有终极魔法:帕琪七重奏才能对蕾咪造成伤害。帕琪七重奏的触发条件是:连续释放的7个魔法中,如果魔法的属性各不相同,就能触发一次帕琪七重奏。
    现在帕琪有7种属性的能量晶体,分别为a1,a2,a3,a4,a5,a6,a7(均为自然数),每次释放魔法时,会随机消耗一个现有的能量晶体,然后释放一个对应属性的魔法。
    现在帕琪想知道,她释放出帕琪七重奏的期望次数是多少,可是她并不会算,于是找到了学OI的你

    输入输出格式
    输入格式:
    一行7个数字,a1,a2,a3,a4,a5,a6,a7
    输出格式:
    一个四舍五入保留3位的浮点数

    输入输出样例
    输入样例#1:
    1 1 1 1 1 1 1
    输出样例#1:
    1.000

    分析

    这道题目的代码很短,但是可以让你对概率的基本概念有较深刻和较准确的理解。题目的基本意思就是说要从所有的魔法晶体中找出一个七元素集合:这个集合包含了所有的元素。然后再把所有的元素进行全排列。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    int a[10]; 
    int main()
    {
        int sum=0;
        for(int i=1;i<=7;i++)
        {
            scanf("%d",&a[i]);
            sum+=a[i];
        }//读入+求和
        printf("%.3lf",1.0*5040*a[1]/sum*a[2]/(sum-1)
        *a[3]/(sum-2)*a[4]/(sum-3)*a[5]/(sum-4)
        -*a[6]/(sum-5)*a[7]);
    /*
    首先要保留了三位小数的实型变量,所以是.3lf;但是后面的算
    式里面都是整形变量参加的运算,所以要*1.0强制转化成实型。
    
    然后我们知道要任意这样排列的总数,所以我们可以先找到一种组
    合,然后进行全排列,就得到了排列的总数。上文中5040是7的阶
    乘,也就是进行全排列的过程。
    
    然后我们来解释下后面的算式的意思:
    我们完成一次组合的要进行7次施法,第一次随机施法用第一种魔
    法球的概率是a[1]/sum,第二次由于第一次用掉了一个魔法球,
    所以在剩余的魔法球中找到一个第二种魔法球的概率是
    a[2]/(sum-1)……以此类推吧。然后最后是因为还剩下
    sum-6个魔法球,这些魔法球还可以生成上述的组合,
    所以总数要*(sum-6)
    */
        return 0;
    }

    例题二

    题目背景
    四川NOI2008省选

    题目描述
    你有 n 个整数Ai和n 个整数Bi。你需要把它们配对,即每个Ai恰好对应一个Bp[i]。要求所有配对的整数差的绝对值之和尽量小,但不允许两个相同的数配对。例如A={5,6,8},B={5,7,8},则最优配对方案是5ó8, 6ó5, 8ó7,配对整数的差的绝对值分别为2, 2, 1,和为5。注意,5ó5,6ó7,8ó8是不允许的,因为相同的数不许配对。

    输入输出格式
    输入格式:
    第一行为一个正整数n,接下来是n 行,每行两个整数Ai和Bi,保证所有
    Ai各不相同,Bi也各不相同。
    输出格式:
    输出一个整数,即配对整数的差的绝对值之和的最小值。如果无法配对,输
    出-1。

    输入输出样例
    输入样例#1:
    3
    3 65
    45 10
    60 25
    输出样例#1:
    32
    输入样例#2:
    3
    5 5
    6 7
    8 8
    输出样例#2:
    5

    说明
    30%的数据满足:n <= 10^4
    100%的数据满足:1 <= n <= 10^5,Ai和Bi均为1到10^6之间的整数。

    分析

    先来一发吐槽:网上很多的题解都是这样一句话:“这尼玛太难了,我不会”;“至于证明的话,请用好搜索引擎”“至于证明,我也不会”…………所以这里分析需要好好琢磨一下,真的很难懂
    这里有个基本的结论:对a数组和b数组排序好之后,对于任意一个数a[i],在b数组中只有5个数和它可以匹配:b[i],b[i-1],b[i-2],b[i+1],b[i+2]。
    我们可以画图证明一下,
    这里写图片描述
    这里的情况就是跟超过了2个数的位置进行了匹配,我们可以发现一定存在一种结构可以这样优化成以下结构:
    这里写图片描述
    但是这种情况为什么不能直接被继续分解的结构代替呢,因为数据允许相等。。。

    代码

    #include<bits/stdc++.h>
    #define maxn 100050
    #define INF 100000000
    using namespace std;
    long long n,a[maxn],b[maxn],f[maxn];
    //f数组用来代表前i个数匹配的匹配最小值
    long long c(long long x,long long y)
    {
        return a[x] == b[y] ? INF : abs(a[x] - b[y]);
    }
    /*这是计算匹配值的一个函数,也就是两个数的差的绝对值,
    但是如果这两个数相等,我们就认为这两个数的匹配值无限大。
    那么我们在接下来选取最小匹配值,就不会把这一组匹配给选进去了*/
    int main()
    {
        scanf("%lld",&n);
        for(int i=1;i<=n;i++)
        scanf("%lld%lld",&a[i],&b[i]);
        //读入两个数组
        sort(a+1,a+1+n);
        sort(b+1,b+1+n);
        //分别排序
        memset(f,0,sizeof(f));
        f[1]=c(1,1);
        //前1个数匹配最小值只能是a[1]和b[1]匹配
        f[2]=min(f[1]+c(2,2),c(1,2)+c(2,1));
        /*前两个数的匹配最小值只能是a[1]和b[1],a[2]和b[2];
        或者a[1]和b[2],a[2]和b[1]匹配。*/
        for(int i=3;i<=n;i++)//开始dp
        {
            f[i]=f[i-1]+c(i,i);//默认是这样匹配(先给一个初值,再不断被更新)
            f[i] = min(f[i],f[i-2]+c(i-1,i)+c(i,i-1));
            f[i] = min(f[i],f[i-3]+c(i-2,i)+c(i,i-2)+c(i-1,i-1));
            f[i] = min(f[i],f[i-3]+c(i-2,i)+c(i-1,i-2)+c(i,i-1));
            f[i] = min(f[i],f[i-3]+c(i-2,i-1)+c(i-1,i)+c(i,i-2));
            //四种交叉匹配的方案,大家可以在草稿纸上画画线条模拟匹配一下子
        }
        printf("%lld",f[n]>=INF?-1:f[n]);
        //如果f[n]>=INF就说明不能匹配,就输出-1。否则就是正解了。
        return 0;
    }

    例题三

    题目描述

    对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程。

    在可以选择的课程中,有 2n 节课程安排在 n 个时间段上。在第 i1in个时间段上,两节内容相同的课程同时在不同的地点进行,其中,牛牛预先被安排在教室 ci 上课,而另一节课程在教室 di 进行。
    在不提交任何申请的情况下,学生们需要按时间段的顺序依次完成所有的 n 节安排好的课程。如果学生想更换第 i 节课程的教室,则需要提出申请。若申请通过,学生就可以在第 i 个时间段去教室 di上课,否则仍然在教室 ci 上课。
    由于更换教室的需求太多,申请不一定能获得通过。通过计算,牛牛发现申请更换第 i 节课程的教室时,申请被通过的概率是一个已知的实数 ki,并且对于不同课程的申请,被通过的概率是互相独立的。
    学校规定,所有的申请只能在学期开始前一次性提交,并且每个人只能选择至多 m 节课程进行申请。这意味着牛牛必须一次性决定是否申请更换每节课的教室,而不能根据某些课程的申请结果来决定其他课程是否申请;牛牛可以申请自己最希望更换教室的 m 门课程,也可以不用完这 m 个申请的机会,甚至可以一门课程都不申请。
    因为不同的课程可能会被安排在不同的教室进行,所以牛牛需要利用课间时间从一间教室赶到另一间教室。
    牛牛所在的大学有 v 个教室,有 e条道路。每条道路连接两间教室,并且是可以双向通行的。由于道路的长度和拥堵程度不同,通过不同的道路耗费的体力可能会有所不同。 当第 i1in1 节课结束后,牛牛就会从这节课的教室出发,选择一条耗费体力最少的路径前往下一节课的教室。
    现在牛牛想知道,申请哪几门课程可以使他因在教室间移动耗费的体力值的总和的期望值最小,请你帮他求出这个最小值。

    输入输出格式
    输入格式:
    第一行四个整数 n,m,v,e n 表示这个学期内的时间段的数量;m 表示牛牛最多可以申请更换多少节课程的教室; v 表示牛牛学校里教室的数量; e n i(1 \leq i \leq n) c_i i 1 \le c_i \le v n i(1 \leq i \leq n) d_i i 1 \le d_i \le v n i(1 \leq i \leq n) k_i i 0 \le k_i \le 1 e a_j, b_j, w_j a_j, b_j w_j 1 \le a_j, b_j \le v , 1 \le w_j \le 100 1 \leq n \leq 2000,0 \leq m \leq 2000,1 \leq v \leq 300,0 \leq e \leq 90000 322 4 \times 10^{-3}$。 (如果你不知道什么是浮点误差,这段话可以理解为:对于大多数的算法,你可以正常地使用浮点数类型而不用对它进行特殊的处理)

    输入输出样例
    输入样例#1:
    3 2 3 3
    2 1 2
    1 2 1
    0.8 0.2 0.5
    1 2 5
    1 3 3
    2 3 1
    输出样例#1:
    2.80
    说明
    【样例1说明】
    所有可行的申请方案和期望收益如下表:
    这里写图片描述
    【提示】
    1.道路中可能会有多条双向道路连接相同的两间教室。 也有可能有道路两端连接的是同一间教室。
    2.请注意区分n,m,v,e的意义, n不是教室的数量, m不是道路的数量。
    这里写图片描述
    特殊性质1:图上任意两点 ai , bi , aibi 间,存在一条耗费体力最少的路径只包含一条道路。
    特殊性质2:对于所有的 1in , ki=1 .

    分析

    这道题目是一个图的期望DP。我们要算的期望是到每一个时间点为止的路径最大值。
    思路是:我们先用floyd进行预处理(因为v的数据很小,可以使用邻接矩阵),然后就开始期望dp。
    我们的状态用一个三维数组存储:f[i][j][k]表示到了第 i 个时间段,选了j个教室要申请进行换教室,k表示当前的教室申不申请。我们从i推到 i+1。这里要进行分类讨论,如果要推到f[i][j][0]的话,那么第i+1个时间段肯定是在c[i+1]教室(因为不进行申请,失败的概率可以理解为百分之一百),但是来这个教室之前,我们可以讨论上一个时间段的情况:如果上一个时间段没有进行申请,那么上一个时间段肯定在c[i],那么期望是a[c[i]][c[i+1]]*1(100%的概率);如果上个时间段进行了申请,那么就存在两个情况,申请成功和申请不成功,所以上个时间段可能在c[i]或者d[i]。概率是1-k[i]和k[i],再进行期望计算:

    f[i+1][j][0]=min(f[i][j][0]+a[c[i]][c[i+1]],f[i][j][1]+(1k[i])×a[c[i]][c[i+1]]+k[i]×a[d[i]][c[i+1]])

    如果这个时间段进行申请,那么差不多地,我们还进行讨论:
    若j!=m(代表还没有到申请数量上限):
    f[i+1][j+1][1]=min(f[i][j][0]+a[c[i]][d[i+1]]×k[i+1]+a[c[i]][c[i+1]]×(1k[i+1]),f[i][j][1]+a[c[i]][c[i+1]]×(1k[i])×(1k[i+1])+a[d[i]][c[i+1]]×k[i]×(1k[i+1])+a[c[i]][d[i+1]]×(1k[i])×k[i+1]+a[d[i]][d[i+1]]×k[i]×k[i+1]);

    否则就不能申请了。。。

    代码

    #include<bits/stdc++.h>
    #define maxn 2001
    #define maxe 90001
    #define maxv 301//宏定义,我被带掉了
    #define INF 100000000
    using namespace std;
    inline int read()
    {
        int num=0;
        char c=getchar();
        for(;c>'9'||c<'0';c=getchar());
        for(;c>='0'&&c<='9';num=num*10+c-48,c=getchar());
        return num;
    }
    int n,m,v,e,c[maxn],d[maxn];
    double k[maxn];
    double f[maxn][maxn][2];
    int a[maxv][maxv];//a数组代表i和j之间的最短路(用弗洛伊德可以完成) 
    void init()
    {
        n=read();
        m=read();
        v=read();
        e=read();
        memset(a,10,sizeof(a));
        for(int i=1;i<=n;i++)
        c[i]=read();
        for(int i=1;i<=n;i++)
        d[i]=read();
        for(int i=1;i<=n;i++)
        cin>>k[i];
        for(int i=1;i<=e;i++)
        {
            int x,y,z;
            x=read();
            y=read();
            z=read();
            a[x][y]=a[y][x]=min(z,a[x][y]);
        }
    }//读入 
    
    void floyd()
    {
        for(int i=1;i<=v;i++)
        a[i][i]=0;//坑1:防止自环
        for(int k=1;k<=v;k++)
        for(int i=1;i<=v;i++)
        for(int j=1;j<=v;j++)
        a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
        for(int i=1;i<=v;i++)
        a[0][i]=0;//坑2:增加超级源点防止溢出导致不可预测的错误
    }//弗洛伊德做最短路 
    
    int main()
    {
        init();//读入 
        floyd();//弗洛伊德 
        for(int i=0;i<maxn;i++)
        for(int j=0;j<maxn;j++)
        for(int k=0;k<=1;k++)
        f[i][j][k]=INF;//赋初值
    
        f[0][0][0]=0;//dp起点
        for(int i=0;i<=n-1;i++)//进行dp递推
        {
            for(int j=0;j<=m;j++)
            {
                f[i+1][j][0]=min(f[i][j][0]+a[c[i]][c[i+1]],f[i][j][1]+(1-k[i])*a[c[i]][c[i+1]]+k[i]*a[d[i]][c[i+1]]);
                if(j!=m)f[i+1][j+1][1]=min(f[i][j][0]+a[c[i]][d[i+1]]*k[i+1]+a[c[i]][c[i+1]]*(1-k[i+1]),
                f[i][j][1]+a[c[i]][c[i+1]]*(1-k[i])*(1-k[i+1])+a[d[i]][c[i+1]]*k[i]*(1-k[i+1])+a[c[i]][d[i+1]]*(1-k[i])*k[i+1]+a[d[i]][d[i+1]]*k[i]*k[i+1]);
            }
        }
        double ans=INF;
        for(int j=0;j<=m;j++)
        ans=min(ans,min(f[n][j][0],f[n][j][1]));
        printf("%.2lf",ans);//坑3:小数点
        return 0;
    }
    展开全文
  • 永远不要新技术期望太高,也许,这是正确的答案。   回到家里,早上四点多的时候,张小庆给王碧薇发了短信,做我女朋友吧。   可以想象的到,从四点到天亮七点这段时间里,这个可怜的男人是如何的难...
  • 2019年人工智能的最大趋势和期望

    千次阅读 2018-12-17 11:57:16
    2019年人工智能的最大趋势和期望   https://www.toutiao.com/a6634838180619108878/   时间若白驹过隙,忽然而已。2019 年即将来临,新的一年中如何人工智能(AI)会发生哪些重大变化、最大趋势是什么、对此...
  • 其实在第二章-搭建你的工作环境 中作者提到其实并不需要用真正的软盘,用虚拟软盘映像就可以了,也就是*.IMG文件,反过来想想,连计算机都可以虚拟,软盘当然也可以虚拟了。软盘映像文件并不需要自己制作,随书...
  • 作为程序员,作为项目经理,作为管理者,您希望自己工作在什么样的环境中? 在这个专为程序员服务的博客园大家庭中,我相信我们大家都有过做程序员的经历,或者至少应该与程序员打过交道。作为程序员,您在编码时...
  • 程序员这样对待简历,你期望面试官怎么对待你?

    万次阅读 多人点赞 2016-07-24 20:37:47
    为什么想到谈这个问题呢?前段时间公司因业务扩展需要招聘几个研发、运维以及测试人员...3、你这样对待简历,你期望面试官怎么对待你呢?这里抽空整理一下,希望小伙伴们有一定的帮助!简历中有哪些问题呢?1、简历中
  • 而员工的期望不仅仅是办公环境、薪金福利等物质因素,更多的则是员工在工作中得到来自其他个体的信任与支持,以及送人玫瑰手留香之后的自我感觉。 管理者给予员工的信任与支持是建立在员工工作肯定与帮助之上...
  • 写给一位期望做得更好的大学生

    千次阅读 多人点赞 2015-12-06 17:04:12
    我是一名大专一学生,计算机软件专业,我询问方向,是UI设计和Java,但是我UI设计这方面不感兴趣,但也有在认真跟老师学。编程C/C++、汇编比较感兴趣。因为学C,看C的视频和C Primer Plus,看了视频后看书比较...
  • 项目团队的人力资源激励理论,已介绍过X-Y理论,马斯洛需求层次...第一类是保健因素,这些因素是与工作环境或条件有关的,能防止人们产生不满意感的一类因素,包括工作环境、工资薪水、公司政策、个人生活、管理监督...
  • 基本内容 - 管理心理学理论期望理论(Expectancy Theory),又称作 ”效价-手段-期望理论“。
  • 做自己想做的工作,你也可以

    千次阅读 多人点赞 2015-12-23 07:31:06
    你所期望工作是什么呢?什么样的工作才算是理想的工作呢?你知道哪项工作最适合你吗?如何才能找到理想的工作
  • 公司的建议_工作总结

    万次阅读 2019-12-17 17:54:13
    1、一些实验操作方法能够制作成视频或者把操作规程做成牌子挂在相应的仪器或设备旁边。...4、关爱员工让员工感觉到家的温暖,提高工作热情。 5、公司应当认真的对待每一个员工提出的推荐,组织相关人...
  • win10下odoo10开发环境搭建

    万次阅读 2017-12-22 13:16:53
    odoo10环境搭建所需依赖: Python2.7 odoo10.0 Node.js PostgreSQL 9.5 PyCharm 专业版 1.首先先安装好Python2.7,并设置好环境变量2.下载odoo10.0,这里介绍Git方法下载:1. 首先安装好Git,安装时注意,Git Bash&...
  • 想跳槽可大环境不好,有什么建议?

    千次阅读 多人点赞 2019-10-30 10:30:27
    有人邀请我回答一个曾经上过知乎热榜的问题: 会不会因为裁员潮,市场上工作机会比往年跳槽季更少...大环境不好时,是否跳槽,要看自己的情况,而不是说到了跳槽季就换工作或者今年裁员潮就放弃原本拟好的更换工作...
  • 当然,这也不是我司集成开发环境的最终目标形态,事实上,当前的实现离我们期望的形态还有很大的差距,所以重构改造的工作也在实施中。 总之,提供一站式的服务,相信站在用户的角度来看,大家都会认同,这是集成...
  • 九月总结:结束两年左右的工作有感

    万次阅读 多人点赞 2017-09-06 14:51:21
    今天休息了整理一下,希望你也有些启发。这个月主要有 3 件事: 结束将近两年的工作 GitChat 分享及感悟 感情问题导致的思考 每一件事都耗费了很大精力,三件事我的影响加起来,使得九月可能是今年最重要的一个...
  • 找不到合适的工作怎么办

    千次阅读 多人点赞 2017-01-02 07:01:14
    究竟什么是合适的工作?长时间找不到合适的工作时怎么办?
  • 职场人的工作环境白天宽阔明亮,晚上同样灯火通明,大气精致的写字楼,绵延不绝于耳的键盘敲击声和行走于干净到不尘不染地板上的哒哒高跟鞋声响,在盛产加班的大环境下,没有哪一个职场人没有加过班。 小编刚毕业...
  • 其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事、主要的成就等,这些可以和学习无关,但要突出积极的个性和做事的能力,说得合情合理...
  • 远程全方位环境监测无人机系统

    千次阅读 2019-08-01 01:52:00
    国务院也相继印发了《打赢蓝天保卫战三年行动计划》《水污染防治行动计划》等多项计划安排,环境监测也成为了这项工作的一个重要环节。 目前传统的环境监测手段主要以空气监测站、人工定期巡查、视频监控等方式,...
  • 01、我的故事 昨天我在群里发起了一个议题:读者...因此,我第一份工作一直抱着感恩的心态。因为它让我找到了新生,从此再也不用伸手找父母要钱了,自力更生的感觉,真好,就好像沙漠里的行人找到了一方绿洲。 更...
  • 摘要:为探讨员工援助计划(EAP)在企业管理中的意义,分别介绍了员工援助计划、员工的行为与绩效分析、压力管理的概念,通过上述三个方面的分析,分析了员工援助计划提高组织承诺、提高员工工作动力与绩效...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 164,486
精华内容 65,794
关键字:

对工作环境的期望