[CF494C]Helping People】的更多相关文章

CF494C Helping People 题意翻译 有一个长为 \(n\) 的数列,初始时为 \(a_{1\dots n}\). 给你 \(q\) 个操作,第 \(i\) 个操作将 \([l_i,r_i]\) 内的数全部加一,有 \(p_i\) 的概率被执行.保证区间不会交错,即:\(\forall i,j\in[1,q],l_i\le r_i<l_j\le r_j\) 或 \(l_i\le l_j\le r_j\le r_i\) 或 \(l_j\le r_j<l_i\le r_i\) 或…
题意:有$n$个穷人,每个穷人有$a_i$的钱,有一个富人决定做$q$次捐赠$(l_i,r_i,p_i)$,表示他有$p_i$的概率给$[l_i,r_i]$的人捐$1$的钱,捐赠的价值为捐赠后最富的人拥有的钱数,问捐赠的价值的期望,保证给出的$[l_i,r_i]$要么相离要么一个包含另一个 捐赠区间是树的结构,先把树建出来,把区间按$l$从小到大排序,若$l$相同则按$r$从大到小,那么一个区间的父亲就是它前面离它最近的包含它的区间,为了方便我们加一个$(1,n,0)$,它可以作为树根而不影响答…
题目地址:CF1105E Helping Hiasat 首先将问题转化成图论:对每个人建立一个点,将同一次修改后的所有人代表的点两两连一条边,那么最终所求的就是这个图的最大独立集 我们知道最大独立集是NPC问题,只能暴力搜 裸暴力的时间复杂度为 \(O(2^m)\) ,由于 \(m\leq 40\) ,无法承受 我们知道最大独立集=补图最小团,考虑记忆化搜索,时间复杂度降为 \(O(\sqrt {2^m})\) 我写的代码广泛应用了STL,包括 \(vector\),\(set\),\(map\…
E - Helping Hiasat 裸的最大团,写了一种 2 ^ (m / 2)  * (m / 2)的复杂度的壮压, 应该还有更好的方法. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PLL pair<LL, LL> #define PLI pair<LL, int> #define PII p…
[Codeforces-div.1 494C] Helping People 试题分析 不难注意到题目所给的性质是一棵树,所以肯定是树形dp. 那么期望没有办法合并,我们还有一种最笨的方法就是求出概率然后直接乘上权值累加. 然后也不难得出朴素的dp:\(f_{i,j}\)表示区间\(i\),最大值为\(mx_i+j\)的概率. 也可以很轻松的写出一个\(O(nm^2)\)的dp,还需优化. 发现转移其中一维是一个前缀和乘积的形式,那么我们改变一下状态:\(f_{i,j}\)表示区间\(i\),最…
CF 282 C Helping People 题解 [原题] time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output Malek is a rich man. He also is very generous. That's why he decided to split his money between poor people.…
Helping Hiasat 题解: 如果我们把连续的2出现的人都相互连边的话, 题目就是问最大独立集的答案是多少. 求最大独立集可以将图变成反图, 然后求最大团. 代码: #include<bits/stdc++.h> using namespace std; #define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout); #…
Codeforces 1105 E 题意:给你m个事件,每个事件可能是以下两种之一: \(1\),代表此时可以更改用户名 \(2\) \(s\),代表\(s\)来查看是否用户名与其名字相符 一共有\(m\leq40\)个人,如果一个人每次看到用户名都与其名字相符,则他会开心,问怎么更改用户名使得开心的人最多? 思路:看每次\(1​\)后面连续的\(2​\),把其中的人两两连边,题目转化成求此图的最大独立集.看到\(m​\)的范围较小,且不能直接做,那么考虑折半搜索.把人分成前一半和后一半,枚举出…
传送门 发现自己不会求最大团了可海星 如果将每一个朋友看做点,将两个\(1\)之间存在\(2\)操作的所有朋友之间互相连边,那么我们最后要求的就是这个图的最大独立集. 某个图的最大独立集就是反图的最大团 然后暴力dfs求最大团即可 #include<iostream> #include<cstdio> #include<bitset> //This code is written by Itst using namespace std; inline int read(…
题意 有一个长度为 \(n\) 的数列 \(a\),有 \(m\) 个 操作,每个操作是给 \(a[l_i,r_i]\) 中的数都加一,一个操作有 \(p_i\) 的概率执行(否则不执行).一个性质是任意两个区间不相交或完全包含(可重叠).问执行完所有操作后 \(a\) 中最大值的期望. \(n\le 10^5,m\le 5000,a\le 10^9\) . 分析 想象一下多个不相交或完全包含的区间,他们的结构其实是一棵树.外层为父亲,内层为儿子. 要计算的是最大值的期望,而这个最大值是由多个操…
区间不交叉,可以看出区间构成了树形结构,建出树之后,设f[u][i]为u这个区间最大值最多加i的概率,转移是\( f[u][i]=p[u]*\prod f[v][mxu-mxv-1]+(1-p[u])*\prod f[v][mxu-mxv] \) 注意要理性选择建树方式,扫描就行了,不要瞎二分调一年-- #include<iostream> #include<cstdio> #include<vector> #include<algorithm> using…
题目链接:https://codeforces.com/contest/1105/problem/E 题意:有 n 个事件,op = 1 表示我可以修改昵称,op = 2 表示一个名为 s_i 的朋友查询我当前的名字.一个朋友是高兴的当且仅当他每次查询我的名字都为 s_i,保证每个朋友至少查询一次我的名字,问最多可以有多少个朋友高兴. 题解:在我两次修改昵称之间,若出现不同的朋友,则他们是互斥的,可以在他们之间连一条边,然后求图的最大独立集,而原图的最大独立集等于补图的最大团,所以求补图的最大团…
题目链接 戳我 \(Solution\) 将好友访问你的主页的状态用二进制存下来 其中若第\(i\)位是\(1\),则表示这个好友在第\(i\)个\(1\)操作后访问了你的主页,否则没访问. 所以如果两位好友都高兴则两位好友的二进制数\(\&\)的值为\(0\) 所以这样就变成了一个最大独立集的问题了 如果\(\&\)不为\(0\)这两个好友不能在一个集合. 看数据范围,我们考虑折半 我们先分成两半,一半的最大独立集合保留.另一半用高维前缀和(实际上时高维\(max\)) 枚举没有处理的独…
问题描述 你在某社交网站上面注册了一个新账号,这个账号有\(n(n\leq 10^5)\)次记录.要么就是你更改过一次ID,要么就是一个ID为\(s(|s|\leq 40)\)的朋友访问过你的空间. 你有\(m(m\leq 40)\)个朋友.每一个朋友都会访问你的空间至少一次.如果这一个朋友每一次访问你的空间的时候,你的ID和它的ID一样,那么他就会高兴. 求你最多能让多少人高兴. 输入格式 第一行一个两个正整数n,m. 接下来n行每行表示一次记录,有如下两种格式: 1 2 s 其中1表示你更改…
\(\mathcal{Description}\)   Link.   给定序列 \(\{a_n\}\) 和 \(m\) 个操作,第 \(i\) 个操作有 \(p_i\) 的概率将 \([l_i,r_i]\) 内的元素 \(+1\).且保证任意两个区间要么不交,要么有包含关系.求所有操作完成后序列最大值的期望.   \(n\le10^5\),\(m\le5000\). \(\mathcal{Solution}\)   首先应当知道,\(E(\max\{a_i\})\not=\max\{E(a_i…
题目大意: 给出一个长度为 n 的序列 a,每次可以进行三种操作中的一种: 选择i,将 a_1,a_2,...,a_i减1. 选择i,将 a_i,a_i+1,...,a_n减1. 将所有 a_i加1. 求最少需要多少次操作将所有 a_i变为0 题解: 一看这道题,就知道是个构造题 一开始也是想了很多方法,比如求一个数与其他数的差值(差一点就到正解了),或者是看绝对值与答案之间的关系(毫无卵用).但是最后才发现,前两个操作本质上改变的是相邻两个数的差值. 于是有了一个新的思路:将响铃两个数的差值通…
题目链接 题目大意: 给你一个有n个元素的数组a,你可以通过一下三种操作使数组的每一个值都为0: 选择一个下标i,然后让a[1],a[2]....a[ i ] 都减一; 选择一个下标i,然后让a[i],a[i+1]....a[n] 都减一; 让每一个值都加一 问让整个数组的值都为0的最小操作数. 题目思路: 我们观察所有操作,发现其都是让一个连续区间都减去一个相同的数,或者加上一个相同的数,这与差分十分相似,所以我们将其转化为差分操作: 1.a[1]-1,a[i+1]+1 2.a[i]-1 3.…
问题 使用四元数可以解决万向节锁的问题,但是我在实际使用中出现问题:我设计了一个程序,显示一个三维物体,用户可以输入绕zyx三个轴进行旋转的指令,物体进行相应的转动. 由于用户输入的是绕三个轴旋转的角度,所以很直接的就想到用欧拉角来表示每一个旋转.但是欧拉角会出现万向节锁,所以我使用四元数替代原来的欧拉角,来计算旋转矩阵.但是奇怪的结果出现了,gimbal lock仍然出现,使用四元数和使用欧拉角,程序的表现一模一样. 原因 经过一番思考,并参考 Using Quaternions for Op…
[it-ebooks]电子书列表   [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Objective-C to develop iPhone games http://it-ebooks.info/book/3544/Learning Web App Development || Build Quickly with Proven JavaScript Techniques http:…
做了几个基于Flash平台的3D的项目,一路走来收获颇多.Away3D作为一个开源的Flash3D引擎,在3D页游领域,无疑是当前OGRE在国内的地位. 翻译出了多年前做Away3D中国社区的时候翻译的一篇文章,以此记录这段难忘的经历! 什么是Away3D?(What is Away3D?) Away3D是一个开源的,基于Flash平台的实时3D引擎.这个项目最初是由Alexander Zadorozhny和 Rob Bateman 在2007年开始的.没想到这一发就不可收拾.下面是一些Away…
Shawn Wildermuth (https://wildermuth.com/2016/05/12/The-Future-of-project-json-in-ASP-NET-Core) If you’re not paying attention to Twitter, the ASP.NET Standup or the Github repositories, you might be missing a big change coming to ASP.NET Core. Now i…
上篇(http://www.hightopo.com/blog/194.html)我们通过定制了CPU和内存展示界面,体验了HT for Web通过定义矢量实现图形绘制与业务数据的代码解耦及绑定联动,这类案例后续文章还会继续以便大家掌握更多的矢量应用场景,本篇我们先切换个话题,谈谈模型-视图-事件之间的关系. http://www.hightopo.com/guide/guide/core/beginners/examples/example_overview.html 图形组件设计架构上主要就…
Development Conversations is being developed on GitHub by a team of volunteers under the lead of project founder and maintainer         Daniel inputmice Gultsch. Translations are being managed on Transifex. Helping out The Conversations Team is alway…
http://www.topwcftutorials.net/2012/08/wcf-faqs-part1.html WCF Interview Questions – Part 1 This WCF Tutorial is a collection of most frequently asked interview questions about Windows Communication Foundation (WCF) covering the beginner to professio…
Today when taking a bath I got a good idea that it is an efficient and interesting way to learn a new programming language: (These days I learn Python from the Python manual and feel a little bored....) Learn programming by trying some little or larg…
https://wpl.codeplex.com/ Before understanding Anti-Cross Site Scripting Library (AntiXSS), let us understand Cross-Site Scripting(XSS). Cross-site Scripting (XSS) Cross-Site Scripting attacks are a type of injection problem, in which malicious scrip…
  Deliverables and artifacts were a focal point of BA work during the early part of my career. If I look back, it seemed the primary purpose of a BA was to generate paper—lots of paper—usually in the form of a giant BRD (business requirements documen…
原文作者:kkun 原文地址:http://www.cnblogs.com/kkun/archive/2011/07/06/agile_software_development.html 敏捷是什么 敏捷开发是一种软件开发方法,基于迭代和增量开发,通过自组织,跨团队,沟通协作完成开发工作. 敏捷宣言的诞生 2001年2月11日到13日,17位软件开发领域的领军人物聚集在美国犹他州的滑雪胜地雪鸟(SnowBird)雪场.经过两天的讨论,“敏捷”(Agile)这个词为全体聚会者所接受,用以概括一套全…
一.前言 最近在做项目的同时也在修复之前项目的一些Bug,所以忙得没有时间看源代码,今天都完成得差不多了,所以又开始源码分析之路,也着笔记录下ConcurrentSkipListMap的源码的分析过程. 二.ConcurrentSkipListMap数据结构 抓住了数据结构,对于理解整个ConcurrentSkipListMap有很重要的作用,其实,通过源码可知其数据结构如下. 说明:可以看到ConcurrentSkipListMap的数据结构使用的是跳表,每一个HeadIndex.Index结…
一.前言 本篇是在分析Executors源码时,发现JUC集合框架中的一个重要类没有分析,SynchronousQueue,该类在线程池中的作用是非常明显的,所以很有必要单独拿出来分析一番,这对于之后理解线程池有很有好处,SynchronousQueue是一种阻塞队列,其中每个插入操作必须等待另一个线程的对应移除操作 ,反之亦然.同步队列没有任何内部容量,甚至连一个队列的容量都没有. 二.SynchronousQueue数据结构 由于SynchronousQueue的支持公平策略和非公平策略,所…