偶是六元呐 level
获赞
0
粉丝
0
关注
0
看过 TA
2
安徽工业大学
2027
Java
IP属地:安徽
暂未填写个人简介
私信
关注
回溯 P1036 [NOIP 2002 普及组] 选数#include <bits/stdc++.h>using namespace std;int n,m,cnt;int a[21];void dfs(int w,int start,int sum){if (w == m){bool y=1;for(int i=2;i<=sqrt(sum);i++){if(sum%i==0){y=0;break;}}if(y) cnt++;return;}for(int i=start+1;i<n;i++){dfs(w+1,i,sum+a[i]);}}int main(){cin >> n >> m;for(int i=0;i<n;i++) cin>>a[i];dfs(0,-1,0);cout << cnt;return 0;}P1706 全排列问题#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<iomanip>#include <algorithm>#include<cmath>#include<vector>#include<set>using namespace std;int a[10];int main(){int n,i,j=1,k;cin>>n;for(i=1;i<=n;i++){a[i]=n-i+1;j*=i;}for(i=1;i<=j;i++){next_permutation(a+1,a+n+1);for(k=1;k<=n;k++)cout<<"    "<<a[k];cout<<endl;}return 0;}贪心算法:P1208 [USACO1.3] 混合牛奶 Mixing Milk#include <bits/stdc++.h>using namespace std;const int maxn=2000000+5;struct cow{int p,a;cow(int p=0,int a=0): p(p),a(a){}}milk[maxn];bool cmp(const cow &a,const cow &b){return a.p<b.p;}int main (){int n,m,dj;cin>>n>>m;for (int i=0;i<m;i++){cin>>milk[i].p>>milk[i].a;}sort(milk,milk+m,cmp);int tot=0,sum=0;for (int i=0;i<m;i++){if (tot+milk[i].a<=n) {tot+=milk[i].a;sum+=milk[i].p*milk[i].a;}else {sum+=(n-tot)*milk[i].p;break;}}cout<<sum;return 0;}P1650 田忌赛马#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int N=2001;int a[N],b[N],dp[N][N];bool Cmp(int x,int y) {return x>y;}int main(){int n,i,j; scanf("%d",&n);for (i=1;i<=n;++i) scanf("%d",&a[i]);for (i=1;i<=n;++i) scanf("%d",&b[i]);sort(a+1,a+n+1,Cmp),sort(b+1,b+n+1,Cmp);for (i=1;i<=n;++i)for (j=1;j<=n;++j)if (a[i]>b[j]) dp[i][j]=max(dp[i-1][j-1]+200,max(dp[i-1][j]-200,dp[i][j-1]-200));else if (a[i]==b[j]) dp[i][j]=max(dp[i-1][j-1],max(dp[i-1][j]-200,dp[i][j-1]-200));else dp[i][j]=max(dp[i-1][j]-200,dp[i][j-1]-200);printf("%d\n",dp[n][n]);return 0;}P1181 数列分段 Section I#include<iostream>#include<cstdio>using namespace std;int n,m,a[100002],ans;int main(){scanf("%d%d",&n,&m);ans=n+1;for(int i=1;i<=n;i++){scanf("%d",&a[i]);if(a[i]+a[i-1]<=m)a[i]+=a[i-1],ans--;}printf("%d\n",ans);return 0;}P1094 [NOIP 2007 普及组] 纪念品分组#include<bits/stdc++.h>using namespace std;int W,ans=0;int n,a[30001];int l,r,i;int main(){scanf("%d%d",&W,&n);for(i=1;i<=n;i++)scanf("%d",&a[i]);sort(a+1,a+n+1);l=1;  r=n;while(l<=r){if(a[l]+a[r]<=W)l++,r--,ans++;elser--,ans++;}printf("%d",ans);return 0;}P1090 [NOIP 2004 提高组] 合并果子#include <cstdio>#include <queue>using std :: priority_queue;using std :: greater;using std :: vector;int n, ans = 0;priority_queue < int, vector <int>, greater <int> > q;int main(){scanf("%d", &n);for(int i = 1; i <= n; ++i){int x; scanf("%d", &x);q.push(x);}while(q.size() > 1){int x = q.top(); q.pop();int y = q.top(); q.pop();ans += x + y;q.push(x + y);}printf("%d\n", ans);return 0;}
0 点赞 评论 收藏
分享
B2064 斐波那契数列#include<bits/stdc++.h>using namespace std;typedef long long ll;double a[1000];int main(){int n;cin>>n;a[0]=1.0;a[1]=1.0;for(int i=2;i<=50;i++)a[i]=a[i-1]+a[i-2];cout<<fixed<<setprecision(2)<<a[n-1];return 0;}P1024 [NOIP 2001 提高组] 一元三次方程求解#include <iostream>#include <math.h>#include <iomanip>using namespace std;int main(){double a,b,c,d;double as,bs,t,si;double x1,x2,x3;cin>>a>>b>>c>>d;as=b*b-3*a*c;bs=b*c-9*a*d;t=(2*as*b-3*a*bs)/(2*sqrt(as*as*as));si=acos(t);x1=(-b-2*sqrt(as)*cos(si/3))/(3*a);x2=(-b+sqrt(as)*(cos(si/3)+sqrt(3)*sin(si/3)))/(3*a);x3=(-b+sqrt(as)*(cos(si/3)-sqrt(3)*sin(si/3)))/(3*a);cout<<fixed<<setprecision(2)<<x1<<" ";cout<<fixed<<setprecision(2)<<x3<<" ";cout<<fixed<<setprecision(2)<<x2<<" ";return 0;}P2516 [HAOI2010] 最长公共子序列#include<bits/stdc++.h>#define RG register#define I inline#define R RG int#define G c=getchar()using namespace std;typedef long long LL;const int N=5009,YL=1e8;char x[N],y[N];int ff[N],gg[N],mff[N],mgg[N];int main(){scanf("%s%s",x+1,y+1);R n=strlen(x+1)-1,m=strlen(y+1)-1,i,j,*f=ff,*g=gg,*mf=mff,*mg=mgg;g[0]=1;for(j=0;j<=m;++j)f[j]=1;for(i=1;i<=n;++i,swap(f,g),swap(mf,mg)){memset(g +1,0,m<<2);memset(mg+1,0,m<<2);for(j=1;j<=m;++j){if(x[i]==y[j])mg[j]=mf[j-1]+1,g[j]=f[j-1];if(mf[j]>mg[j])mg[j]=mf[j],g[j]=f[j];else if(mf[j]==mg[j])(g[j]+=f[j])%=YL;if(mg[j-1]>mg[j])mg[j]=mg[j-1],g[j]=g[j-1];else if(mg[j-1]==mg[j])(g[j]+=g[j-1])%=YL;if(mf[j-1]==mg[j])(g[j]+=YL-f[j-1])%=YL;}}printf("%d\n%d\n",mf[m],f[m]);return 0;}P1880 [NOI1995] 石子合并#include<iostream>#include<cstdio>using namespace std;int a[2005],sum[2005];int fmi[2005][2005],fma[2005][2005],smi[2005][2005];int main(){int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);a[i+n]=a[i];sum[i]=sum[i-1]+a[i];smi[i][i]=i;}for(int i=1+n;i<=(n<<1);i++){sum[i]=sum[i-1]+a[i];smi[i][i]=i;}for(int i=(n<<1)-1;i;i--)for(int j=i+1;j<=(n<<1);j++){int jc=0,tmp=0x3f3f3f3f;fma[i][j]=max(fma[i][j-1],fma[i+1][j])+sum[j]-sum[i-1];for(int k=smi[i][j-1];k<=smi[i+1][j];k++){int tt=fmi[i][k]+fmi[k+1][j]+(sum[j]-sum[i-1]);if(tt<tmp){tmp=tt;jc=k;}}smi[i][j]=jc;fmi[i][j]=tmp;}int ama=0,ami=0x3f3f3f3f;for(int i=1;i<=n;i++){ama=max(ama,fma[i][i+n-1]);ami=min(ami,fmi[i][i+n-1]);}printf("%d\n%d",ami,ama);return 0;}B2034 计算 2 的幂#include <iostream>#include <cstdio>#include <cmath>#define AUTHOR "HEX9CF"using namespace std;int main(){unsigned int n;cin >> n;long p = pow(2, n);cout << p;return 0;}
0 点赞 评论 收藏
分享
P1049 [NOIP 2001 普及组] 装箱问题#include <bits/stdc++.h>#define V 20010#define maxn 35using namespace std;int n, m;int f[maxn][V], a[maxn];int main() {cin >> m >> n;for (int i = 1; i <= n; i++)cin >> a[i];for (int i = 1; i <= n; i++)f[i][0] = 0;for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++)if(j >= a[i]) f[i][j] = max(f[i - 1][j], f[i - 1][j - a[i]] + a[i]);else f[i][j] = f[i - 1][j];cout << m - f[n][m] << endl;return 0;}P1048 [NOIP 2005 普及组] 采药#include "stdio.h"#include "iostream"using namespace std;int w[105], val[105];int dp[1005];int main(){int t,m,res=-1;scanf("%d%d",&t,&m);for(int i=1;i<=m;i++){scanf("%d%d",&w[i],&val[i]);}for(int i=1;i<=m;i++){for(int j=t;j>=0;j--){if(j>=w[i]){dp[j]=max(dp[j-w[i]]+val[i], dp[j]);}}}printf("%d",dp[t]);return 0;}P1060 [NOIP 2006 普及组] 开心的金明#include<iostream>#include<algorithm>using namespace std;int w[30],v[30],f[50000];int n,m;int main(){cin>>m>>n;for(int i=1;i<=n;i++){cin>>v[i]>>w[i];w[i]*=v[i];}for(int i=1;i<=n;i++){for(int j=m;j>=v[i];j--){if(j>=v[i]){f[j]=max(f[j],f[j-v[i]]+w[i]);}}}cout<<f[m]<<endl;return 0;}P1063 [NOIP 2006 提高组] 能量项链         ##更改#include<bits/stdc++.h>using namespace std;int n,e[300],s[300][300],maxn=-1;int main(){cin>>n;for(int i=1;i<=n;i++){cin>>e[i];e[i+n]=e[i];}for(int i=2;i<2*n;i++){for(int j=i-1;i-j<n&&j>=1;j--){for(int k=j;k<i;k++)s[j][i]=max(s[j][i],s[j][k]+s[k+1][i]+e[j]*e[k+1]*e[i+1]);if(s[j][i]>maxn)maxn=s[j][i];}}cout<<maxn;return 0;}
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务