CodeforcesGlobalRound24(11.28补题)-创新互联
Dashboard - Codeforces Global Round 24 - Codeforces
成都创新互联公司的客户来自各行各业,为了共同目标,我们在工作上密切配合,从创业型小企业到企事业单位,感谢他们对我们的要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。专业领域包括成都网站制作、成都做网站、电商网站开发、微信营销、系统平台开发。A. Doremy's Paint
题意:给定一个长度为n的序列,定义 c(l,r)为 l~r 之间不同的序列的个数,确定一组 l,r 使得
l-r-c(l,r) 的值大
思路:可以发现当多加一个数时并不会影响答案的大小(如l-- 或r++ ,l-r减小或增大的同时,c(l,r) 会同步 增大或减小),故让l,r之间的相同的数的个数尽可能的大即可,也就是输出1,n即可。
#include// #define int long long
#define PII pair#define ios ios::sync_with_wtdio(false);cin.tie(0);cin.tie(0)
using namespace std;
const int N=1e5+10;
int a[N];
int n;
void solve(){
cin >>n;
for(int i=0;i>a[i];
cout<< "1 n"<< endl;
}
int main(){
int t=1;
cin >>t;
while(t--){
solve();
}
return 0;
}
B. Doremy's Perfect Math Class
题意:给定一个大小为n的集合(不含有重复元素),我们可以选定集合中的两个元素做差,将差加入集合中,问集合中的数最多有多少个
思路:猜结论,如若一组数的gcd为1,那么max{1...n}中的任意一个数都可以构造出来,如({16,6},gcd=2,16-6=8,8-6=2,则可构造出{2,4,6,8,10,12,14,16})。一个集合能构造出的数就是集合内大的值除gcd,如(gcd为3 {3,6,.....,max})。
故结论为
#include// #define int long long
#define PII pair#define ios ios::sync_with_wtdio(false);cin.tie(0);cin.tie(0)
using namespace std;
const int N=1e5+10;
int a[N];
int n,m;
void solve(){
cin >>n;
int res=0;
int mx=0;
for(int i=0;i>a[i];
mx=max(mx,a[i]);
res=__gcd(res,a[i]);
}
cout<< mx/res<< endl;
}
int main(){
int t=1;
cin >>t;
while(t--){
solve();
}
return 0;
}
C. Doremy's City Construction
题意:给定n个带权点,在点中添加若干条无向边,使得途中不存在连续非下降的路径(即连续非下降的路径大于等于3不符合)
思路:将点的依据权排序之后,可以将点分为两个集合,小点集合和大点集合,集合中的每一个点都可以连接另一个集合中的所有点,故可以枚举两个集合的边界,取大值即可。
#include#define int long long
#define PII pair#define ios ios::sync_with_wtdio(false);cin.tie(0);cin.tie(0)
using namespace std;
const int N=2e5+10;
int a[N];
int n;
void solve(){
cin >>n;
mapmp;
for(int i=0;i>a[i];
mp[a[i]]++;
}
sort(a,a+n);
if(a[0]==a[n-1]){
cout<< n/2<< endl;
return ;
}
int ans=0,num=0;
for(int i=0;i>t;
while(t--){
solve();
}
return 0;
}
D:D. Doremy's Pegging Game(理解不了,贴个题解)
题意:存在 n 个点的钉子,绕成一个环。其中环内部有一个特殊的钉子,这个钉子比环上的钉子都要短。刚开始一个橡皮绳绕在环上,每次可以取走一个环上的钉子。钉子被取走后橡皮筋会收缩。一旦其中一个点被挂在了中间特殊的钉子上,游戏结束。求删除序列的方案数。
思路:
#include#define LL long long
using namespace std;
const int MX = 5000 + 233;
LL C[MX][MX] ,n ,p ,fac[MX];
void init(){
for(int i = 0 ; i< MX ; ++i) C[i][0] = 1;
for(int i = 1 ; i< MX ; ++i)
for(int j = 1 ; j< MX ; ++j)
C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]) % p;
fac[0] = fac[1] = 1 % p;
for(int i = 2 ; i< MX ; ++i) fac[i] = fac[i - 1] * i % p;
}
int main(){
cin >>n >>p;
init();
int t = n / 2;
LL Ans = 0;
for(int i = t ; i<= n - 1 ; ++i){
if((n & 1) && i == n - 1) break;
int upper = (i == n - 1) ? n - i - 1 : n - i - 2;
for(int j = 0 ; j<= upper ; ++j){
Ans = (Ans + n * (2 * t - i) * C[upper][j] % p * fac[j + i - 1]) % p;
}
}
cout<< Ans<< endl;
return 0;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前题目:CodeforcesGlobalRound24(11.28补题)-创新互联
文章网址:http://ybzwz.com/article/dpohes.html