A. Generous Kefa time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output One day Kefa found n baloons. For convenience, we denote color of i-th baloon as si — lowercase letter of the Latin alphabe…
思路来自FXXL中的某个链接 /* CodeForces 840C - On the Bench [ DP ] | Codeforces Round #429 (Div. 1) 题意: 给出一个数组,问有多少种下标排列,使得任意两个相邻元素的乘积不是完全平方数 分析: 将数组分组,使得每组中的任意两个数之积为完全平方数 由唯一分解定理可知,每个质因子的幂次的奇偶性相同的两个数之积为完全平方数 即按每个质因子的幂次的奇偶性分组,故这样的分组唯一 然后问题归结于每组中的数不能相邻的排列有几种 设 d…
思路来自这里,重点大概是想到建树和无解情况,然后就变成树形DP了- - /* CodeForces 840B - Leha and another game about graph [ 增量构造,树上差分 ] | Codeforces Round #429(Div 1) 题意: 选择一个边集合,满足某些点度数的奇偶性 分析: 将d = 1的点连成一颗树,不在树上的点都不连边. 可以发现,当某个节点u的所有子节点si均可操控 (u, si) 来满足自身要求 即整棵树上至多只有1个点不满足自身要求,…
/* CodeForces 840A - Leha and Function [ 贪心 ] | Codeforces Round #429 (Div. 1) A越大,B越小,越好 */ #include <bits/stdc++.h> using namespace std; const int N = 2e5+5; int a[N], b[N], c[N], n; int aa[N], bb[N]; bool cmp1(int x, int y) { return a[x] > a[y…
PROBLEM A/_ - Generous Kefa 题 OvO http://codeforces.com/contest/841/problem/A cf 841a 解 只要不存在某个字母,它的个数大于k,即可 #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #include <cmath> using namespace std;…
A. Generous Kefa 题意:n个气球分给k个人,问每个人能否拿到的气球都不一样 解法:显然当某种气球的个数大于K的话,就GG了. #include <bits/stdc++.h> using namespace std; int cnt[110]; char s[110]; int main() { int n,k; scanf("%d%d",&n,&k); scanf("%s", s); int len = strlen(s…
A. Generous Kefa   One day Kefa found n baloons. For convenience, we denote color of i-th baloon as si — lowercase letter of the Latin alphabet. Also Kefa has k friends. Friend will be upset, If he get two baloons of the same color. Kefa want to give…
题目链接:https://codeforces.com/contest/1379/problem/A 题意 给出一个由 '?' 和小写字母组成的字符串,可以将 '?' 替换为小写字母,判断是否存在一种替换方案使得字符串只包含一个 'abacaba' 子串. 题解 首先计算原字符串中所求子串的个数: 如果个数多于一,则不存在满足要求的替换方案 如果个数等于一,将所有 '?' 替换为 'abc' 外的字母即可 如果个数少于一,判断是否有可以替换的子串,以及替换后是否只有一个子串,如 'abaca?a…
[Link]:http://codeforces.com/contest/841/problem/A [Description] [Solution] 模拟,贪心,每个朋友尽量地多给气球. [NumberOf WA] [Reviw] [Code] #include <bits/stdc++.h> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define LL long l…
[Link]:http://codeforces.com/contest/841/problem/C [Description] [Solution] 看到最大的和最小的对应,第二大的和第二小的对应. 贪心,排个序. [NumberOf WA] [Reviw] [Code] #include <bits/stdc++.h> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #de…
[Link]:http://codeforces.com/contest/841/problem/B [Description] 两个人轮流对一个数组玩游戏,第一个人可以把连续的一段为奇数的拿走,第二个可以拿走偶数的. 谁无法拿就输. 问谁能赢 [Solution] 如果和为奇数的话,则第一个人赢. 否则 如果n个数中没有奇数,则第二个人赢, 如果n个数中有一个奇数,那么第一个人取走它,剩下的数字还是奇数,这时候第二个人无论取还是不取,都只能减少偶数的和,剩下的肯定是奇数的和,那么第一个人就能一…
A:甚至连题面都不用仔细看,看一下样例就知道是要把大的和小的配对了. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #define ll long long #define N 200010 char getc(){char…
题意 一个长度为 \(n\) 的序列 \(A\) ,定义一个 \(1\) 到 \(n\) 的排列 \(p\) 是合法的,当且仅当 \(\forall i \in [1, n − 1], A_{p_i} × A_{p_i+1}\) 不是完全平方数. 求有多少合法的排列,对 \(10^9 + 7\) 取模. \(n \le 300, A_i \le 10^9\) 题解 对于每个元素去掉它的平方质因子,问题转化为有多少排列 \(p\) 满足 \(\forall i \in [1, n − 1], A_…
Leha and another game about graph 题目大意:给你一个图,每个节点都有一个v( -1 , 0 ,1)值,要求你选一些边,使v值为1 的点度数为奇数,v值为0的度数为偶数,v值为-1的节点没有限制.让你输出边的集合, 如果不存在这样的边集,输出-1. 写的时候没啥思路,dfs瞎搞了一下过不了. 思路:我们先考虑没有解的情况,如果v值为1的点为奇数个,且没有v为-1的点,则不存在 解,因为你添加一条边改变了两个v值非-1点的奇偶性,又有奇数个v值为1的点,不可能满足…
题目大意是给你n个数,求相邻两数相乘不是完全平方数的排列数. 一开始看到这题的时候,本人便想给相乘为完全平方数的数对建边,然后就写萎了... 后来通过集体智慧发现这个重要性质:对于自然数a,b,c,若a*b为完全平方数,且b*c为完全平方数,那么a*c就是完全平方数.(我居然没想到)因此就可以对这n个数进行分组,使得每一组中两个数两两相乘为完全平方数,不同组的数两两相乘不是完全平方数.假设分成tot组,第i组的数的个数为num[i].这也就等同于相同的数不能相邻的排列问题. 于是通过PY就得到了…
题意:给你一张图,给你每个点的权值,要么是-1,要么是1,要么是0.如果是-1就不用管,否则就要删除图中的某些边,使得该点的度数 mod 2等于该点的权值.让你输出一个留边的方案. 首先如果图内有-1,那么必有解.否则如果初始不合法的点数为偶数,那么必有解,否则无解.因为删一条边,要么使图中不合法的点数+2,要么不变,要么-2. 如果有解,构造图的任意一个生成树,如果有-1,就让-1为根,否则任意结点为根.然后从叶子向根定每个点的入度数,由于自底向上,一个结点的儿子边都被处理完后,只需要决定父边…
E. On the Bench time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output A year ago on the bench in public park Leha found an array of n numbers. Leha believes that permutation p is right if for al…
[题意]定义函数F(n,k)为1~n的集合中选择k个数字,其中最小数字的期望. 给定两个数字集A,B,A中任意数字>=B中任意数字,要求重组A使得对于i=1~n,sigma(F(Ai,Bi))最大. [算法]数学结论+数学期望+排序 [题解]很无奈,这题放在div2 C,难以推导的期望公式,广为人知的结论,容易观察样例得出的做法,都体现了这道题的不合理性. F(n,k)=(n+1)/(k+1) 公式推导可能触及我的知识盲区了QAQ 得到公式后,显然要求k尽可能小,n尽可能大,经验告诉我们随着两数…
[题意]给定n个点和m条无向边(有重边无自环),每个点有权值di=-1,0,1,要求仅保留一些边使得所有点i满足:di=-1或degree%2=di,输出任意方案. [算法]数学+搜索 [题解] 最关键的一步:★[%2转取反]. 首先考虑在树上做这样的问题,就显得十分朴素了.每当选择一条边,边的两端点权值就会取反,所以做一次DFS,对儿子权值(变化后)为1的点连边,自身取反,儿子都处理完毕后再把自身的新权值反馈上去.这样本质上等同于,所有点权为1的点都通过路径将取反信息传递到根,若最终根权为0则…
[链接]点击打开链接 [题意] 给出一个连通图,并给每个点赋一个d值0或1或-1,要求选出一个边的集合,使得所有的点i要么d[i] == -1,要么  dgree[i] % 2 == d[i],dgree[i]代表i结点的度数. [题解] 先统计出所有点所要求的度数的和cnt1.(不考虑-1); 这里的cnt1的奇偶性也就是最后的图的所有点的度数和的奇偶性. 显然只要是一张图,它的所有的度数的和就必须为偶数. 所以,如果cnt1是个奇数,且没有为-1的点,那么直接输出-1就好,无解. 如果有-1…
题目链接: http://codeforces.com/problemset/problem/155/E E. Double Profiles time limit per test 3 secondsmemory limit per test 256 megabytes 问题描述 You have been offered a job in a company developing a large social network. Your first task is connected wit…
https://codeforces.com/contest/1080/problem/E 题意 有一个n*m(<=250)的字符矩阵,对于每个子矩阵的每一行可以任意交换字符的顺序,使得每一行每一列都是一个回文串,问最多有多少个这样的子矩阵 思路 首先可以思考如何暴力,枚举四个边界(子矩阵),然后判定一下子矩阵的每一行每一列,这样的复杂度是nmnmn*m 很明显需要找一下规律来优化一下复杂度, 对于每一行来说,最多只能存在一种字母的数量是奇数,这样一定可以保证这一行是回文串 对于每一列来说,因为…
http://codeforces.com/contest/465/problem/D 给定8个点坐标,对于每个点来说,可以随意交换x,y,z坐标的数值.问说8个点是否可以组成立方体. 暴力枚举即可,注意检查立方体姿势不对会T 如果8个点形成一个立方体是这样的:找到所有点对之间的最小距离,应等于边的长度L.每个顶点应该正好有三个点距离它为L,而且构成的三个边应两两垂直.如果这些条件都满足在每一点上,那么一定只能是立方体.检查复杂度约O(8^2). #include <cstdio> #incl…
D. Sereja ans Anagrams time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Sereja has two sequences a and b and number p. Sequence a consists of n integers a1, a2, ..., an. Similarly, sequence …
A. Bus to Udayland time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output ZS the Coder and Chris the Baboon are travelling to Udayland! To get there, they have to get on the special IOI bus. The…
DZY has a hash table with p buckets, numbered from 0 to p - 1. He wants to insert n numbers, in the order they are given, into the hash table. For the i-th number xi, DZY will put it into the bucket numbered h(xi), where h(x) is the hash function. In…
A题 题意:给你 n 个数 , 你需要改变这些数使得这 n 个数的值相等 , 并且要求改变后所有数的和需大于等于原来的所有数字的和 , 然后输出满足题意且改变后最小的数值. AC代码: #include<bits/stdc++.h> using namespace std; #define int long long signed main(){ int _; cin>>_; while(_--){ int n; cin>>n; ]; ; ;i<=n;i++){…
#include <bits/stdc++.h> using namespace std; int main() { int n,k;cin>>n>>k; string s;cin>>s; int ans[26]={0}; for(int i=0;i<n;i++){ int len=1; while(len<k&&s[i+1]==s[i]) ++len,++i; if(len==k) ++ans[s[i]-'a']; } cout…
题意:有两个字符串\(S\)和\(T\),判断\(T\)是否能由\(S\)通过交换某位置的相邻字符得到,如果满足,输出交换次数及每次交换的位置,否则输出\(-1\). 题解:首先判断不满足的情况,只有当两个字符串中出现的字母次数不同时不满足条件,用桶判断一下即可.然后我们再来看有解的情况,我们对\(T\)的每个字符标上序号,如样例1中:\(abdfec\)对应\(123456\),则\(S\)中与之对应的是\(abcdef\)->\(126354\),所以要想让\(S\)变成\(T\),就要让其…
题意:给你某个字符串的\(n-1\)个前缀和\(n-1\)个后缀,保证每个所给的前缀后缀长度从\([1,n-1]\)都有,问你所给的子串是前缀还是后缀. 题解:这题最关键的是那两个长度为\(n-1\)的子串,我们只要判断哪个是前缀就行了,然后再遍历一遍所给的子串,用长度为\(n-1\)的前缀子串来判断是子串是前缀还是后缀. 代码: int n; string s[N]; bool vis[N]; int cnt; int main() { ios::sync_with_stdio(false);…