斐波那契数列<10^9的数很少很少...所以直接暴力枚举就行了... ------------------------------------------------------------- #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #define rep( i , n ) for( int i = 0 ; i < n ; ++i )…
先打能回血的,按消耗从小到大打: 然后按回血量降序打剩下的(把消耗和回血反着看就是上一种怪,打法一样): 中间体力小于0就输出无解 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N=100005; int n,t1,t2; long long z; struct qwe { int d,a,id; }a[N],b[N]; bool cmp1(c…
参考:http://www.cnblogs.com/clrs97/p/5125976.html 瞎搞约数失败...滚去搜索 dfs(x,y,z) 表示当前可选第x到第m个约数,还要选y个约数,已有z的乘积,搜的时候减掉大于n的情况 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N=2005; int n,k,tot,q[N],f[N][35];…