【Henu ACM Round#20 E】Star】的更多相关文章

[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 找规律. 1,13,37.... 6n(n-1) + 1 [代码] #include <bits/stdc++.h> #define ll long long using namespace std; ll n; int main(){ ios::sync_with_stdio(0),cin.tie(0); cin >>n; cout<<6*n*(n-1) + 1<<endl; return…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 所给的li,ri是左括号从左到右的顺序给的. (且注意长度是2*n 现在我们先把第一个左括号放在第1个位置. 然后考虑第二个位置. 如果这个位置能放右括号和第一个匹配(位置满足在1+l[i]..1+r[i]之间. 那么我们就在第二个位置放一个右括号就好了. (如果我们作死不放右括号的话,那就只能放左括号了->一定要放一个括号的 那么我们就只能先匹配这一个左括号了,而前一个左括号可能在第3个位置就不能匹配了. 这就会造成错解. 也…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 一开始所有的数字单独成一个集合. 然后用v[0]和v[1]记录集合的和为偶数和奇数的集合它们的根节点(并查集 然后先让v[0]的大小变成p //奇数+偶数是奇数 //奇数+奇数是偶数 //偶数+偶数是偶数 如果v[0].size < p 那么随便让两个和为奇数的集合,让他们合并在一起,加入到偶数集合中,那么v[0].size++,v[1].size-=2了 如果v[0].size > p 那么有两种方法  1.让两个偶数集合合…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 处理处所有的字符串可能的样子. 存在map里面就好. [代码] #include <bits/stdc++.h> using namespace std; const string S[8] = {"vaporeon", "Jolteon", "Flareon", "Espeon", "Umbreon", "Leafe…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 根据时间和原分数. 算出对应的分数就可以了. [代码] #include <bits/stdc++.h> using namespace std; int a,b,c,d; int main() { cin >> a >> b >> c >> d; int temp1 = max(a/10*3,a-a/250*c); int temp2 = max(b/10*3,b-b/250*…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 看看有没有(n-2)*180/n等于输入的a就好. [代码] #include <bits/stdc++.h> using namespace std; int main() { int T; cin >> T; while (T--){ int a; cin >> a; bool ok = false; //(n-2)*180/n for (int n = 3; ;n++){ int temp = (…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] a1+a2+...+ak<a2+a3+...ak+1 ->a1<ak+1 a2+a3+...+ak+1<a3+a4+...+ak+2 ->a2<ak+2 类似还可以推出 a3<ak+3 a4<ak+4 ... 则有 a1<ak+1<a2k+1<a3k+1... a2<ak+2<a2k+2<a3k+2... ... 也就是每隔k个要是递增的. 你的任务就是维…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 要求把连续的一段li..ri的边全都删掉. 然后求剩下的图的联通数 如果暴力的话 复杂度显然是O(k*m)级别的. 考虑我们把li..ri全都删掉. 接下来要做两件事. 第一是把1..li-1这些边连起来. 并查集1 然后是把ri+1..m这些边连起来. 并查集2 然后把并查集1和并查集2合并在一起求联通分量就好 两个并查集合在一起可以在线性复杂度内完成. 那么花费的时间就在1..li-1和ri+1,,m这两个并查集的获取上.…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把B提取出来就是一个等比数列了. 求和一下会发现是这种形式. \(B*\frac{(A^n-1)}{A-1}+A^n*x\) 则求一下乘法逆元 写个快速幂就好 A-1的逆元就是\((A-1)^{MOD-2}\) 要注意A=1的情况. 然后n最大可能为10^18 所以乘的时候要先对其取模 不然会乘爆 [代码] #include <bits/stdc++.h> #define LL long long using namespac…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 肯定是这样 先放k-1个,然后空1个,然后再放k-1个.然后再空1个.. 以此类推. 然后如果(n/k)*(k-1)+n%k>=m的话 那么答案显然就是m,因为不会出现乘2的情况. 否则. 那么只能让某些位置乘2了. 那么什么地方乘呢? 肯定是越前面越早乘越好. 那么temp=m-((n/k)*(k-1)+n%k)就是需要多乘2的次数. 从左往右放入那n/k个空位置中的前temp个就好 然后会发现前temp个连续的k块的递推式…