题意: 给出n个学生 m类题目 每个人会做s[i]类的题 并且做这个题的能力为r[i]  组成一个竞赛队 要求可以选择一些题目  在竞赛队中 擅长每一个题目的 人数要均等  求max(sigma(r[i])) 思路:贪心思想  每类题目选k个学生 先对每一类学生的能力值排序   如果这k个学生的能力值大于0 就选上 一开始写的是类似扫描的思想  从k从1---max(擅长一类题目的学生) 然后把他们前k个相加 如果擅长其中一类题目的sum<=0或者没有k个学生擅长该类题目就忽略  这样在枚举的时…
[JZOJ5280]膜法师题解--思维+前缀和 题目链接 暴 力 过 于…
题目链接:Multi-Subject Competition 题意:给定n名选手,每名选手都有唯一选择的科目si和对应的能力水平.并且给定科目数量为m.求选定若干个科目,并且每个科目参与选手数量相同的情况下的最大能力水平. 题解:每位选手扔到对应的科目里面,从1-m遍历科目,能力值排序下,维护下能力值和,大于0就给到当前位置人数答案加上该值,否则跳出(给负价值是没有意义的),最后遍历一遍人数对应的价值,拿最大的即可. #include <vector> #include <cstdio&…
题目大意:给出n个数(a1.....an),和一个数k,问有多少个区间的和等于k的幂 (1 ≤ n ≤ 10^5, 1 ≤ |k| ≤ 10, - 10^9 ≤ ai ≤ 10^9) 解题思路:首先,可以从题目得出k的幂最大不能超过n*ai=1e14.然后,我们先求出前缀和sum[1]...sum[n],k的i次幂为power[i].我们要求出一个区间和等于power[i]即sum[r]-sum[l]=power[i],转换一下sum[r]=sum[l]+power[i]. 所以我们只需要从1到…
C. Molly's Chemicals time limit per test 2.5 seconds memory limit per test 512 megabytes input standard input output standard output Molly Hooper has n different kinds of chemicals arranged in a line. Each of the chemicals has an affection value, The…
题目传送门 大致题意: 输入整数n(1<=n<=100000),再输入由n个0或1组成的字符串,求该字符串中满足1和0个数相等的最长子串.子序列. sample input: 801001001 sample output: 4 6 题解: 补充一下子串和子序列的区别:字串必须连续,子序列不必连续. 求01个数相等的最长子序列长度:min(0的个数,1的个数). 下面说求01个数相等的最长子串长度: 可以建一个sum数组求前缀和,因为要使0和1个数相等,所以0可以用-1代替,故当sum[r]-…
题目链接:http://arc077.contest.atcoder.jp/tasks/arc077_c 题解:一道思维题.不容易想到类似区间求和具体看一下代码. #include <iostream> #include <cstring> #include <cstdio> #define inf 0X3f3f3f3f using namespace std; const int M = 1e5 + 10; typedef long long ll; int a[M]…
题意 https://vjudge.net/problem/CodeForces-519D 给定每个小写字母一个数值,给定一个只包含小写字母的字符串 s,求 s 的子串 t 个数,使 t满足: 首位字母相同,长度大于 1. 首尾字母除外的其余字母的数值之和为 0. 思路 考虑abca的值为1 1 -1 1,前缀和为1 2 1 0,用map维护每个字符的各前缀和的个数,设两个a位置分别为l,r,那么对于后一个a它的答案是map[a][preR],因为l+1~r-1的和为0,所以pre[L]=pre…
https://blog.csdn.net/mengxiang000000/article/details/53291883   原博客地址 http://codeforces.com/group/1EzrFFyOc0/contest/738/problem/B  题目链接 题目大意: 给你一个N*M的空间,其中0表示没有人,1表示有人,对应一个好位子以及方向的定义为: ①首先这个位子不能有人. ②其次对应这个位子安排一个照明方向,这个方向上必须有人才行. 让你求一共有多少个这样满足的放置方案.…
题意:给你一个只含\(+\)和\(-\)的字符串,给你一个数\(x\),\(x\)初始为\(0\),随着字符串的遍历会加一减一,现在有\(m\)个询问,每个询问给出一个区间\([l,r]\)表示将这个区间内的字符串去除,得到新的字符串,问遍历新字符串后,\(x\)取到的值最多有多少. 题解:这题的关键是,\(x\)的值是一一变化的,所以从最大值\(mx\)变为\(mi\),最多有\(mx\)-\(mi\)+1个数,根据题意,区间会把字符串分成两段(不考虑两段的情况),前面的一段很好处理,我们用结…