#include<bits/stdc++.h> #define maxn 20005 #define ll long long #define put() putchar('\n') usingnamespace std; inlinevoidread(int &x){ int f=1;x=0;char c=getchar(); while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();} while (c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();} x*=f; } int a[maxn],n; inlinevoidREAD(void){ char ch=getchar(); while (ch<'0'||ch>'9') ch=getchar(); while (ch>='0'&&ch<='9') a[++n]=ch-'0',ch=getchar(); } int ans[maxn]; signedmain(void){ // freopen("1.in","r",stdin); READ(); int i,j,tot=0; for (i=1;i<=n;i++) tot+=a[i]; if (n==1&&a[1]==0) returnputs("0 0 0"),0; if (tot%3) returnputs("-1"),0; for (i=1;i<=n;i++) { ans[i]+=a[i]/3; a[i+1]+=a[i]%3*10; } tot=1; if (ans[1]==0) tot=2; for (j=1;j<=3;j++,putchar(' ')) for (i=tot;i<=n;i++) printf("%d",ans[i]); return0; }
#include<bits/stdc++.h> #define maxn #define ll long long #define put() putchar('\n') using namespace std; inline void read(int &x){ int f=1;x=0;char c=getchar(); while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();} while (c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();} x*=f; } int f[105][105][5]; int a[105],n,k; signed main(void){ freopen("1.in","r",stdin); int i,j,l,c; memset(f,0x3f,sizeof(f)); read(n);read(k); for (i=1;i<=n;i++) { read(a[i]); f[i][i][k-1]=0; for (j=k-2;j>=0;j--) f[i][i][j]=f[i][i][j+1]+1; } for (i=n;i>=1;i--) for (j=i;j<=n;j++) { f[i][j][k-1]=min(f[i][j][k-1],f[i+1][j][0]); for (c=k-2;c>=0;c--) { f[i][j][c]=min(f[i][j][c],f[i][j][c+1]+1); for (l=i+1;l<=j;l++) if (a[l]==a[i]) { if (l==i+1) f[i][j][c]=min(f[i][j][c],f[l][j][c+1]); else f[i][j][c]=min(f[i][j][c],f[i+1][l-1][0]+f[l][j][c+1]); } } for (c=1;c<k;c++) f[i][j][c]=min(f[i][j][c],f[i][j][c-1]); } /* for (i=1;i<=n;i++) for (j=i;j<=n;j++){ printf("[ %d , %d ] : ",i,j); for (c=0;c<k;c++) printf("%d ",f[i][j][c]);put(); }*/ printf("%d\n",f[1][n][0]); return 0; }
#include<bits/stdc++.h> #define maxn 1000005 #define int long long #define put() putchar('\n') usingnamespace std; inlinevoidread(int &x){ int f=1;x=0;char c=getchar(); while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();} while (c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();} x*=f; } constint mod=998244353,p=29; inlineintpower(int x,int y){ int ans=1; while (y) { if (y&1) ans=ans*x%mod; x=x*x%mod;y>>=1; } return ans; } namespace BL{ string s; int has[maxn],isuf[maxn],suf[maxn],w[27]; inlineintHa(int l,int r){ return (has[r]-has[l-1]+mod)*isuf[l]%mod; } inlinevoidmain(void){ int i,j; cin>>s;int n=s.size();s='_'+s; suf[0]=isuf[0]=1;suf[1]=p;isuf[1]=power(p,mod-2); for (i=1;i<=26;i++) w[i]=i; random_shuffle(w+1,w+1+26);//防hack for (i=2;i<=n;i++) suf[i]=suf[i-1]*p%mod,isuf[i]=isuf[i-1]*isuf[1]%mod; for (i=1;i<=n;i++) has[i]=(has[i-1]+(w[s[i]-'a'+1])*suf[i])%mod; int m=n/2; int las=1,tot=0; for (i=1;i<=m;i++) if (Ha(las,i)==Ha(n-i+1,n-las+1)) tot+=2,las=i+1; if (las!=(n+1)/2+1) tot++; printf("%lld\n",tot); } } signedmain(void){ freopen("1.in","r",stdin); int T,n; srand(time(0)); read(T); while (T--) BL::main(); return0; }