2、总结:会做的太少,应变能力也不行,或者说猜题目的能力不行
02 水
1、题意:1~n,n个数,问至少取出多少个数使剩下的数不构成三角形。
2、总结:比赛的时候想不出,直接数,反正n<=20。。还是思维不灵活啊
3、思路:只要剩下的数都是fibnacci数列就可以。
#include<iostream> #include<cstring> #include<cmath> #include<queue> #include<algorithm> #include<cstdio> #define F(i,a,b) for (int i=a;i<b;i++) #define FF(i,a,b) for (int i=a;i<=b;i++) #define mes(a,b) memset(a,b,sizeof(a)) #define INF 0x3f3f3f3f #define LL long long using namespace std; const int N=10010,MAX=1000100; int main() { int T,n,a[25]; mes(a,0); a[1]=a[2]=a[3]=a[5]=a[8]=a[13]=a[21]=1; F(i,2,25)a[i]+=a[i-1]; cin>>T; FF(cas,1,T){ cin>>n; printf("Case #%d: %d ",cas,n-a[n]); } return 0; }
06 HDU 5916 Harmonic Value Description
1、题意:求一组序列所有排序的第k小值。即要有两个相邻的数gcd为k,其它相邻数gcd都为1。
2、总结:思维不够灵活,应该多猜
3、思路:(1)k,k+1互质。(2)2*k-1,2*k+1互质。所以这题可以先输出2*k,k,这两数gcd就是k。再把k+1~n输出,再输出1~k-1。
#include<iostream> #include<cstring> #include<cmath> #include<queue> #include<algorithm> #include<cstdio> #define F(i,a,b) for (int i=a;i<b;i++) #define FF(i,a,b) for (int i=a;i<=b;i++) #define mes(a,b) memset(a,b,sizeof(a)) #define INF 0x3f3f3f3f #define LL long long using namespace std; const int N=10010,MAX=1000100; int main() { int t,n,k; cin>>t; FF(cas,1,t){ cin>>n>>k; printf("Case #%d: %d %d",cas,k*2,k); FF(i,k+1,n){ if(i!=k*2)printf(" %d",i); } F(i,1,k)printf(" %d",i); puts(""); } return 0; }