数据包:http://pan.baidu.com/s/1pJNSkL9

T1:

我们先直接用矩阵快速幂暴力

首先是0维,f1=1,f2=1

然后推出下一维的f1'和f2'

下一维的f1'和f2'其实就是f1+f2+f3+....+fn和f2+f3+f4+...+fn+1

所以f1'=sn,f2'=s(n+1)-f1

所以可以klogn求出答案

但是我们做了很多相同的事情,求sn和s(n+1)的时候求出来的矩阵是一样的

所以可以是logn+k的

但是既然是一样的其实f1,f2推到f1'和f2'是可以快速幂的

于是就变成了logn+logk的了

 const
         h=;
 type
         matrix=..,..]of int64;
 const
         d:matrix=((,,),(,,),(,,));
 var
         n,k:int64;
         t:longint;
         a,b,c:matrix;

 operator *(a,b:matrix)c:matrix;
 var
     i,j,k:longint;
 begin
     fillchar(c,sizeof(c),);
       do
         do
           do
           c[i,j]:=(c[i,j]+a[i,k]*b[k,j])mod h;
 end;

 procedure main;
 var
     i:longint;
 begin
         read(n,k);
         b:=d;
         fillchar(a,sizeof(a),);
           do
           a[i,i]:=;
          do
           begin
             = then a:=a*b;
             b:=b*b;
             n:=n>>;
           end;
         b:=a*d;
         fillchar(c,sizeof(c),);
         c[,]:=a[,];
         c[,]:=a[,];
         c[,]:=(b[,]-+h)mod h;
         c[,]:=b[,];
         fillchar(a,sizeof(a),);
           do
           a[i,i]:=;
          do
           begin
             = then a:=a*c;
             c:=c*c;
             k:=k>>;
           end;
         writeln((a[,]+a[,])mod h);
 end;

 begin
         read(t);
          do
           begin
             dec(t);
             main;
           end;
 end.

T2:

首先有一个结论,那个函数是递增的

然后我们可以证明这样一个结论

假设现在sg最大为k,那么现在最后k+1个sg组成的集合一定是0...k

若现在P[m]>=k+1,那么显然sg[m]=k+1

若现在P[m]=k,那么sg[m]=sg[m-k]

可以用数学归纳法证明

又因为maxsg<=10^5

于是就维护这个sg的序列

T3:

又是合并的思想

首先我们想一下什么情况父亲会和儿子合并(首先把不可能有收益的儿子删掉,且按最低血量限制排序)

若合并之后血量最低限制不变就一定要合并

若父亲现在没有收益就一定要合并

用可并堆或者启发式合并维护

大概就是这样,具体看solution

 const
     maxn=;
     inf=;
 type
     node=record
       size,lc,rc,pay,gain:longint;
     end;
 var
     first,next,last,d:..maxn*]of longint;
     f:..maxn]of node;
     n,t,time,tot:longint;

 procedure swap(var x,y:longint);
 var
     t:longint;
 begin
     t:=x;x:=y;y:=t;
 end;

 procedure insert(x,y:longint);
 begin
     inc(tot);
     last[tot]:=y;
     next[tot]:=first[x];
     first[x]:=tot;
 end;

 function max(x,y:longint):longint;
 begin
     if x>y then exit(x);
     exit(y);
 end;

 function merge(a,b:longint):longint;
 begin
     ) ) then exit(a+b);
     if f[b].pay<f[a].pay then swap(a,b);
     f[a].rc:=merge(f[a].rc,b);
     if f[f[a].rc].size>f[f[a].lc].size then swap(f[a].lc,f[a].rc);
     f[a].size:=f[f[a].lc].size+f[f[a].rc].size+;
     exit(a);
 end;

 procedure dfs(x,fa:longint);
 var
     i:longint;
 begin
     i:=first[x];
     d[x]:=;
      do
       begin
         if last[i]<>fa then
         begin
           dfs(last[i],x);
           d[x]:=merge(d[x],d[last[i]]);
         end;
         i:=next[i];
       end;
     ) )) do
       begin
         if f[x].gain>=f[d[x]].pay then inc(f[x].gain,f[d[x]].gain-f[d[x]].pay)
         else
           begin
             f[x].pay:=f[x].pay+f[d[x]].pay-f[x].gain;
             f[x].gain:=f[d[x]].gain;
           end;
         d[x]:=merge(f[d[x]].lc,f[d[x]].rc);
       end;

     else d[x]:=merge(d[x],x);
 end;

 procedure main;
 var
     i,x,y,hp:longint;
 begin
     fillchar(first,sizeof(first),);
     tot:=;
     read(n,t);
      to n do
       begin
         read(f[i].gain);

         else f[i].pay:=-f[i].gain;
          ;
         f[i].lc:=;
         f[i].rc:=;
         f[i].size:=;
       end;
       do
       begin
         read(x,y);
         insert(x,y);
         insert(y,x);
       end;
     inc(n);
     f[n].pay:=;
     f[n].gain:=inf;
     f[n].size:=;
     f[n].lc:=;
     f[n].rc:=;
     insert(t,n);
     insert(n,t);
     dfs(,);
     hp:=;
     ]<> do
       begin
         ]].pay then break;
         inc(hp,f[d[]].gain-f[d[]].pay);
         d[]:=merge(f[d[]].lc,f[d[]].rc);
       end;
     if hp>=inf then writeln('escaped')
     else writeln('trapped');
 end;

 begin
     read(time);
      do
       begin
         dec(time);
         main;
       end;
 end.

NOI2014 全国互测Round2的更多相关文章

  1. 【loj2461】【2018集训队互测Day 1】完美的队列

    #2461. 「2018 集训队互测 Day 1」完美的队列 传送门: https://loj.ac/problem/2461 题解: 直接做可能一次操作加入队列同时会弹出很多数字,无法维护:一个操作 ...

  2. 【2018集训队互测】【XSY3372】取石子

    题目来源:2018集训队互测 Round17 T2 题意: 题解: 显然我是不可能想出来的……但是觉得这题题解太神了就来搬(chao)一下……Orzpyz! 显然不会无解…… 为了方便计算石子个数,在 ...

  3. [bzoj3670][2014湖北省队互测week2]似乎在梦中见过的样子

    Description 已知一个字符串S,求它有多少个形如A+B+A的子串(len(A)>=k,len(B)>=1 ). Input 第一行一个字符串,第二行一个数 k. Output 仅 ...

  4. STOI补番队互测#2

    Round2轮到我出了>_<(目测总共10人参加 实际共七人) 具体情况: #1: KPM,360 #2:ccz181078,160 #3:child,150 可惜KPM没看到第一题样例里 ...

  5. LOJ3069. 「2019 集训队互测 Day 1」整点计数(min_25筛)

    题目链接 https://loj.ac/problem/3069 题解 复数真神奇. 一句话题意:令 \(f(x)\) 表示以原点 \((0, 0)\) 为圆心,半径为 \(x\) 的圆上的整点数量, ...

  6. Alpha2的项目互评互测

    目录 @(Alpha2项目测试) 这个作业属于哪个课程 课程链接 这个作业要求在哪里 作业要求的链接 团队名称 你的代码我的发 这个作业的目标 其他参考文献 软件测试用例 姓名 学号 团队名称 李涵 ...

  7. 【河北省队互测】 gcd BZOJ 2818

    Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的 数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 Sa ...

  8. 弱省互测#2 t3

    题意 给出\(n\)个01字节和\(m\)个01字节,要求用后者去匹配前者,两个串能匹配当且仅当除了每个字节末位不同,其他位都要相同.问匹配后者至少有多少个末位不同.(\(1 \le m \le n ...

  9. 弱省互测#2 t2

    题意 给两个树,大小分别为n和m,现在两棵树各选一些点(包括1),使得这棵树以1号点为根同构(同构就是每个点的孩子数目相同),求最大的同构树.(n, m<=500) 分析 我们从两棵树中各取出一 ...

随机推荐

  1. win7 :安装SQL2005

     转载:http://www.cnblogs.com/icewee/articles/2019783.html 操作系统:Microsoft Windows 7 旗舰版(64位) 数据库版本:SQL ...

  2. jenkins maven svn 部署web项目到本地Tomcat

    查了N多网页,折腾了几个小时,终于部署成功,部署的过程比较坎坷,遇到各种问题,记录一下,不管大家是否会遇到的同样的问题,希望有所帮助: 常规操作: 1.下载jenkins,必须要做的一步,http:/ ...

  3. 通过SQL Server Profiler来监视分析死锁

    在两个或多个SQL Server进程中,每一个进程锁定了其他进程试图锁定的资源,就会出现死锁,例如,进程process1对table1持有1个排它锁(X),同时process1对table2请求1个排 ...

  4. POJ1046Color Me Less

    http://poj.org/problem?id=1046 据说这个题是个水题,但我还是WA了好几次,最后才改对了 #include<cstdio> #include<cstrin ...

  5. flex渐变色制作圆角橙色按钮

    <?xml version="1.0" encoding="utf-8"?> <s:SparkButtonSkin xmlns:fx=&quo ...

  6. 【Spring MVC系列】--(4)返回JSON

    [Spring MVC系列]--(4)返回JSON 摘要:本文主要介绍如何在控制器中将数据生成JSON格式并返回 1.导入包 (1)spring mvc 3.0不需要任何其他配置,添加一个jackso ...

  7. android SDK和ADT的更新

    ADT版本较低时,造成xml布局文件无法预览,更新时发现google被墙,找网上的招数暂且解决了问题. 1. SDK的更新: 将https://修改为http:// 修改方法是:在Android SD ...

  8. SSM框架理解(转)

    SSM框架理解 最近两星期一直在学JavaEE的MVC框架,因为之前学校开的JavaEE课程就一直学的吊儿郎当的,所以现在真正需要掌握就非常手忙脚乱,在此记录下这段时间学习的感悟,如有错误,希望大牛毫 ...

  9. Command &quot;python setup.py egg_info&quot; failed with error code 1 in C:\Users\w5659\AppData\Local\Temp\pip-install-t7uomu4r\xa dmin\

    Error msg: C:\Users\w5659>pip install xadmin Collecting xadmin Using cached https://files.pythonh ...

  10. UiAutomator2.0 - 与AccessibilityService的关联

    目录 一.Android中的 Accessibility 二.UiAutomator2.0 与 AccessibilityService 三.验证与 AccessibilityService的关联 A ...