标签:const int res Contest1828 long 训练赛 2019 ll mod
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1006; const ll mod=1000000007; int T; int n,m; ll k; ll dp[1005][6],a[maxn]; ll gdp[1005][6]; //ll ans; char f[maxn]; int main() { //freopen("1.txt","r",stdin); scanf("%d", &T); while (T--) { scanf("%d%d%lld",&n,&m,&k); for(int i=1;i<=n;++i){ scanf("%lld",a+i); } scanf("%s",f+1); for(int i=0;i<=n;++i){ for(int j=0;j<=m;++j){ dp[i][j]=-1000000000000009; gdp[i][j]=1000000000000009; } } dp[0][0]=k; gdp[0][0]=k; for(int i=1;i<=n;++i){ for(int j=max(0,m-n+i);j<=min(i,m);++j){ dp[i][j]=dp[i-1][j]; gdp[i][j]=gdp[i-1][j]; if(j==0)continue; if(f[j]=='+'){ dp[i][j]=max(dp[i][j],max(dp[i-1][j-1]+a[i],gdp[i-1][j-1]+a[i])); gdp[i][j]=min(gdp[i][j],min(dp[i-1][j-1]+a[i],gdp[i-1][j-1]+a[i])); } else if(f[j]=='-'){ dp[i][j]=max(dp[i][j],max(dp[i-1][j-1]-a[i],gdp[i-1][j-1]-a[i])); gdp[i][j]=min(gdp[i][j],min(dp[i-1][j-1]-a[i],gdp[i-1][j-1]-a[i])); } else if(f[j]=='*'){ dp[i][j]=max(dp[i][j],max(dp[i-1][j-1]*a[i],gdp[i-1][j-1]*a[i])); gdp[i][j]=min(gdp[i][j],min(dp[i-1][j-1]*a[i],gdp[i-1][j-1]*a[i])); } else{ dp[i][j]=max(dp[i][j],max(dp[i-1][j-1]/a[i],gdp[i-1][j-1]/a[i])); gdp[i][j]=min(gdp[i][j],min(dp[i-1][j-1]/a[i],gdp[i-1][j-1]/a[i])); } //ans=max(ans,dp[i][j]); //cout<<i<<' '<<j<<"dpij"<<' '<<dp[i][j]<<endl; } } printf("%lld\n",dp[n][m]); } return 0; }
#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll mod=1000000007; ll n,m; struct node { ll a[9][9]; node() { memset(a,0,sizeof(a)); } node operator*(const node &b) const { node res; for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { res.a[i][j] = 0; for (int k = 0; k < 9; k++) { res.a[i][j] = (res.a[i][j] + a[i][k] * b.a[k][j]%mod) % mod; } } } return res; } }; node pow(node b,ll c) { node res; for (int i=0; i<9; i++) { res.a[i][i]=1; } while (c) { if (c & 1) { res = res * b; } c >>= 1; b = b * b; } return res; } int a[9][9]={ 0,1,1,0,0,0,0,0,0, 0,0,0,1,1,1,0,0,0, 0,0,0,0,0,0,1,0,1, 1,1,1,0,0,0,0,0,0, 0,0,0,1,0,1,0,0,0, 0,0,0,0,0,0,0,1,1, 1,1,0,0,0,0,0,0,0, 0,0,0,1,1,0,0,0,0, 0,0,0,0,0,0,1,1,0}; node f; int main() { for (int i=0; i<9; i++) { for (int j=0; j<9; j++) f.a[i][j]=a[i][j]; } int T; scanf("%d",&T); while (T--) { scanf("%lld",&n); if (n==1){ printf("3\n"); continue; } if (n==2){ printf("9\n"); continue; } node ans=pow(f,n-2); ll ans1=0; for (int i=0; i<9; i++) { for (int j=0; j<9; j++) { ans1=(ans1+ans.a[i][j])%mod; } } printf("%lld\n",ans1); } }
#include<bits/stdc++.h> using namespace std; #define rep(i,a,n) for(int i=a;i<n;i++) #define SZ(x) ((int)(x).size()) typedef vector<int> VI; typedef long long ll; const ll mod = 1e9+7; ll powmod(ll a,ll b) { ll ret = 1; a%=mod; while(b) { if(b&1) ret = ret*a%mod; a = a*a%mod; b>>=1; } return ret; } int _,n; namespace linear_seq { const int N = 10010; ll res[N],base[N],_c[N],_md[N]; vector<int> Md; void mul(ll *a,ll *b,int k) { for(int i=0; i<k+k; i++) _c[i] = 0; for(int i=0; i<k; ++i) if(a[i]) for(int j=0; j<k; j++) _c[i+j] = (_c[i+j]+a[i]*b[j])%mod; for(int i=k+k-1; i>=k; i--) if(_c[i]) for(int j=0; j<(int) Md.size(); j++) _c[i-k+Md[j]] = (_c[i-k+Md[j]]-_c[i]*_md[Md[j]])%mod; for(int i=0; i<k; i++) a[i] = _c[i]; } int solve(ll n,VI a,VI b) { ll ans = 0,pnt = 0; int k = SZ(a); for(int i=0; i<k; i++) _md[k-1-i] = -a[i]; _md[k] = 1; Md.clear(); for(int i=0; i<k; i++) if(_md[i]!=0) Md.push_back(i); for(int i=0; i<k; i++) res[i] = base[i] = 0; res[0] = 1; while((1ll<<pnt)<=n) pnt++; for(int p = pnt; p>=0; p--) { mul(res,res,k); if((n>>p)&1) { for(int i=k-1; i>=0; i--) res[i+1] = res[i]; res[0] = 0; for(int j=0; j<(int) Md.size(); ++j) res[Md[j]] = (res[Md[j]]-res[k]*_md[Md[j]])%mod; } } rep(i,0,k) ans = (ans+res[i]*b[i])%mod; if(ans<0) ans+=mod; return ans; } VI BM(VI s) { VI C(1,1),B(1,1); int L = 0,m = 1,b = 1; for(int n=0; n<(int)s.size(); ++n) { ll d = 0; for(int i=0; i<L+1; i++) d = (d+(ll)C[i]*s[n-i])%mod; if(d==0) ++m; else if(2*L<=n) { VI T=C; ll c = mod-d*powmod(b,mod-2)%mod; while(SZ(C)<SZ(B)+m) C.push_back(0); for(int i=0; i<(int) B.size(); i++) C[i+m] = (C[i+m]+c*B[i])%mod; L = n+1-L; B = T; b = d; m = 1; } else { ll c = mod-d*powmod(b,mod-2)%mod; while(SZ(C)<SZ(B)+m) C.push_back(0); for(int i=0; i<(int)B.size(); i++) C[i+m] = (C[i+m]+c*B[i])%mod; ++m; } } return C; } ll gao(VI a,ll n) { VI c = BM(a); c.erase(c.begin()); for(int i=0; i<(int) c.size(); i++) c[i] = (mod-c[i])%mod; return (ll) solve(n,c,VI(a.begin(),a.begin()+SZ(c))); } } int main() { ll t; ll nnn; VI a; a.push_back(3); a.push_back(9); a.push_back(20); a.push_back(46); a.push_back(106); a.push_back(244); a.push_back(560); a.push_back(1286); a.push_back(2956); a.push_back(6794); scanf("%lld",&t); while(t--) { scanf("%lld",&nnn); printf("%lld\n",linear_seq::gao(a,nnn-1)); } }
#include <bits/stdc++.h> using namespace std; int T; int n,q; int v,c; typedef long long ll; const ll mod=1e9+7; ll dp[10005]; int main() { scanf("%d",&T); while(T--) { memset(dp,0,sizeof dp); dp[0]=1; scanf("%d %d",&n,&q); for(int i=1;i<=n;++i) { scanf("%d %d",&v,&c); for(int j=0;j<c;++j) { int V=v<<j; for(int k=10000;k>=V;--k) { dp[k]+=dp[k-V]; dp[k]%=mod; } } } while(q--) { int x; scanf("%d",&x); printf("%lld\n",dp[x]); } } return 0; }
import java.util.Scanner; import java.math.BigInteger; public class Main { public static void main(String[] args){ Scanner cin=new Scanner(System.in); int T=cin.nextInt(); for(int i=1;i<=T;i+=1){ BigInteger S=cin.nextBigInteger(); BigInteger k1=BigInteger.valueOf(1); BigInteger k2=BigInteger.valueOf(2); BigInteger k3=S.subtract(k1); BigInteger X=S.multiply(k3).divide(k2); BigInteger l=k1; BigInteger r=S; int f1=0; for (;;){ BigInteger sum=l.add(r); BigInteger mid=sum.divide(k2); BigInteger k=mid.multiply(mid); int tmp=k.compareTo(S); if (tmp==0){ f1=1; break; } if (tmp>0){ r=mid.subtract(k1); } if (tmp<0){ l=mid.add(k1); } int tmp1=l.compareTo(r); if (tmp1>0){ break; } } int f2=0; l=k1; r=X; for (;;){ BigInteger sum=l.add(r); BigInteger mid=sum.divide(k2); BigInteger k=mid.multiply(mid); int tmp=k.compareTo(X); if (tmp==0){ f2=1; break; } if (tmp>0){ r=mid.subtract(k1); } if (tmp<0){ l=mid.add(k1); } int tmp1=l.compareTo(r); if (tmp1>0){ break; } } if(f1==1&&f2==1){ System.out.println("Arena of Valor"); } if(f1==1&&f2==0){ System.out.println("Hearth Stone"); } if(f1==0&&f2==1){ System.out.println("Clash Royale"); } if(f1==0&&f2==0) { System.out.println("League of Legends"); } } } }
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e5 + 10; string str; int a,b,c; int main() { //freopen("1.txt","r",stdin); while(scanf("%d%d%d",&a,&b,&c)!=EOF){ if(a%2==0||b%2==0||c%2==0){ puts("Yes"); } else puts("No"); } return 0; }
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e6 + 10; const ll mod=1000000007; int T; char str[maxn]; ll fast_pow(ll a,ll b) { ll ans = 1; while (b) { if (b & 1)ans = ans * a % mod; a = a * a % mod; b >>= 1; } return ans; } int main() { //freopen("1.txt","r",stdin); scanf("%d", &T); while (T--) { scanf("%s", str); int len = strlen(str); ll cur = 0; for (int i = 0; i <len; i++) { cur = (cur * 10 + str[i] - '0') % (mod - 1); } cur = (cur - 1 + mod - 1) % (mod - 1); cur = fast_pow(2, cur); printf("%lld\n", cur); } return 0; }
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e5 + 10; int T; string str; int main() { //freopen("1.txt","r",stdin); scanf("%d",&T); while(T--){ cin>>str; int len=str.length(); for (int i=0;i<len;i++){ if ('A'<=str[i]&&str[i]<='Z'){ str[i]+=32; } } if (str=="jessie"){ puts("Good guy!"); }else{ puts("Dare you say that again?"); } } return 0; }
标签:const,int,res,Contest1828,long,训练赛,2019,ll,mod 来源: https://www.cnblogs.com/Accpted/p/11290610.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。