UESTC Summer Training #10 Division I

比赛地址:http://acm.hust.edu.cn:8080/judge/contest/contest/view.action?cid=9590#overview

今天二逼了。。C题没拍出来。。浪费了很久的时间,队友10+分钟就搞定了。影响了推进的速度;

今天过了9题。。总体来说,这些题难度不是很高。。队伍今天在k卡得有些久。。感觉大家那段时间效率太低了。也没有很好的读其他的题目的意思。。最终发现没过D很水。。

还好。。。队伍有起色了。。希望成长更快些吧。


Problem AUVA 11888

Abnormal 89's

Problem BUVA 11889Benefit
Problem CUVA 11890Calculus Simplified
Problem DUVA 11891Deep in Jungles
Problem EUVA 11892ENimEN
Problem FUVA 11893Fabulous DAGy
Problem GUVA 11894Genius MJ
Problem HUVA 11895Honorary Tickets
Problem IUVA 11896Inglorious Gangs
Problem JUVA 11897Jingling Dominoes
Problem KUVA 11898Killer Problem 

A :  一个字符串,判断是否能够由两个回文串构成或者一个回文串。。

这题比较裸。。。O(n)的求每个位置的回文串。。

算法详细见http://acm.uestc.edu.cn/bbs/read.php?tid=3258



B:已经Lcm(A,B)=C,告诉你A,C,求最小的B

设 D=C/A。 答案最好的情况就是D。现在分析D不行的情况。。。如果D与A有最大公约数不为1,那么Lcm(D,A)一定就小于C。。。比如 D=2^k1,A=2^k2....要消除A对D的影响。。。那么必须去2^(k1+k2),这样去掉与A相同的部分还剩下D。。。因此结论:对D=p1^k1 * p2^k2……  ; B=p1^K1 * p2^K2  (其中Ki为C中对应的指数)


C:一个表达式,只含“+”,“-”,未知数用‘x’表示。。。给出每个未知数的值,安排一种分配。使得表达式计算的结果最大

分别统计符号位为‘+’,‘-’的未知数有多少个。。然后用从大到小先用‘+’,再用‘-’


D:n个点,给出位置以及该点的货物重量,安排集中点,每个集中点所含的货物数量为K(K<=100),求出在集中点数目最小的情况下,代价是最小是多少(代价为货物重量*到集中点的距离)

这题因为K很小。。所有可以进行dp

dp[i] = min(dp[k-1] +[ k, i ]  )  关键是求[k,i]的代价。。

假设 [ k, i ]的最优集中点在 t,那么 [k-1, i]的最优集中点在 t'<=t(这里满足单调性)..因此可以递推搞定。。

sum[i]:前i个货物的重量总和

s记录[k,i]合并代价, t记录集中点设置的位置

[i , i]  初始 s=0,t=i;

对于[ k,i ]  :   

集中点在t的代价:    s=s+(p[k].pos-p[k].pos)*p[k].w;

集中点在t-1的代价:s'=s+ ( (sum[i]-sum[t-1]) -(sum[t-1]-sum[k-1])  )  *(p[t].pos-p[t-1].pos);

如果 s'<=s ,  则t--,s=s'

           

E: 貌似很水。。队友搞的。


F:一个有向无环图加上一条边之后。问你是否存在一个环经过所有的点。

分析可得: 满足条件的无环图一定能够形成一条链,通过其拓扑序是否唯一,可以判断是否为链。

现在就是枚举一个点,作为链的起始点,然后找到一条包含所有点的链。并且最后一个点与起始点有边。

优化:找一个入度为1的点,作为起始点,经过一次拓扑序判断即可。(原因分析下就明白了)


G:两个矩形上有点,判断通过旋转和平移能够使矩形上的点重合。

只有四种旋转。。果断暴力一发就行


H:N个包里面分别有ni个信封,其中mi个信封中有邮票。 每个从一个包里打开一个信封,如果信封中有邮票,则取走邮票,最后把信封放回包里。每个人采取最优策略,问第K个人,拿到邮票的概率,答案以分数形式输出

每个包取到邮票的概率:mi/ni

第一个人必然是从概率最大的包里去信封。(n,m)

这去完后,信封数还是为n,期望还有邮票的信封数将放生改变:

m'=(m/n)*(m-1)+(n-m)/n * m=(n-1)/n *m

那下次从该包拿到含有邮票的信封的概率为:m'/n=(n-1)/n *( m/n );

因此取第k次拿到含有邮票的信封的概率为: p(k)= ((n-1)/n )^(k-1) *(m/n)

这题的思路就明显了。。用优先队列就行。



I:暂时还没想出来


K:一个序列,查询区间内,两个数差的绝对值最小是多少(数值的范围:1-10000)

大水题呀,,果断被坑了。。。

因为1-10000.。。故查询区间如果大于10000,答案必为零。其它范围的时候,,果断暴力一发就行

















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值