A Appeal to the Audience 要想使得总和最大,就要使最大值被计算的次数最多.要想某个数被计算的多,就要使得它经过尽量多的节点.于是我们的目标就是找到 k 条从长到短的链,这些链互不重合,且一端是叶子节点.可以通过长链剖分来将这棵树分为 k 条互不相交的长链,然后按照长度分配元素(长度越大,分配给它的元素值越大). #include<bits/stdc++.h> using namespace std; const int N = 1e5+10; const int M =…
D. Wildest Dreams 这道题的意思是Ayna和Arup两人会同时在车上一段时间,在Ayna在的时候,必须单曲循环Ayna喜欢的歌,偶数段Ayna下车,若此时已经放了她喜欢的那首歌,就要将它放完,然后按照顺序播放其他的歌,输出一共播放了Ayna喜欢的歌多少分钟. 分情况考虑,加起来总和就是一共播放的时间. 做题思路: 一:奇数段的时间总和: 二:判断奇数段的时间Ayna喜欢的歌是否恰好播放完: (1)若恰好播放完,对其后的偶数段不做处理 (2)若否,判断偶数段时间是否大于此歌未播放部…
B Breaking Branches 题意:两个人比赛折枝,谁剩下最后1,无法折出整数即为输 思路:树枝长n,若是奇数,则Bob胜出,若是偶数,则Alice胜出,且需要输出1: 1 #include<stdio.h> 2 int main(){ 3 int n; 4 scanf("%d",&n); 5 if(n%2==0){ 6 printf("Alice\n"); 7 printf("1\n"); 8 }else{ 9 p…
A .Architecture 题意:其实就是想让你找到两行数的最大值,然后比较是否相同,如果相同输出'possible',不同则输出'impossible' 思路:直接遍历寻找最大值,然后比较即可 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cmath> 5 using namespace std; 6 int a[100],b[100]; 7 int m…
I题 求 a 数组平方的前缀和和求 a 数组后缀和,遍历一遍即可 AC代码 #include<iostream>#include<cmath>using namespace std;int a[1000005];long long l[1000005], r[1000005];int main(){ int i,n; cin>>n; long long int sum; for(i=0;i<n;i++){  cin>>a[i]; } l[0]=a[0]…
1.A题 题意:给定第一行的值表示m列的最大值,第m行的值表示n行的最大值,问是否会行列冲突 思路:挺简单的,不过我在一开始理解题意上用了些时间,按我的理解是输入两组数组,找出每组最大数,若相等则输出possible,否则输出impossible,代码很直接用的C语言 1 #include<stdio.h> 2 int main(){ 3 int r,c,i,j; 4 int s[110],b[110]; 5 while(scanf("%d %d",&r,&…
J. Jazz it Up!题目要求,n*m的因子中不能含有平方形式,且题目中已经说明n是一个无平方因子的数, 那么只要m是无平方因子的数,并且n和m没有共同的因子即可.要注意时间复杂度!代码:#include<iostream> #include<algorithm> #include<cmath> using namespace std; int main(){ int n,i,a,b; long long int m,p,j; cin>>n; for(…
A. Architecture 如果行最大值中的最大值和列最大值中的最大值不同的话,那么一定会产生矛盾,可以手模一个样例看看. 当满足行列最大值相同条件的时候,就可以判定了. 因为其余的地方一定可以构造出来符合条件的值,行列是很多的,填0就好了. #include<bits/stdc++.h> using namespace std; typedef long long ll; int main() { int n, m; cin >> n >> m; int t1,…
A. Majestic 10 题意:三个数均大于10则输出"triple-double",如果两个数大于10则输出"double-double",如果一个大于10则输出"double",如果没有数大于10则输出"zilch" #include<stdio.h> int main(){ int n,a,b,c; scanf("%d",&n); while(n--){ scanf("…
题目链接:https://vjudge.net/contest/187496#problem/E E Excellent Engineers You are working for an agency that selects the best software engineers from Belgium, the Netherlands and Luxembourg for employment at various international companies. Given the ve…