C. Eugene and an array

题目大意就是说给你以1个数组,数组内连续的子序列的子序列中如果没有一个和为0则这就是好序列,求所有的好序列数量
解题思路:总的子串数量为(n + 1) n / 2*
我们就要求出和包含和为0子串的子串的数量
举个例子对于1 2 -2 1中间有一段前缀和和为0那么总的子串为2*2=4,是1 2 -2,2 -2,2 -2 1,1 2 -2 1

#include <iostream>
#include <cstdio>
#include <stack>
#include <vector>
#include <map>
#include <cstring>
#include <deque>
#include <cmath>
#include <iomanip>
#include <queue>
#include <algorithm>
#include <set>
#define mid ((l + r) >> 1)
#define Lson rt << 1, l , mid
#define Rson rt << 1|1, mid + 1, r
#define ms(a,al) memset(a,al,sizeof(a))
#define sfx(x) scanf("%lf",&x)
#define sfxy(x,y) scanf("%lf%lf",&x,&y)
#define sdx(x) scanf("%d",&x)
#define sdxy(x,y) scanf("%d%d",&x,&y)
#define pfx(x) printf("%.0f\n",x)
#define pfxy(x,y) printf("%.6f %.6f\n",x,y)
#define pdx(x) printf("%d\n",x)
#define pdxy(x,y) printf("%d %d\n",x,y)
#define _for(i,a,b) for( int i = (a); i < (b); ++i)
#define _rep(i,a,b) for( int i = (a); i <= (b); ++i)
#define for_(i,a,b) for( int i = (a); i >= (b); -- i)
#define rep_(i,a,b) for( int i = (a); i > (b); -- i)
#define IOS std::ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define INF 0x3f3f3f3f
#define hash Hash
#define next Next
#define f first
#define s second
using namespace std;
const int N = 2e5 + 10, eps = 1e-10;typedef long long ll;
typedef unsigned long long ULL;
int a[N], b[N];
int num[N], fnum[N];
map<ll, ll> MP;
int main()
{IOS;int n;cin >> n;MP[0] = 0;ll r = -1, cur = 0, ans = 0;for (int i = 1; i <= n; ++i) {ll x; cin >> x;cur += x;if (MP.count(cur)) r = max(r, MP[cur]);cout << MP[cur] << " = Mp[cur]" << endl;cout << cur << "= cur " << endl;cout << r + 1 << "= r + 1" << endl;ans += r + 1;MP[cur] = i;cout << ans << " = ans" << endl;}ans = (n + 1ll) * n / 2 - ans;cout << ans;return 0;
}

D. Challenges in school №41

有一个n个箭头箭头序列,只能是L(左箭头)或者R(右箭头),每次操作可以选一对相邻的相对的箭头变成相背的箭头。每秒操作至少1次,求能够恰好k秒把整个箭头序列变成没有任何相对的箭头。

那么最后的序列肯定是LLLL…LLRRR…R这样,那么可以暴力算出每一轮能移多少并且至少移几轮。因为n只有3000,最坏情况下o(n²),满足条件。

当出现RL的时候就把R的下标保存。当RLL的时候要移俩轮,所以每次有RL存在,i++

这里题目有说每一秒都要至少有一对人转动

那么假设算出x轮,一共需要移y次。那么存在有解的情况的一定是x <= k && k <= y的。然后去贪心分配轮的次数,实现具体看代码。

#include<bits/stdc++.h>
using namespace std;
vector<vector<int> >ans;
int a[3050];
char c;
int main(){int n,k,sum=0;cin>>n>>k;for(int i=1;i<=n;i++){cin>>c;a[i]=(c=='R');//转换为01串,左为0,右为1. }while(1){vector<int>now;for(int i=1;i<n;i++)if(a[i]&&!a[i+1]) now.push_back(i),swap(a[i],a[i+1]),i++;if(now.empty()) break;sum+=now.size();ans.push_back(now);}if(ans.size()>k||sum<k) puts("-1");else {int re=k-ans.size();//re(remain)需要填充的轮次 for(auto now:ans){while(now.size()>1&&re>0){printf("1 %d\n",now.back());now.pop_back();re--;}printf("%d ",now.size());for(auto i:now) printf("%d ",i);puts("");}}return 0;
} 

F. Kate and imperfection
题目大意:就是给你1到n个数选出2n个数,组成2n个大小为2~n的集合始得任意两个数的gcd的最大值最小
很明显我们先把所有的质数加入集合然后把2的倍数等等质数的倍数加入集合,单这个数加入的时候,这个数最大的因数就已经在集合里面,所以我们只要求出一个数最大的因数再排序即可

#include <iostream>
#include <cstdio>
#include <stack>
#include <vector>
#include <map>
#include <cstring>
#include <deque>
#include <cmath>
#include <iomanip>
#include <queue>
#include <algorithm>
#include <set>
#define mid ((l + r) >> 1)
#define Lson rt << 1, l , mid
#define Rson rt << 1|1, mid + 1, r
#define ms(a,al) memset(a,al,sizeof(a))
#define sfx(x) scanf("%lf",&x)
#define sfxy(x,y) scanf("%lf%lf",&x,&y)
#define sdx(x) scanf("%d",&x)
#define sdxy(x,y) scanf("%d%d",&x,&y)
#define pfx(x) printf("%.0f\n",x)
#define pfxy(x,y) printf("%.6f %.6f\n",x,y)
#define pdx(x) printf("%d\n",x)
#define pdxy(x,y) printf("%d %d\n",x,y)
#define _for(i,a,b) for( int i = (a); i < (b); ++i)
#define _rep(i,a,b) for( int i = (a); i <= (b); ++i)
#define for_(i,a,b) for( int i = (a); i >= (b); -- i)
#define rep_(i,a,b) for( int i = (a); i > (b); -- i)
#define IOS std::ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define INF 0x3f3f3f3f
#define hash Hash
#define next Next
#define f first
#define s second
using namespace std;
const int N = 3e3 + 10, eps = 1e-10;typedef long long ll;
typedef unsigned long long ULL;
int a[N], b[N];
char s[N];
int main()
{IOS;int n, m;cin >> n; vector<int> ans(n + 1, 1);for (int i = 2; i <= n; ++i) {for (int j = i + i; j <= n; j += i) {ans[j] = i;}}sort(ans.begin(), ans.end());for (int i = 2; i <= n; ++i) cout << ans[i] << ' ';return 0;
}

Codeforces Round #632 (Div. 2) C和D和F相关推荐

  1. Codeforces Round #632 (Div. 2) E. Road to 1600 构造好题

    传送门 文章目录 题意: 思路 题意: 直接白嫖 思路 首先不难发现,n≤2n\le2n≤2的时候是无解的. 现在我们来构造n=3n=3n=3的情况,通过打表可以发现如下矩阵是符合题目要求的: 179 ...

  2. Codeforces Round #632 (Div. 2) F. Kate and imperfection 数论 + 贪心

    传送门 文章目录 题意: 思路: 题意: n≤5e5n\le5e5n≤5e5 思路: 首先有个显然的结论:当往集合中加入一个数xxx的时候,如果存在d∣xd|xd∣x且ddd不在集合中,那么加入ddd ...

  3. Codeforces Round #632 (Div. 2) C. Eugene and an array 思维 + 前缀和

    传送门 文章目录 题意: 思路: 题意: 给定一个长度为nnn的序列aaa,定义一段区间为好区间是这段区间的所有连续子区间的和都不为000,求好区间的个数. 思路: 套路题,定义aia_iai​的前缀 ...

  4. Codeforces Round #632 (Div. 2)巧用小技巧

    Codeforces Round #632 (Div. 2)点这 Eugene likes working with arrays. And today he needs your help in s ...

  5. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  6. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  7. 构造 Codeforces Round #302 (Div. 2) B Sea and Islands

    题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...

  8. Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...

  9. Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...

最新文章

  1. jquery很好的学习网站
  2. python scrapy框架原理_Scrapy框架的工作原理是什么?
  3. 《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》——1.2 数字图像处理与机器视觉...
  4. XMLJavaXMLBeans结合应用的价值
  5. python判断操作系统类型
  6. C++输入、输出优化模板整理
  7. linux基础入门概念
  8. 9 计算机组成原理第五章 中央处理器 指令流水线
  9. 鸿蒙系统替代iOS,华为横空出世!鸿蒙系统,能否替代安卓IOS?
  10. 【文章】人的好运从哪里来?
  11. 解决打包AssetBundle时Shader(材质)丢失问题
  12. WinForm 使用 HttpUtility
  13. 网络安全学习--007--漏洞分析简介
  14. 备考通信复试过程中的一些知识点总结梳理——信息论基础知识
  15. ip-guard网页浏览放开微信二维码和QQ截图
  16. JDK6升级JDK8踩雷
  17. 遗传算法matlab工具箱及其应用
  18. canvas绘制动态图片
  19. Android蓝牙音乐(基于Android10)
  20. Java Grammar(二):运算符

热门文章

  1. 安装VMware-workstation-full-14.1.1-7528167 附带下载地址
  2. 爬虫-selenium初步学习与使用!
  3. JSP大作业数据库_本地MySQL【种种问题】
  4. 使用傅里叶变换进行图像边缘检测
  5. Classifying dynamic textures via spatiotemporal fractal analysis(许教授)
  6. klock 分布式锁重大更新
  7. 深入剖析Kubernetes k8s
  8. data-参数说明(模态弹出窗的使用)
  9. Android-SharedPreferences
  10. html+css3实现二级下拉菜单