hdu6879
题目
分8和3互质可以表示任意 大于 A*B-A-B(13)的数
构造
#include <bits/stdc++.h> using namespace std; typedef long long ll; void init() { } void solve() { int S; int r,c; cin>>S; if(S<=24) { r=S+1; c=1; cout<<r<<" "<<c<<endl; for(int i=1;i<=r;i++) { if(i%2==0) { cout<<"."<<endl; } else { cout<<"X"<<endl; } } } else { r=25; c=25; cout<<r<<" "<<c<<endl; int one=S/8; int two=(S%8)/3; int yv=(S%8)%3; one-=yv; two+=yv*3; for(int i=1;i<=24;i++) { for(int j=1;j<=25;j++) { if(i%2==1||j%2==1) cout<<"."; else if(one>0) { cout<<"X"; one--; } else cout<<"."; } cout<<endl; } for(int i=1;i<=25;i++) { if(two>0) { cout<<"X"; two--; } else cout<<"."; } cout<<endl; } } int main() { ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); int _=1; cin>>_; while(_--) { init(); solve(); } return 0; }
hdu6887
题目
#include <bits/stdc++.h> using namespace std; struct node { int res,index; operator < (const node &B)const{ if(res!=B.res) return res>B.res; else return index<B.index; } }; node no[105]; int main() { ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); int T; cin>>T; while(T--) { int n,m,k; cin>>n>>m>>k; for(int i=1;i<=n;i++) { cin>>no[i].res; no[i].index=i; } if(k==0) { for(int i=1;i<=n;i++) { cout<<i; if(i!=n) cout<<" "; } cout<<"n"; } else { sort(no+1,no+1+n); for(int i=1;i<=n;i++) { cout<<no[i].index; if(i!=n) cout<<" "; } cout<<"n"; } } return 0; }
hdu6880
题目
给你0 1 序列 0 表示 前一位比后一位小 1 表示前一位比后一位大
对于 1 0 来说
第一位的值 大于 第二位的值 则 2 1 (1在2右边) 他们的下标就表示他们的值 目前只有一种情况 第三位小于第二位 则 3 在2右边 两种情况 2 1 3 2 3 1
对于1 0 0 1 第四位大 2 1 3 4() 2 3 4 1 2 3 1 4 第五位 小
2 1 3 4(4) 2 3 4 1(3) 2 3 1 4(4) 和为11
明显的状态题 dp
dp[i][j] 表示 目前出现了i个数字 最后出现的数字在第 j位 排列的个数
后一位大 则为0
对于目前的dp[i][j]来说 dp[i+1][j+1—i+1] +=dp[i][j];
1
dp[i+1][1—j]+=dp[i][j];
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=5e3+5; const int mod=1e9+7; int dp[maxn]; int a[maxn]; int qian[maxn]; void init() { } void solve() { int n; cin>>n; for(int i=1;i<=n;i++) dp[i]=0,qian[i]=1; dp[1]=1; qian[0]=0; for(int i=1;i<n;i++) cin>>a[i]; for(int i=1;i<n;i++) { if(a[i]) { for(int j=1;j<=i;j++) { dp[j]=(qian[i]-qian[j-1]+mod)%mod; } } else { for(int j=1;j<=i+1;j++) { dp[j]=qian[j-1]; } } for(int j=1;j<=i+1;j++) { qian[j]=(qian[j-1]+dp[j])%mod; } } cout<<qian[n]<<endl; } int main() { ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); int _=1; cin>>_; while(_--) { init(); solve(); } return 0; }
c/c++开发分享2020hdu多校10地址:https://blog.csdn.net/qq_43364986/article/details/108782639
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/597459.html