题解或许会迟到,但永远不会缺席(逃
还是感谢qs手下留情和mzjj给弱智一点面子,才让本蒟蒻拿到了键盘(
题目贴了网址也没意义,鶸校只让内网进(兰儿鶸校oj也见不得人
那么开始正题:
T1,T2:
ORZ直接略过吧.......
T3:
给了个公式,直接用double算会爆精度WA掉(据说记忆化搜索没事?)
然后可以直接把1-70的答案打印出来找规律,发现这TM不是斐波拉契数列吗...
所以直接整数递推之后再printf(".0000")就行了ORZ......
话说这公式就是斐波拉契数列的公式(当然本蒟蒻是不知道的啦)
T4:
c语言课才学了strcmp用法,也算是复习了一下吧(真TM好用,不然就得搞半天一点都不熟练的map了)
直接暴力枚举每个字符串跟字典里面的其中一个对的上不,对不上直接输出,对的上就输出翻译后的。
嵌套问题一开始写了个Floyd,不出所料的T了,略加思索就发现用一个fa数组就可以解决了,对于 i 的翻译结果为 j 的原单词的直接fa[ i ] = j,输出答案的时候直接while(fa[i])到顶就行了,还可以类似并查集思想压缩一下路径(不压缩也能A
T5
裸的线段树加了区间查询的时候允许修改左右最多2位....
标程并看不太懂ORZ,还是写自己的做法吧.....
如果每次查询都拆开成25次询问,时间复杂度为O(25*m*logn),铁定T,所以不能这样。
我们发现其实这25次里面中间的查询都重复了。
所以我们直接用线段树查[L+2 , R-2]这个区间(如果L+2 >= R-2答案肯定为零,不用查了)
记录其最大值M和次大值m,然后我们枚举区间向外延伸的25种情况,每种情况更新的M-m取最小值就是答案了。
时间复杂度为O(m*(logn+25)) ,还行。
T6:
本蒟蒻复习了半天普通dp结果考个状压(兰儿已经很裸了本鶸还是不会
最后45min双手离开键盘进入观海模式OMZ
状态和解法在代码里面都有:
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 using namespace std; 5 const int maxn=1005; 6 const int maxs=3005; 7 struct data 8 { 9 int h,s,a,b,t; 10 }w[15]; 11 int dp[maxn][maxs][15]; 12 int n,p; 13 int main() 14 { 15 16 scanf("%d%d",&p,&n); 17 18 for(int i=1;i<=n;i++) 19 { 20 scanf("%d%d%d%d%d",&w[i].h,&w[i].s,&w[i].t,&w[i].a,&w[i].b); 21 w[i].s=w[i].h-w[i].s; 22 w[i].t=w[i].s-w[i].t; 23 w[i].a=w[i].a+w[i].b; 24 } 25 26 //dp[i][S][j] 精力剩余i,唱歌情况为S,前一首是j的最大满意度 27 28 //边界:每首歌当第一首歌的情况,其他状态全部-inf 29 30 int ans=0,all=(1<<n+1)-1; 31 memset(dp,-100,sizeof(dp)); 32 33 for(int i=1;i<=n;i++) 34 for(int j=w[i].a;j<=p;j++) 35 { 36 dp[j][1<<i][i]=w[i].h; 37 ans=max(ans,w[i].h); 38 } 39 40 for(int i=1;i<=p;i++) 41 for(int S=0;S<=all;S++) 42 for(int j=1;j<=n;j++) if((1<<j)&S) 43 for(int k=1;k<=n;k++) if(i>=w[k].b&&(1<<k)&S) 44 { 45 46 //当前状态由两种方式转移而来:S中原来有k, S中原来没有k 47 48 if(j==k) dp[i][S][k]=max(dp[i][S][k],dp[i-w[k].b][S][j]+w[k].t); 49 else 50 dp[i][S][k]=max(dp[i][S][k],dp[i-w[k].b][S][j]+w[k].s); 51 52 if(i>=w[k].a) 53 dp[i][S][k]=max(dp[i][S][k],dp[i-w[k].a][S-(1<<k)][j]+w[k].h); 54 55 if(dp[i][S][k]>ans) 56 ans=dp[i][S][k]; 57 } 58 59 printf("%d",ans); 60 return 0; 61 }
还是太菜了,同志仍需努力啊ORZ.......
原文地址:https://www.cnblogs.com/staray/p/8179871.html