Codeforces 1009C: Annoying Present】的更多相关文章

C. Annoying Present time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Alice got an array of length nn as a birthday present once again! This is the third year in a row! And what is more disa…
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 其实就是让你最后这n个数字的和最大. 加上的x没有关系.因为肯定都是加上n个x 所以直接加上就可以了 主要在于如何选取j 显然我们要找到一个位置j. 然后pre[j]+aft[j]的值最大(pre[j]=1+2+3+...+j-1,aft类似 (这是在d大于0的时候,小于0的时候找pre[j]+aft[j]最小的就好) [代码] #include <bits/stdc++.h> #define ll long long using na…
C. Annoying Present time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Alice got an array of length nn as a birthday present once again! This is the third year in a row! And what is more disa…
题目链接:http://codeforces.com/contest/1009/problem/C 解题心得: 题意就是一个初始全为0长度为n的数列,m此操作,每次给你两个数x.d,你需要在数列中选一个位置pos,然后对于每一个位置i的数num[i]-x+d*dis(i,pos).最后要求这个数列平均值最大. 其实不需要记录这个数列中的每个数是多少,只需要记录总和就行了.如果d为正数pos选在数列越中间的位置最后的总和越大.所以需要分类讨论d的正负和数列长度的奇偶,然后用等差通项求和公式就行了.…
题意 一个长度为n的数组(初始全为0),进行m次操作. 操作:给你x,d,你任意挑选一个 i (1~n),每个数字加上 x+|i-j|*d( j 表示对应数字的下标) 问m次操作后的最大算术平均值为多少? 题解 首先对于x,每次数组的和sum都增加n*x.(Σ|i-j|)*d跟我们选的 i 有关系,如果d>0,我们就让 Σ|i-j| 尽量大,如果d<0,我们就让 Σ|i-j| 尽量小.Σ|i-j|的最大值就是 i 取0或n的时候,Σ|i-j|的最小值就是 i 取n/2的时候.维护sum就行了…
http://codeforces.com/problemset/problem/731/C 题意:有n只袜子,m天,k个颜色,每个袜子有一个颜色,再给出m天,每天有两只袜子,每只袜子可能不同颜色,问要让每天的袜子是相同颜色的,要重新染色的袜子数最少是多少. 思路:并查集合并,将同一天的袜子合并起来,然后就形成了cnt个集合,每个集合都是独立的,因此排序,找出每个集合里面袜子颜色相同的最多的是哪个颜色,然后把其他不属于这个颜色的都染成这个颜色,那么这样重新染色的袜子数是最少的.然后每个集合的答案…
http://codeforces.com/problemset/problem/747/D 题意:有n天,k次使用冬天轮胎的机会,无限次使用夏天轮胎的机会,如果t<=0必须使用冬轮,其他随意.问最少的换胎次数. 思路:先数冬天的天数tol,如果天数>k的话,那么就不可能度过.否则,最坏情况下,每到冬天就换一次冬天轮胎,然后度过冬天就换夏天轮胎,所以答案是2*tol.然后考虑尽量让每段冬天连续,这样可以减少换胎次数,于是算出冬天之间的间隔,然后从小到大排序,每次减少一段间隔,ans就可-2.然…
http://codeforces.com/problemset/problem/747/C 题意:有n台机器,q个操作.每次操作从ti时间开始,需要ki台机器,花费di的时间.每次选择机器从小到大开始,如果可以完成任务,那么输出id总和,否则输出-1. 思路:简单的模拟,注意如果不能完成任务,那么ser数组是不能更新的. #include <cstdio> #include <algorithm> #include <iostream> #include <cs…
http://codeforces.com/contest/749/problem/D 题意:有几个人在拍卖场竞价,一共有n次喊价,有q个询问,每一个询问有一个num,接下来num个人从这次拍卖中除去,问对于每一个询问减掉num个人后是谁赢了拍卖,最小的价格是多少. 思路:昨晚不会做.想法好神奇(我太弱).对于每个人用 set-S 装起来其每次喊价的下标,然后用一个数组order按价格从大到小的顺序将每个人装起来,对于每一个询问,把这num个人丢到一个 set-s 里面,然后在order里面找没…
http://codeforces.com/problemset/problem/749/B 题意:已知平行四边形三个顶点,求另外一个顶点可能的位置. 思路:用向量来做. #include <cstdio> #include <algorithm> #include <iostream> #include <cstring> #include <string> #include <cmath> #include <queue&g…