CCPC2019 Harbin 2019-11-01 算法竞赛 暂无评论 55 次阅读 ## E ```javascript #include #include #include using namespace std; typedef long long ll; const int N = 1e6+10; int v[N]; int chos[N][3]; ll len[N]; vector a[N]; int t,n; void solve1() { for(int i=1; i<=n; i++) { v[i]=0; } v[n]=1; for(int i=n; i>0; i--) { if(chos[i][1]!=0) { v[chos[i][1]]+=v[i]; v[chos[i][2]]+=v[i]; } } } void solve2() { ll cnt=0; int res; for(int i=1; i<=n; i++) { if(v[i]&&!chos[i][1]) for(int j=0; jlen[n]) printf("%lld\n",2*(len[n]-sum)); else printf("%lld\n",len[n]); } int main() { scanf("%d",&t); while(t--) { scanf("%d",&n); int k; for(int i=1; i<=n; i++) { len[i]=0; scanf("%d",&k); int lin,cur; if(k==1) { scanf("%d",&lin); len[i]=lin; a[i].clear(); for(int j=1; j<=lin; j++) { scanf("%d",&cur); a[i].push_back(cur); } chos[i][1]=0; } else { int l,r; scanf("%d%d",&l,&r); len[i]=len[l]+len[r]; chos[i][1]=l; chos[i][2]=r; } } solve1(); solve2(); } } ``` ## F ```javascript #include using namespace std; typedef long long ll; const int N = 2e5+10; int t; char s[N]; char s2[7]={' ','h','a','r','b','i','n'}; int a[7][7];//h a r b i n bool book[7]; bool flag; void dfs(int p) { if(p==7) { int flg=0; for(int i=1;i<=6;i++) { if(book[i]==0) flg=1; } if(flg==0) flag=1; return ; } for(int i=1;i<=6;i++) { if(!book[i]&&a[p][i]>0) { book[i]=1; dfs(p+1); book[i]=0; if(flag) return ; } } } int main() { scanf("%d",&t); while(t--) { memset(a,0,sizeof(a)); memset(book,0,sizeof(book)); for(int i=0;i<6;i++) { scanf("%s",s); int len=strlen(s); for(int j=0;j #include #include #include #include using namespace std; typedef long long ll; const int N = 1e5 + 10; const int mod = 1e9 + 7; int t, n, m; int main() { scanf("%d", &t); while (t--) { scanf("%d", &n); int k; ll ans = 1; int cnt = 0; int pre = 0; bool flag = 0; scanf("%d", &k); if (k != 0) flag = 1; for (int i = 2; i <= n; i++) { scanf("%d", &k); if (k < pre) flag = 1; if (i == n && k != n - 1) flag = 1; if (flag) continue; if (k > pre) { cnt += (k - pre - 1); (ans *= 2) %= mod; } else if (k == pre) { ans = ans * cnt % mod; cnt--; } pre = k; } if (flag) printf("0\n"); else printf("%lld\n", ans); } } ``` ## J ```javascript #include using namespace std; int t,n; int main() { scanf("%d",&t); while(t--) { scanf("%d",&n); if(n<=5) printf("-1\n"); else if(n%2==0) printf("2 %d\n",n-2); else printf("3 %d\n",n-3); } } ``` ## K ```javascript #include using namespace std; typedef long long ll; int t,n; double a[100010],k; int main() { scanf("%d",&t); while(t--) { scanf("%d%lf",&n,&k); double sum=0; for(int i=1;i<=n;i++) { scanf("%lf",&a[i]); sum+=a[i]; } for(int i=1;i<=n;i++) { printf("%f",(a[i]/sum)*(k+sum) ); if(i==n) printf("\n"); else printf(" "); } } } ``` 标签: 算法 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭