#2 codeforces 480 Parcels】的更多相关文章

题意: 就是有一个用来堆放货物的板,承重力为S.现在有N件货物,每件货物有到达的时间,运走的时间,以及重量,承重,存放盈利.如果这件货物能再运达时间存放,并在指定时间取走的话,就能获得相应的盈利值.货物都是逐个往上叠的,每个箱子上面的总重量不能大于箱子的承重.总的质量不能大于板的承重,货物上面还有货物的话是不能被取走的.现在求最大的盈利值. 代码: 第一感觉就是区间dp 网上还有一种粗看没看懂就不想看了.. 首先观察出来的性质就是区间只有包含与不相交两种情况 比较简单粗暴的是f[i][j][k]…
E. Parking Lot time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output Petya's been bored at work and he is killing the time by watching the parking lot at the office. The parking lot looks from a…
Problem A,B,C: 简单的模拟,注意A中p mod q时对q=0特殊处理(注意范围) Problem D: Brief Intro: 给定长度为N的数组A,将A中所有连续子序列分成最少的组,使得每组任意一对数的积均为完全平方数 求最终分成组数为K的子序列个数,K属于[1,N] Algorithm: 能推出的性质:若P,Q两数积为完全平方数,则任意一个质因子的次幂的奇偶性必然相同 那么想判断P,Q是否满足条件,只要保留每个质因子的次幂为0或1,再判断P,Q是否相同即可 下面只要考虑如何O…
1.当调试时发现无法正常调用函数时,检查是否发生爆栈 对于每个栈仅有4MB的空间,开int只能开大约5*10^5. 大数组一定要开全局变量 2.当long long=int*int时会爆int,一定要注意 在进行long long计算时,最好全部开成long long ,或加上1LL 3.vector.size()的类型为unsigned int 当用其做减法时一定要注意边界条件,防止差小于0溢出 4.在求特殊最值时,一定要特殊定制初始化值,不能套用平常初始值,防止初始值不够. Ex:1<<3…
Link: AGC003 传送门 A: 判断如果一个方向有,其相反方向有没有即可 #include <bits/stdc++.h> using namespace std; ]; map<char,bool> mp; int main() { scanf("%s",s); ;i<strlen(s);i++) mp[s[i]]=true; if(mp['S']==mp['N']&&mp['E']==mp['W']) puts("Ye…
传送门:http://codeforces.com/contest/980/problem/C 参考 题意:给定n个数字,每个数在0~256间,现在给至多连续k的数分为一组,给出字典序最小的答案. 思路:贪心,对于每一个a[i],查找max(0,a[i] - k + 1)到 a[ i ] 中符合vis[ t ] ==t || vis[ t ] = -1的最小数字 T ,把这个T到 a[ i ]间的更新为T; #include <bits/stdc++.h> using namespace st…
题目地址:http://codeforces.com/contest/980/problem/C 官方题解: 题解:一共256个像素网格,可以把这个256个分组,每个分组大小<=k.给出n个像素格子,要求每个像素用分组里的一个数表示,并且表示出来的字典序要最小. 方法:先把数组a全部赋值为-1,表示数组的这个数未分组.然后一个个数字扫进来,如果这个数字没有分组的话,我们找到这个组的范围max(0,p-k+1)~p,如果前面的最小数字未分组或者分组的情况是它自己的话,我们就从前面最小的数字到p分组…
题目地址:http://codeforces.com/contest/980/problem/B 官方题解: 题意: 有一个城市有4行n列,n是奇数,有一个村庄在(1,1),村民在(4,n)钓鱼:还有一个村庄在(4,1),村民在(1,n)钓鱼:现在要修建k个宾馆,不能修建在边界上,问能否给出一种安排方案使得两个村庄的村民到他们各自的活动地点的最短路的条数相等. 思路: 画了几个实例就应该知道,无论n和k是多少,都可以构建出合理的方案,并且 0≤k≤2×(n−2),所以全是YES. 如果k为偶数,…
题目地址:http://codeforces.com/contest/980/problem/A 官方题解: 我的理解:o表示珍珠,-表示链子,给一串字符串你可以任意重组这条项链(不能删去),判断这条项链两个珠子之间的链子个数能否相同. 方法:字符串遍历,统计珍珠和链子的数量.珠子如果是0是YES,链子能整除珠子也是YES,其他都是NO. #include<cstdio> #include<cmath> #include<algorithm> #include<c…
题目大意:给你n个点的一棵树, 每个点的权值为2^i ,让你删掉k个点使得剩下的权值和最大. 思路:这题还是比较好想的, 我们反过来考虑, 剩下一个的情况肯定是选第n个点,剩下两个 我们肯定优先考虑第n - 1 个点, 因为其他点全部加起来都没有这个点的权值大, 所以我们可以 以第n个点为根, 倍增出每个点祖先的情况, 然后从后往前贪心, 能取到就取, 不能取到就跳过. #include<bits/stdc++.h> #define LL long long #define fi first…