题意:

长度是n的线段上点的编号从1~n,每个点有一只蚂蚁蚂蚁的体重等于该点的编号,最初每只蚂蚁可以选择向右走或者向左走两只蚂蚁相遇时体重大的吃掉体重小的并且体重增加为两只的体重和,走到边界时掉头,问第k只蚂蚁活到最后的方案数。

Limits: • 1 ≤ T ≤ 100. • 1 ≤ K ≤ N. • 2 ≤ N ≤ 106 .

Sample Input

3

2 1

3 2

4 2

Sample Output

Case #1: 0

Case #2: 4

Case #3: 4

代码:

//k==1并且n!=1时答案是0。
//对于第k只蚂蚁如果他要活到最后他一定是开始向左走(最后一只除外),把左边的蚂蚁都吃掉然后掉头向右走,在第k只
//蚂蚁左边的蚂蚁中最右边的一只向左走的蚂蚁p一定是会吃掉它左边的所有蚂蚁然后再向右走因此(p+1~k-1)的蚂蚁都是
//向右走的并且他们被k吃掉后k的总重量要大于p的总重量。p+1~k方向固定,1~p各有两个方向可以选择。
//然后考虑k右边的蚂蚁,当吃掉第i只蚂蚁时的方案数可以由第i-1只得到,假设现在左边k已经吃完第lef只蚂蚁了,假
//设第i只蚂蚁向左走那么它被吃掉的方案数就是第i-1只被吃掉的方案数但是还要考虑当lef+1~i-1的蚂蚁都向右走并且
//他们加上i的体重大于k的体重了那么这种方案就不行,这种的方案共有f[lef](f[i]表示第i只蚂蚁向左走的方案数)种
//,要减去。假设第i只蚂蚁向右走那么它被吃掉的方案数还是第i-1只被吃掉的方案数(假设i是最后一只)。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
const ll MOD=1e9+;
const int MAXN=;
int t,k,n,fin[MAXN];
ll tp[MAXN],f[MAXN],ans;
int search(int x)
{
int l=,r=x,ss;
ll aa=1LL*x*(x+)/;
while(l<=r){
ll mid=(l+r)>>;
ll tmp1=mid*(mid+)/;
ll tmp2=aa-tmp1;
if(tmp2<=tmp1) { ss=mid;r=mid-; }
else l=mid+;
}
return ss;
}
void init()
{
tp[]=;
for(int i=;i<=MAXN-;i++) tp[i]=(tp[i-]*)%MOD;
fin[]=;
for(int i=;i<=MAXN-;i++) fin[i]=search(i);
}
int main()
{
init();
scanf("%d",&t);
for(int cas=;cas<=t;cas++){
scanf("%d%d",&n,&k);
if(k==&&n!=) ans=;
else{
f[k]=tp[fin[k]-];
ll tmp=f[k];
int lef=k;
for(int i=k+;i<=n;i++){
int j=fin[i];
while(lef<j){
tmp=((tmp-f[lef])%MOD+MOD)%MOD;
lef++;
}
f[i]=tmp;
tmp=(tmp*)%MOD;
}
ans=(f[n]*)%MOD;
}
printf("Case #%d: %lld\n",cas,ans);
}
return ;
}

UVALive 7505 Hungry Game of Ants (2015Ecfinal)的更多相关文章

  1. UVALive 7505 Hungry Game of Ants

    1. 笔记 比较容易的动态规划题.往左很好考虑,往右用dpi表示前i只都被k吃掉后,k继续往右仍然不死的情况数.状态转移方程为dp[I]=dp[I+1]+...+dp[j],分别对应第I+1位向左,. ...

  2. 2015 ACM/ICPC EC-Final

    A. Boxes and Balls 二分找到最大的不超过$n$的$\frac{x(x+1)}{2}$形式的数即可. #include <bits/stdc++.h> using name ...

  3. UVALive 4043 Ants

    KM   构图求最小权值匹配 保证最小的权值,所连的边一定是能够不相交的. Ants Time Limit: 3000MS   Memory Limit: Unknown   64bit IO For ...

  4. UVALive 4043 Ants 蚂蚁(二分图最佳完美匹配,KM算法)

    题意: 有n个蚂蚁n棵树,蚂蚁与树要配对,在配对成功的一对之间连一条线段,要求所有线段不能相交.按顺序输出蚂蚁所匹配的树. 思路: 这个题目真是技巧啊,不能用贪心来为每个蚂蚁选择最近的树,这样很可能是 ...

  5. UVALive 4043 Ants(二分图完美匹配)

    题意:每个蚁群有自己的食物源(苹果树),已知蚂蚁靠气味辨别行进方向,所以蚁群之间的行动轨迹不能重叠.现在给出坐标系中n个蚁群和n棵果树的坐标,两两配对,实现以上要求.输出的第 i 行表示第 i 个蚁群 ...

  6. UVaLive 4043 Ants (最佳完美匹配)

    题意:给定 n 个只蚂蚁和 n 棵树的坐标,问怎么匹配使得每个蚂蚁到树的连线不相交. 析:可以把蚂蚁和树分别看成是两类,那么就是一个完全匹配就好,但是要他们的连线不相交,那么就得考虑,最佳完美匹配是可 ...

  7. Uvalive 4043 Ants —— 二分图最大权匹配 KM算法

    题目链接:https://vjudge.net/problem/UVALive-4043 题意: 给出n个白点和n个黑点的坐标, 要求用n条不相交的线段把他们连接起来,其中每条线段恰好连接一个白点和黑 ...

  8. UVa 12709 && UVaLive 6650 Falling Ants (水题)

    题意:给定 n 个长方体的长,宽,高,让你求高最大的时候体积最大是多少. 析:排序,用高和体积排序就好. 代码如下: #pragma comment(linker, "/STACK:1024 ...

  9. 训练指南 UVALive - 4043(二分图匹配 + KM算法)

    layout: post title: 训练指南 UVALive - 4043(二分图匹配 + KM算法) author: "luowentaoaa" catalog: true ...

随机推荐

  1. bata5

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:恺琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  2. Codeforces Round #157 (Div. 1) B. Little Elephant and Elections 数位dp+搜索

    题目链接: http://codeforces.com/problemset/problem/258/B B. Little Elephant and Elections time limit per ...

  3. asp.net登录验证FormsAuthenticationTicket和FormsAuthentication类

    登录部分使用的类 FormsAuthentication   为 Web 应用程序管理 Forms 身份验证服务. 配置启用身份验证,WEB.config配置: <system.web> ...

  4. JTS

    在这个系列的 第 1 部分,我们讨论了事务并研究了它们的基本属性 ― 原子性(atomicity).一致性(consistency).孤立性(isolation)和持久性(durability).事务 ...

  5. 深入理解JAVA I/O系列三:字符流详解

    字符流为何存在 既然字节流提供了能够处理任何类型的输入/输出操作的功能,那为什么还要存在字符流呢?容我慢慢道来,字节流不能直接操作Unicode字符,因为一个字符有两个字节,字节流一次只能操作一个字节 ...

  6. pygame学习笔记(5)——精灵

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 据说在任天堂FC时代,精灵的作用相当巨大,可是那时候只知道怎么玩超级玛丽.魂斗罗,却对精灵一点也不知.pygame ...

  7. uva 11525(线段树)

    题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  8. SpringBoot(十一)_springboot热部署

    在开发中,后台修改了代码就要重新启动服务,很是费劲,现在我们可以让SpringBoot自动编译 热启动就需要用到我们在一开始引入的另外一个组件:devtools.它是 Spring Boot 提供的一 ...

  9. Code Blocks中配置OpenGL

    使用的文件:我的CSDN资源共享 将glut.h文件放到MinGw\include\GL目录下面 将glut32.dll文件放到C:\windows\system32目录下面(如果是64位操作系统的话 ...

  10. Hibernate Validation,Spring mvc 数据验证框架注解

    1.@NotNull:不能为 Null,但是可以为Empty:用在基本数据类型上. @NotNull(message="{state.notnull.valid}", groups ...