只写了A~D

A - Orac and Factors

题意:f(n)就是n的第二小因数,问执行k次 n=f(n)+n 后的结果。

题解:如果一直找第二小的因子的话,1e9肯定得t。看下边样例解释就会惊奇的发现,执行次数多了,n一定会变成2的倍数,然后就可以剪枝了。如果n不是2的倍数,那么就执行 n=f(n)+n,k-- 直到n是2的倍数(当然k得>0),最后再加上k*2。

 1 #include<bits/stdc++.h>
2 #define ll long long
3 using namespace std;
4
5 int main()
6 {
7 ios::sync_with_stdio(false);
8 cin.tie(0);
9 cout.tie(0);
10 int t;
11 cin>>t;
12 while(t--){
13 ll n,k;
14 cin>>n>>k;
15 while(k){
16 if(n%2==0) break;
17 for(ll i=2;i<=n;i++){
18 if(n%i==0){
19 n+=i;
20 break;
21 }
22 }
23 k--;
24 }
25 n=n+k*2;
26 cout<<n<<endl;
27 }
28 return 0;
29 }

B - Orac and Models

题意:让你找出一个序列使得他在原序列满足一下条件 i%j==0&&a[i]>a[j]; 问最长的序列长度

题解:找1~n每个数当因子时最长的符合条件的序列。

 1 #include<bits/stdc++.h>
2 #define ll long long
3 using namespace std;
4
5 ll a[100100];
6 ll dp[100100];
7
8 int main()
9 {
10 ios::sync_with_stdio(false);
11 cin.tie(0);
12 cout.tie(0);
13 ll t;
14 cin>>t;
15 while(t--){
16 ll n;
17 cin>>n;
18 for(ll i=1;i<=n;i++) cin>>a[i];
19 ll ans=0 ;
20 for (ll i=n;i>=1;i--){
21 dp[i]=1;
22 for (ll j=i;j<=n;j+=i){
23 if(a[j]>a[i])
24 dp[i]=max(dp[i],dp[j]+1);
25 }
26 ans = max(dp[i],ans);
27 }
28 cout<<ans<<endl;
29 }
30 return 0;
31 }

C - Orac and LCM

题意:求这个序列所有数两两之间的 lcm 的 gcd。

题解:和a1 lcm 后的所有数的 gcd 就是lcm(a1,gcd(a2,a3, ......)),a2就是lcm(a2,gcd(a3,a4, ......)).....,然后再把这些数就行gcd

证明结论:

gcd( lcm (a,b), lcm(a,c) )

= gcd( a*b/gcd(a,b), a*c/gcd(a,c) )

= a*gcd( b/gcd(a,b), c/gcd(a,c) );

lcm( a, gcd(b, c) )=a*gcd(b, c) / gcd(a,gcd(b, c));

最大公约数的百度百科的性质那一栏也能找到这个结论。

 1 #include<bits/stdc++.h>
2 #define ll long long
3 using namespace std;
4
5 ll a[100100];
6 ll p[200100];
7
8 int main()
9 {
10 ios::sync_with_stdio(false);
11 cin.tie(0);
12 cout.tie(0);
13 ll n;
14 cin>>n;
15 for(ll i=1;i<=n;i++) cin>>a[i];
16 ll ans;
17 p[n]=a[n];
18 for(ll i=n-1;i>0;i--){
19 p[i]=__gcd(p[i+1],a[i]);
20 }
21 ans=a[1]*p[2]/__gcd(a[1],p[2]);
22 for(ll i=2;i<=n;i++){
23 ans=__gcd(ans,p[i+1]*a[i]/__gcd(a[i],p[i+1]));
24 }
25 cout<<ans<<endl;
26 return 0;
27 }

D - Orac and Medians

题意:数组里一段数可以都变成他的中位数,问整个序列能不能变成k。

题解:

①判断一下序列里是否有k这个数,没有的话就直接输出no;

②如果整个序列 >=k 的个数比 <k 的个数多,就输出yes;

③判断一下序列里是否有一段长度>2的连续子序列使得 >=k 的个数比 <k 的个数多,有的话就输出yes,没有就输出no;(代码略丑)

 1 #include<bits/stdc++.h>
2 #define ll long long
3 using namespace std;
4
5 int a[100100];
6 int p[100100];
7
8 int main()
9 {
10 ios::sync_with_stdio(false);
11 cin.tie(0);
12 cout.tie(0);
13 int t;
14 cin>>t;
15 while(t--){
16 int n,k;
17 cin>>n>>k;
18 for(int i=1;i<=n;i++) cin>>a[i],p[i]=0;
19 int flag=0;
20 for(int i=1;i<=n;i++){
21 if(a[i]==k) flag=1;
22 if(a[i]>=k) p[i]=1;
23 else p[i]=-1;
24 }
25 if(!flag) {cout<<"no"<<endl;continue;}
26 flag=0;
27 for(int i=1;i<=n;i++){
28 p[i]+=p[i-1];
29 }
30 if(p[n]>0) flag=1;
31 int minn=p[0];
32 for(int i=2;i<=n;i++){
33 if(p[i]>minn){
34 flag=1;
35 break;
36 }
37 if(p[i-1]<minn){
38 minn=p[i-1];
39 }
40 }
41 if(!flag) {cout<<"no"<<endl;continue;}
42 cout<<"yes"<<endl;
43 }
44 return 0;
45 }

Codeforces Round #641 (Div. 2)的更多相关文章

  1. Codeforces Round #641 (Div. 2) D. Orac and Medians (贪心)

    题意:有一个长度为\(n\)的数组,问能否通过多次使某个区间的所有元素变成这个区间的中位数,来使整个数组变成题目所给定的\(k\). 题解:首先这个\(k\)一定要在数组中存在,然后我们对中位数进行考 ...

  2. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  3. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  4. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  5. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  6. Codeforces Round #279 (Div. 2) ABCDE

    Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems     # Name     A Team Olympiad standard input/outpu ...

  7. Codeforces Round #262 (Div. 2) 1003

    Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...

  8. Codeforces Round #262 (Div. 2) 1004

    Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...

  9. Codeforces Round #371 (Div. 1)

    A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...

随机推荐

  1. tomcat版本号修改已dwr配置错误安全漏洞整改

    1.tomcat版本信息泄露修改方法:tomcat6是在tomcat/lib 下使用jar xf catalina.jar 解压这个jar包会得到两个目录:META-INF和org其中org\apac ...

  2. vue 深度作用选择器

    使用 scoped 后,父组件的样式将不会渗透到子组件中 如果想在使用scoped,不污染全局的情况下,依然可以修改子组件样式,可以使用深度作用选择器 .tree{ width: 100%; floa ...

  3. LeetCode220 存在重复元素 III

    给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ. 示例 1: 输入: ...

  4. 音视频入门-20-BMP、PNG、JPG、GIF静态图生成GIF动态图

    * 音视频入门文章目录 * 静态图 -> 动态图 前面 [18-手动生成一张GIF图片] 和 [19-使用giflib处理GIF图片] 生成的 GIF 每一帧都是一个颜色,平时用到的 GIF 每 ...

  5. Windows同一软件不同窗口如何快速切换

    windows快速切换应用的快捷键是Alt + Tab 这个快捷键可以在多个应用之间快速切换,但是软件多开时,而此时我只想在同一软件内的多个窗口切换,一切换好多个窗口扑面而来,我还要去用找并用鼠标点击 ...

  6. 【RAC】运行root.sh的时候报错root.sh Oracle CRS stack is already configured and will be running under init(1M)

    环境:oracle10g 系统:CentOS6.4 开始的时候,在节点1上运行root.sh发现出现90s 的时候hang住了,结束掉,结局完事后,再次运行root.sh报错 WARNING: dir ...

  7. kubernets之控制器之间的协作以及网络

    一  创建一个deployment的时候整个kubernets集群的资源和事件的调用链 1.1  创建一个deployment的资源,在提交的时候,集群中的调度器,控制器以及node节点上kubele ...

  8. 记一道C语言编程题(C语言学习笔记)

    题目如下 解答如下 #include <stdio.h> #include<math.h> double Mysqrt(double n) { return sqrt(n); ...

  9. CMU数据库(15-445)Lab1-BufferPoolManager

    0. 关于环境搭建请看 https://www.cnblogs.com/JayL-zxl/p/14307260.html 1. Task1 LRU REPLACEMENT POLICY 0. 任务描述 ...

  10. nokogiri Fail install on Ruby 2.3 for Windows #1456 <From github>

    Q: gem install railson nokogiri install fail with error: 'nokogiri requires Ruby version < 2.3, & ...