首页 > 其他分享 >Dashboard - Educational Codeforces Round 138 (Rated for Div. 2) - Codeforces

Dashboard - Educational Codeforces Round 138 (Rated for Div. 2) - Codeforces

时间:2022-10-21 23:46:48浏览次数:88  
标签:pr Educational Rated int Codeforces ++ ans mod

Dashboard - Educational Codeforces Round 138 (Rated for Div. 2) - Codeforces

这场比赛写的就很菜了。D题有点思路但是没想到是求是去求不满足条件的序列。

1.Problem - A - Codeforces

考虑如果所有行所有列都被占据的话就是无法移动了。

void slove(){
cin >> n >> q;
fel(i,1,n) visx[i] = visy[i] = 0;
fel(i,1,q)
{
int x, y;
cin >> x >> y;
visx[x] = 1;
visy[y] = 1;
}
int ans = 0;
for(int i = 1; i <= n; i++){
if(visx[i]) ans++;
if(visy[i]) ans++;
}
if(ans == 2*n){
cout << "NO" << endl;
}
else{
cout << "YES" << endl;
}
}

2.Problem - B - Codeforces

很明显每一个数都是会产生价值的除了最后一个被删除的。然后删除中间产生的价值肯定是更大的,所以考虑删除两边比较小的。双指针就好了。

void slove(){
cin >> n;
fel(i,1,n) cin>>a[i];
fel(i,1,n) cin>>b[i];
int l=1,r=n;
int ans=0;
while(l<r){
if(b[l]>b[r]){
ans+=a[r];
ans+=b[r];
r--;
}
else{
ans+=a[l];
ans+=b[l];
l++;
}
}
ans+=a[l];
cout << ans <<endl;
}

3.Problem - C - Codeforces

很明显你想赢更多的次数,alice最优的选择肯定是选择先删除大的,而bob肯定是想要取删除最小的。去模拟这一过程即可。

void prime(){
int cnt = 0;
for(int i = 2;i < N; i++){
if(!vis[i]){
pr[++cnt] = i;
}
for(int j = 1; pr[j] * i < N;j++){
vis[pr[j] * i] = 1;
if(i % pr[j] == 0) break;
}
}
}

 

4.Problem - D - Codeforces

这个找满足条件的条件明显是难于不满足条件的。全一操作序列是明显满足条件的。

考虑一个位置如何只能在1号位置上被删除那他必须是1 - i 的 lcm 所以只要是1-i 的质数积即可。然后是枚举长度1-n即。

void prime(){
int cnt = 0;
for(int i = 2;i < N; i++){
if(!vis[i]){
pr[++cnt] = i;
}
for(int j = 1; pr[j] * i < N;j++){
vis[pr[j] * i] = 1;
if(i % pr[j] == 0) break;
}
}
}
void slove(){
prime();
cin >> n >> m;
//想要减少取模是可以计算每一步唯一删除条件的方案数
a[1] = m % mod;
int lc = 1;
for(int i = 2; i <= n; i++)
{
if(!vis[i]) lc = i * lc / __gcd(i, lc);
int cnt = m / lc;
a[i] = a[i - 1] * (cnt % mod) % mod;//乘法和取模的优先级是相同的
}

b[1] = m % mod;
for(int i = 2; i <= n; i++)
{
b[i] = b[i - 1] * (m % mod) %mod;
}

int ans = 0;
for(int i = 1; i <= n; i++)
{
ans = (ans + b[i] - a[i]) % mod;
}
cout << ans << endl;
}
 

标签:pr,Educational,Rated,int,Codeforces,++,ans,mod
From: https://www.cnblogs.com/silky----player/p/16815095.html

相关文章

  • Codeforces Round #828 (Div. 3)
    CodeforcesRound#828(Div.3)1.Problem-D-Codeforces只要找有因子2的个数即可。只要因子个数是大于等于n的即可。voidslove(){cin>>n;fel(i,1,n)cin......
  • Codeforces Round #756 (Div. 3) E1
    E1.EscapeTheMaze(easyversion)我们显然遍历根节点到叶结点的同时维护最短距离然后在return的时候看该点距离是否大于最近的朋友的距离要是大于的话我们显然可以......
  • Heidi and Library (hard) | CodeForces 802C最大流最小费用
    神仙题,想了两节ds课没想出来,跑到奇怪的犄角旮旯去了还是没法搞一个满意的模型看了洛谷黑题啊..释然了思路和细节在代码//LUOGU_RID:90857083#include<bits/stdc++.h......
  • Codeforces Round #760 E
    E.Singers'Tour我们显然可以推式子b[i]=a[i]+2a[i+1]+3a[i+1]....b[i+1]=na[i]+a[i+1]+2a[i+2]....这样b[i+1]-b[i]=-n*a[i]+(a[i]+a[i+1]+....+a[n])我们显然......
  • Educational Codeforces Round 83 (Rated for Div. 2) C. Adding Powers(进制转换)
    https://codeforces.com/contest/1312/problem/C题目大意:给定一个长度为n的数组a,在给定一个底数k。一开始数组元素全部都是0,我们每一个时间i可以选择一个下标下的数字......
  • Educational Codeforces Round 138 (Rated for Div. 2) ABC(二分)
    只能说这场的出题人不适合我食用,ABC都读了假题,离谱啊~A.CowardlyRooks题目大意:给定一个棋盘n*n的大小,左下角的顶点在(1,1);给定了棋盘格上的m个棋子坐标。这m个棋子......
  • 「题解」Codeforces 1730F Almost Sorted
    给定一个长度为\(n\)的置换\(p\),以及一个正整数\(k\).对于一个置换\(q\),要求对于所有满足\(1\leqi<j\leqn\)的\(i,j\),有以下不等式成立:\[p_{q_i}\leqp_{q_j}+......
  • Codeforces Round #762 (Div. 3) E
    E.MEXandIncrements我们一看数据n个数还要计算n+1一个mex显然不能暴力我们考虑后面的i可以由前面的贪心的做一次操作转移过来所以我们记录一个a数组放着多出来的......
  • Codeforces1695 D1.+D2 Tree Queries
    题意给一个n个点的无向图,其中有一个隐藏点X,可以进行一组询问S来确定S是n个节点中的哪个点。S包括k个询问节点。询问返回的值也为k个值,每个值为X点到每个询问节点的最短路......
  • Educational Codeforces Round 138 (Rated for Div. 2)
    比赛链接EducationalCodeforcesRound138(RatedforDiv.2)D.CountingArrays解题思路容斥原理显然\([1,1,\dots,1]\)是一组方案,直接求不好求解,考虑反面,对于......