一:
背包问题复习:
//01背包:
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+6;
int v[N],w[N],dp[N];
const int inf=0x3f3f3f3f;
void solve()
{int n,V;cin>>n>>V;for(int i=1;i<=n;i++){cin>>v[i]>>w[i];}for(int i=1;i<=n;i++){for(int j=V;j>=v[i];j--){dp[j]=max(dp[j],dp[j-v[i]]+w[i]);}}cout<<dp[V];
}
signed main()
{ios_base::sync_with_stdio(false);//cin.tie(nullptr),cout.tie(nullptr);int t=1;//cin>>t;while(t--){solve();}return 0;
}//完全背包问题:01背包for循环从v[i]到V//多重背包问题:
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+6;
const int inf=0x3f3f3f3f;
int v[N],w[N],dp[N];
void solve()
{int n,V,cn=0;cin>>n>>V;for(int i=1;i<=n;i++){int p,q,s;cin>>p>>q>>s;int k=1;while(k<=s){cn++;v[cn]=p*k;w[cn]=q*k;s-=k;k*=2;}if(s>0){cn++;v[cn]=p*s;w[cn]=q*s;}}for(int i=1;i<=cn;i++){for(int j=V;j>=v[i];j--){dp[j]=max(dp[j],dp[j-v[i]]+w[i]);}}cout<<dp[V];
}
signed main()
{ios_base::sync_with_stdio(false);//cin.tie(nullptr),cout.tie(nullptr);int t=1;//cin>>t;while(t--){solve();}return 0;
}
//混合背包:
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+6;
const int inf=0x3f3f3f3f;
int v[N],w[N],dp[N];
void solve()
{int n,V,ans=0;cin>>n>>V;int p,q,s,r;for(int i=1;i<=n;i++){cin>>p>>q>>s;int k=1;if(s==-1)r=1;else if(s==0)r=V/p;else r=s;while(k<=r){ans++;v[ans]=p*k;w[ans]=q*k;r-=k;k*=2;}if(r>0){ans++;v[ans]=p*r;w[ans]=q*r;}}for(int i=1;i<=ans;i++){for(int j=V;j>=v[i];j--){dp[j]=max(dp[j],dp[j-v[i]]+w[i]);}}cout<<dp[V];
}
signed main()
{ios_base::sync_with_stdio(false);//cin.tie(nullptr),cout.tie(nullptr);int t=1;//cin>>t;while(t--){solve();}return 0;
}//二维费用的背包问题:
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e4+6;
const int inf=0x3f3f3f3f;
int v[N],w[N],m[N],dp[N][N];
void solve()
{int n,V,M;cin>>n>>V>>M;for(int i=1;i<=n;i++){cin>>v[i]>>m[i]>>w[i];}for(int i=1;i<=n;i++){for(int j=V;j>=v[i];j--){for(int k=M;k>=m[i];k--){dp[j][k]=max(dp[j][k],dp[j-v[i]][k-m[i]]+w[i]);}}}cout<<dp[V][M];
}
signed main()
{ios_base::sync_with_stdio(false);//cin.tie(nullptr),cout.tie(nullptr);int t=1;//cin>>t;while(t--){solve();}return 0;
}//分组背包问题:
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e4+6;
const int inf=0x3f3f3f3f;
int v[N][N],w[N][N],s[N],dp[N];
void solve()
{int n,V;cin>>n>>V;for(int i=1;i<=n;i++){cin>>s[i];for(int j=1;j<=s[i];j++){cin>>v[i][j]>>w[i][j];}}for(int i=1;i<=n;i++){for(int j=V;j>=0;j--){for(int k=1;k<=s[i];k++){if(j>=v[i][k])dp[j]=max(dp[j-v[i][k]]+w[i][k],dp[j]);}}}cout<<dp[V];
}
signed main()
{ios_base::sync_with_stdio(false);//cin.tie(nullptr),cout.tie(nullptr);int t=1;//cin>>t;while(t--){solve();}return 0;
}
//有依赖的背包问题://背包问题求方案数://背包问题求具体方案://待续!
二:
1.I-字串比较_第十一届"图灵杯"NEUQ-ACM程序设计竞赛 (nowcoder.com)
/*
//超时...
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+6;
const int inf=0x3f3f3f3f;
void solve()
{int n,m,q;cin>>n>>m>>q;string s1,s2,s3,s4;cin>>s1;cin>>s2;while(q--){int l1,r1,l2,r2;cin>>l1>>r1>>l2>>r2;s3=s1.substr(l1-1,r1);s4=s2.substr(l2-1,r2);//cout<<s1<<endl<<s2<<endl;if(s3==s4)cout<<'='<<endl;else if(s3>s4)cout<<">"<<endl;else cout<<'<'<<endl;}
}
signed main()
{ios_base::sync_with_stdio(false);//cin.tie(nullptr),cout.tie(nullptr);int t=1;//cin>>t;while(t--){solve(); } return 0;
}
*/
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+6;
const int inf=0x3f3f3f3f;
char s1[N],s2[N];
void solve()
{int n,m,q;cin>>n>>m>>q;for(int i=0;i<n;i++)cin>>s1[i];for(int i=0;i<m;i++)cin>>s2[i];int l1,r1,l2,r2;while(q--){cin>>l1>>r1>>l2>>r2;int flag=strncmp(s1+l1-1,s2+l2-1,r1-l1+1);if(flag==0)cout<<'='<<endl;else if(flag<0)cout<<'<'<<endl;else cout<<'>'<<endl;}
}
signed main()
{ios_base::sync_with_stdio(false);//cin.tie(nullptr),cout.tie(nullptr);int t=1;//cin>>t;while(t--){solve();}return 0;
}
2.H-卷王_第十一届"图灵杯"NEUQ-ACM程序设计竞赛 (nowcoder.com)
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+6;
const int inf=0x3f3f3f3f;
int a[N],b[N];
void solve()
{int n,d;cin>>n>>d;for(int i=0;i<n;i++)cin>>a[i];for(int i=0;i<n;i++)cin>>b[i];int cn=a[d-1]+b[0];for(int i=0;i<n;i++){if(cn>=a[i]+b[n-1]){cout<<i+1;return ;}}
}
signed main()
{ios_base::sync_with_stdio(false);//cin.tie(nullptr),cout.tie(nullptr);int t=1;//cin>>t;while(t--){solve();}return 0;
}
3.G-旗鼓相当的对手_第十一届"图灵杯"NEUQ-ACM程序设计竞赛 (nowcoder.com)
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+6;
const int inf=0x3f3f3f3f;
int a[N],dp[N];
void solve()
{int n,cn=0;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];cn+=a[i];}int ans=cn/2;for(int i=1;i<=n;i++){for(int j=ans;j>=a[i];j--){dp[j]=max(dp[j],dp[j-a[i]]+a[i]);}}cout<<cn-dp[ans]*2;
}
signed main()
{ios_base::sync_with_stdio(false);//cin.tie(nullptr),cout.tie(nullptr);int t=1;//cin>>t;while(t--){solve();}return 0;
}