[链接] 我是链接,点我呀:) [题意] 给你k个红包,每个红包可以在si..ti的时间范围内拿走. 抢完红包之后你得到wi元,然后你需要在di+1时刻才能继续抢红包 时间是线性的从1..n 然后某个人可以阻止你在x时刻抢红包,然后你的时间跳过1s(-1s)直接到达x+1时刻. 这个人可以阻止你m次. 请问这个人采用最优阻止策略下,你最少抢到的金额. (如果有多个可以抢的红包,那么抢wi最大的,如果仍然相同抢di最大的,再相同的话就无所谓了,因为选哪个都一样了) [题解] dp 设dp[i][j…
Codeforces 1106 E 题意:有\(k\)个红包,第\(i\)个红包可以在\(s_i\)到\(t_i\)的时间内抢,同时获得\(w_i\)的钱,但是抢完以后一直到\(d_i\)都不可以继续抢,\(bob\)从\(1\)到\(n\)的时间内可以抢红包,他的策略是在第\(i\)个时间点内找\(w_i\)最大的红包,如果有相同找\(d_i\)最大的,再相同就随便挑,但是\(alice\)可以在最多\(m\)个时间点内打扰\(bob\),在\(alice\)打扰的那个时间点内\(bob\)无…
[链接] 我是链接,点我呀:) [题意] 让你遍历n个节点,访问过的节点不操作. 如果是没有访问过的点,那就把它加到序列的末尾. 问你形成的最小字典序的序列是多少. [题解] 显然每次找最小的标号 用一个集合维护当前能够到达的最小标号 一开始集合里面只有1 然后每次取出来最小的节点然后到达那个节点. 然后把和那个点相邻的节点全都加入到集合中(如果没有访问过) 已经访问过的点是可以重复走的. 所以可以一层一层地往外扩展"可以到达的节点集合" 重复上述步骤n次即可 有点像最短路的蓝白点思想…
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 看了下样例解释就懂了... 每次选择最大最小的两个组合 然后加起来.. [代码] import java.io.IOException; import java.util.Arrays; import java.util.Scanner; public class Main { static int n; static int a[]; static long sqr(long x) { return x*x; } public stat…
[链接] 我是链接,点我呀:) [题意] 给你n个菜以及每个人需要的菜以及数量 如果某个人无法满足它对菜的需求的话 就用价格比较低的菜来填充它的要求. (如果价格低的菜不够了,那么就直接输出0) 否则输出每个人的消费总量 [题解] 把所有的菜按照价格升序排序. 对于每一个顾客的kind,num 先减少菜的数量. 然后定义一个变量last 表示last之前的菜都已经售空(排序后,每个人可能会有多余的部分,要用前面最小的若干部分填充) 所以每个人都会让价格低的前面的一部分菜清空. 我们每次给某个顾客…
题意:过年了,Bob要抢红包.抢红包的时间段为1 - n,有m个红包,每个红包有三个属性:st(红包出现的时间), ed(红包消失的时间),d(如果抢了这个红包,能够抢下一个红包的时间),w(红包的收益).注:结束时间为ed是指在ed + 1的时候才能抢其它的红包,d同理.Bob是一个贪心的人,如果当前时间段他可以抢红包,他会抢现在出现的红包中收益最大的红包.如果有多个收益最大的红包,他会抢d最大的那个.Alice可以打断Bob k次,每次打断可以使Bob在1秒内无法行动,下一秒恢复正常.现在问…
题意大致是Bob新年拿红包,每个红包可以在s-t时间内取,但是取了之后得在d+1时间开始才能继续取红包. 同时他女儿能在m个时间点阻止他取红包,求女儿阻止后Bob取得的w总和最小值. Bob取红包的策略是固定的,有红包就一定取,有多个就取w最大的,仍然有多个就取d最大的. 这个题意读了半天,不得不感叹Bob他孩子真是亲生的,都是傻子ww. 这个题首先第一感觉就是个典型的dp,但是想了想觉得女儿的阻止操作会影响后续当时状态的红包状态,纠结了半天. 但是其实我们可以发现,首先Bob的操作本来应该是固…
[codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=2000),问满足[数列长度是k && 数列中每一个元素arr[i]在1~n之间 && 数列中元素可以重复]的数列有多少个?结果对10^9+7取余 解题思路:dp[i][j]表示长度是j,最后一位是i的种数 if(kk%i==0) dp[kk][j+1]+=dp[i][j] #inc…
E. Lunar New Year and Red Envelopes 题意: 在长度为n的时间轴上,有k个红包,每个红包有领取时间段[s,t],价值w,以及领了个这个红包之后,在时间d到来之前无法再进行领取操作.每次领取的策略是取当前可领取红包中w最大的,w相同时取d最大的.再给m个干扰机会,一个干扰机会可以使其在任意一个x这个时间点无法进行领取操作直到x+1.问最优使用不超过m次干扰下,将领取的最小红包价值总和.(n,k<=1e5,m<=200) 思路: 这场因为评测机出问题,UR了.前四…
[题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q个操作; 有以下两种类型 ①将第i个连通块里面灯取反 ②询问你(x1,y1)(x2,y2)这个矩形区域内灯的权值的和; [题解] 要用到二维的树状数组; 取反操作只要O(1)就能完成; 即先不管它是什么,取反就是了; 然后在询问的时候,直接用二维树状数组累加; 这里的累加可能是减也可能是加; 也可能…