T1.笨笨玩糖果(sugar)

有n颗糖,两个人轮流取质数颗糖,先取不了的(0或1)为输,求先手能否必胜,能,输出最少几步肯定能赢;不能,输出-1.

一开始天真的写了一个dp,f[i]表示i颗糖最少取几次能赢或输。然而这个是错的,从对手的角度来讲,他如果必败,一定会选择让对手尽量输的晚一些。否则的话3次以内游戏肯定结束了。

所以可以用dfs套着dp,不能赢的最多步数存为负,能赢最少步数存为正,然后对每个i进行dp,分别用两个变量来保存上述两个值,在判断是否能必胜。

T2.笨笨的宇宙蘑菇(mushroom)

有一个长为1的蘑菇,每过一天,一个长度L>1的蘑菇会分裂为L-1和L+1两个蘑菇。求过了n天有几个蘑菇。

找规律发现,在奇数天时,会*2,在偶数天i时,会变成2i/(i+1)个……(1的时候特殊)。

但是直接高精度不知为何爆了,于是采用质因数分解。首先对于第n天,共有n-1个2,然后对分母分子分别分解,直接高精度乘低精度就好了。

T3.笨笨的电路(circuit)

有n个第一部分点,m个第二部分点,t个第三部分点,前两个部分点中可以有w条带权边相连(保证第二部分点间不直连),给出第三部分点中每个点和二、三部分哪两个点相连。第三部分点为输出端,输出接入数据的异或值。第一部分点和第二部分点,不和1号点连通则输出0,否则输出1。先在要从w条边中选出最小的边权,满足n+m+t号点输出给定的0或1。

非常复杂的图论题,不过好在nm均<=100,最短路部分floyed即可(这道题中这是最高效的了吧)。然后考虑输出,如果一个点传出信号为1,那么这点对答案的贡献率就是它到终点的路径数。这样的话只需要算出第二部分每个点对答案的贡献率即可。

如果要求输出1,就在第二部分里找一个贡献为奇数的点,路径最短。如果要求输出0,就找一个贡献为偶数的非零点,或者(That’s the point):两个奇数点。因为到1的最短路可能重叠。所以枚举中间点找路即可。

二模12day2解题报告的更多相关文章

  1. 二模13day1解题报告

    二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...

  2. 二模14day1解题报告

    注:Index数☞由4,7组成的十进制数. T1.全排列(permutation) 求n个数的第k个排列中,有多少个Index位置上是Index数. 由于k的范围比较小,n的范围比较大(都是109), ...

  3. 二模01day1解题报告

    T1.音量调节(changingsounds) 有n个物品的背包(有点不一样,每个物品必须取),给出初始价值,物品价值可正可负(就是两种选择嘛),求可能的最大价值,不可能(<0或>maxs ...

  4. 二模15day1解题报告

    T1.合并序列(minval) 给出长为 n的AB两个序列求两两相加中最小的n个. 据说有证明(在蓝书上,优先队列部分)先把A[1~n]+b[1]入队,然后每取一个a[x]+b[y]就把a[x]+b[ ...

  5. 二模14day2解题报告

    T1.砍树(cuttree) 给出n棵树,要锯下m米木材,现在有一个高度h,h以上所有木头都砍下来,求满足m米的最小h 很简单的二分答案判断可行性. T2.快速求和(quicksum) 给出数字串s, ...

  6. 二模12day1解题报告

    T1.笨笨与电影票(ticket) 有n个1和m个0,求每个数前1的个数都大于等于0的个数的排列数. 非常坑的一道题,推导过程很烦.首先求出所有排列数是 C(n+m,m),然后算不合法的个数. 假设存 ...

  7. 二模02day1解题报告

    T1.淘汰赛制 比赛时的淘汰赛制,给出每两个球队比赛的胜率,求出最终胜率最高的队伍. 这题的概率真的很难算啊感觉...一开始打的代码打下来就是用f[i][j]表示i场比赛后第j人还在场的概率.不难看出 ...

  8. 二模07day1解题报告

    T1.种树(tree) 有n棵树,各有高度,要求每棵树的高度都小于它到其他树的距离(可能种一起).求砍掉的总高度是多少. Ok,那么可以想到,只要满足每棵树和最近的树满足条件就可以保证和其他树满足了. ...

  9. 二模07day2解题报告

    T1.采药(medic) 有n个草药,要在m的时间内获得最大价值. 乍一看像是01背包,然而数据只能过50分. 考虑数据范围,t<=10,w<=10,所以只有121种草药.考虑多重背包的二 ...

随机推荐

  1. 反射【类Class、成员变量Field、方法Method】

    Class<?> c = Class.forName("main.Main$MyClass"); //要包名+类名 Object obj = c.newInstance ...

  2. JS的字符串处理

    1.字符串包含判断 var a = "qwer"; var b = "q"; if (a.contains(b)) { alert("1") ...

  3. create dll project based on the existing project

    Today, I have to create a dll project(called my.sln), the dllmain.cpp/.h/ is already in another proj ...

  4. Linear Algebra lecture4 note

    Inverse of AB,A^(A的转置) Product of elimination matrices  A=LU (no row exchanges)   Inverse of AB,A^(A ...

  5. 移动端 touch 事件的originalEvent

    对于移动端的触摸事件,我们通过touchstart.touchmove.touchend实现,PC端一般使用mousedown.mousemove.mouseup实现. 我们获取事件坐标,原生js获取 ...

  6. Ext.Net 学习随笔 001 安装Ext.Net

    Ext.Net版本:4.1.0 Ext.Net官网:ext.net Ext.Net官方演示:mvc.ext.net Ext.Net MVC Example 下载:github.com/extnet/E ...

  7. mysql.my.cnf

    [client]port = 3306socket = /tmp/mysql.sock [mysqld]port = 3306socket = /tmp/mysql.sock basedir = /u ...

  8. linux for循环更改文件名字

    #!/bin/bash # for a in CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo Ce ...

  9. es6 代码片段理解

    代码片段理解: [INCREMENT]: (state, action) => { const { payload: { id } } = action //because payload co ...

  10. PChar,PAnsiChar,String,AnsiString,Char数组,AnsiChar数组转换

    PChar,PAnsiChar,String,AnsiString,Char数组,AnsiChar数组之间的转换关系见下图 通过转换链,可以实现任意两个类型之间的互转.如PChar转PAnsiChar ...