07 2017 档案
摘要:题意: 有一个猎人和n匹狼 每个狼有一个自己的攻击力a[i] 每一个狼还有一个buff 可以给旁边的狼加b[i]攻击力 如果这匹狼被消灭了 那么这个buff也就不存在了 猎人每消灭一个狼会受到等同于攻击力的伤害 问猎人消灭所有的狼能受到的最少伤害 思路: 经典区间dp 如果我们要消灭第[l,r]区间
阅读全文
摘要:1 #include 2 #define cl(a,b) memset(a,b,sizeof(a)) 3 using namespace std; 4 5 const int maxn=5e4+10; 6 7 int star[maxn],d[maxn]; 8 double d2[maxn]; 9 10 int main() 11 { 12 int T; ...
阅读全文
摘要:题意: 给了你9种图片 问给的图片能不能由这九种构成 思路: 拓扑排序 对能存在的点连边 如果不存在环的话 这个图就成立 否则不成立
阅读全文
摘要:中文题意就不解释了 思路嘛 就是暴力 不过是用stl暴力 描述一遍题意就行了 其他的交给multiset去操作 其中还有一个小的知识点 反向迭代器和普通迭代器是不能相互转化的 要用base()方法获取相应迭代器再进行赋值操作
阅读全文
摘要:题意: 给你一串括号 问你有多少种匹配的子串 就是前半部分都是'(' 后半部分都是')'的子串 思路: 首先我们预处理 当前位置之前有多少左括号 和 当前位置之后有多少右括号 对于每一个处于i位置的左括号 我们将ans+=C(left[i]+right[i]-1,right[i]-1) 这个式子是C
阅读全文
摘要:题意: 给你一个矩阵 有两种操作: 1 这一行每个都加一 2 这一列每个都加一 问你怎么用最少的步数从都是0的矩阵变到给的矩阵 思路: 输出的时候记录一下sum 用来验证是否成立 因为要最少的 所以先可行或列小的来变 每一次找这一行或一列最小的 然后加上到相应的队列中 然后sum减去对应的值 如果最
阅读全文
摘要:题意: 教师有n行m列 一个老师点名 她会点k次 这个人坐在x行y列的位置 点名方法是从1~n 再从n-1~1 问 被点名次数最多的人被点了多少次 被点名次数最少的人被点了多少次 这个人被点了多少次 思路: 我们将从 1~n 再从 n-1~2 设为一个周期 这样每次新开始点第一排都意味着一个周期的开
阅读全文
摘要:题意很明显不解释 做法就是直接模拟 有一个坑的地方就是中间值会爆ll WA50
阅读全文
摘要:题意: (一开始题意没读懂 样例都看不懂 给你n个数 让你选出一些区间 让这些区间的表示的值和最大 每个区间表示的值就是区间内每个不重复的数的异或和 我们选出的区间可以不覆盖整个数组 就像第二组样例 (接下来是重点 区间内出现过的数不能在其他区间出现 意思就是如果一个数在区间中出现过 那所有数就都要
阅读全文
摘要:题意: 给了你n个城市 m条边 k个政府 每个政府管辖的区域内不能和其他政府的区域有相连 即政府之间不存在路径 问你在维护这种关系的同时 最多再加多少条边 思路: 先找出来每个联通块 再找出来没有归属的孤立的点 把他们都放到最大的联通块里 然后每个联通块之间的点两两连边是n*(n-1)/2条边 最后
阅读全文
摘要:总的思路是 用线段树维护线段长度 线段长度*h计算面积 具体操作看代码 因为x太大还有离散化一下 学到了好多新姿势 看discuss可能是后台数据有问题 数据要开到1000才能过
阅读全文
摘要:题意: 有n对情侣坐一桌一起吃饭 一共有1 2两种食物 要求每对情侣吃的东西不能一样 任意相邻的三个人不能吃相同的东西 输入任意一种符合题意的方案 思路: 首先对每对情侣建边 然后 因为任意相邻的三个人不能吃相同的东西 那么我们对两个相邻的点建边 即2*i和2*i-1之间建双向边(+1也没事 建图就
阅读全文
摘要:中文题意不解释 一开始以为是个线段树之类的数据结构 毕竟还有查询 但是算了一下时间复杂度发现直接暴力就可以 O(n*sqrt(n)*sqrt(n)*log(sqrt(n))) 大概只有2e6的复杂度 对于每一个n对每个k≤sqrt(n)预处理排序 大于的部分直接计算就可以 反正还是很水的了 记得M是
阅读全文