2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred)

A

思路:

贪心,每次要么选两个最大的,要么选三个,因为一个数(除了1)都可以拆成2和3相加,直到所有的数都相同就停止,这时就可以得到答案了;

 

C:

二分+bfs,二分答案,然后bfs找出距离小于等于当前要判断距离的点,把这些点标记后,再遍历按价格排好序的商店,从小到大选择价格低的,

根据最后的数目和价格判断当前这个距离行不行,这样就可以得到答案了;

 

G:

思路:

模拟,先判断是否可以放在要求的地方,不行的话就从前往后找能放的地方,这里可以把前面的区间[l,r]的右端点r+1当做当前区间的左端点,然后判断区间是否相交

注意区间包含的情况;

 

H:

思路:

暴力,对于要求选的那些项,首先长度要相同,然后判断每一位上的字符,如果都相同,那么就取这个字符,否则取问号,得到了需要的字符串后再跟其他的字符串匹配下,

如果不能喝其他字符串匹配,那么就是符合要求的,否则就不是;

 

I:

思路:

最小费用最大流,这样建图:源点s到[1,n]这些点的容量为1,费用为0,[1,n]这些点到两个点fg,fp,容量为1,费用分别为-a[i],-b[i];

然后fg和fh分别到汇点t容量分别为g,h,费用为0,然后跑费用流的模板,跑完后再判断哪些点在哪个集合里就好了;这题还可以用dp搞,也可以学习一波;

J:

思路:

dp,dp[i][j][k]表示前i个中选中了j个作为最后的那些瓶子,这j个瓶子的容积和为k的最少时间;

转移的时候就是对于瓶子x,如果选它作为最后的瓶子,那么j和k就要加了,否则最少时间就要更新了;

 

代码地址:

点我点我~~~

posted @ 2016-10-24 16:02  LittlePointer  阅读(479)  评论(0编辑  收藏  举报