Codeforces Round #641 (Div. 2)
只写了A~D
题意: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 }
题意:让你找出一个序列使得他在原序列满足一下条件 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 }
题意:求这个序列所有数两两之间的 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 }
题意:数组里一段数可以都变成他的中位数,问整个序列能不能变成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)的更多相关文章
- Codeforces Round #641 (Div. 2) D. Orac and Medians (贪心)
题意:有一个长度为\(n\)的数组,问能否通过多次使某个区间的所有元素变成这个区间的中位数,来使整个数组变成题目所给定的\(k\). 题解:首先这个\(k\)一定要在数组中存在,然后我们对中位数进行考 ...
- 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 ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
- 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 ...
- 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 ...
- Codeforces Round #371 (Div. 1)
A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...
随机推荐
- 【Web】实现动态文章列表
简单记录 -慕课网- 步骤二:动态文章列表效果 实现这个 一个网页中常见的文章列表效果. 怎么实现文章列表案例 分解一波,CSS来改变样式 标题标签 HTML的无序列表 去掉项目符号 符号所占空间 列 ...
- SAP 技术设置(technical setting)
在创建数据库表的时候,需要设置它的技术参数:这样才能使用. 在技术设置里,有个数据类(data class),如APPL0,等等. 有好多值可以供我们选择.这些值保存在表DDART中,表的描述:DD: ...
- python7、8章
目录 第七章 用户输入和while循环 7.1 函数input()的工作原理 7.1.1 编写清晰的程序 7.1.2 使用int()来获取数值输入 分析: 结果: 7.1.3 求模运算符 7.1.4 ...
- 干电池升压5V,功耗10uA
PW5100干电池升压5V芯片 输出电容: 所以为了减小输出的纹波,需要比较大的输出电容值.但是输出电容过大,就会使得系统的 反应时间过慢,成本也会增加.所以建议使用一个 22uF 的电容,或者两个 ...
- Ubuntu创建桌面图标
以火狐为例 创建"~/.local/share/applications/firefox_dev.desktop"文件, 文件内容为: [Desktop Entry] Name=F ...
- JavaScript中eval的替代方法
引自:https://www.cnblogs.com/lxg0/p/7805266.html 通常我们在使用ajax获取到后台返回的json数据时,需要使用 eval 这个方法将json字符串转换成对 ...
- uni-app开发经验分享二十一: 图片滑动解锁插件制作解析
在开发用户模块的时候,相信大家都碰到过一个功能,图片滑动解锁后发送验证码,这里分享我用uni-app制作的一个小控件 效果如下: 需要如下图片资源 template <template> ...
- 百度文库Word下载器
最近我妈的文库VIP用完了,但还有很多资源要下载,于是我便在网上找下载工具. 总算找到个完美的!(虽然没界面) 既然没界面,那就自己写一个呗! 原作者 该程序的下载和写入部分由地球守卫者制作 原文链接 ...
- 不错的网站压力测试工具webbench
webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.前期准备:yum install ...
- Mac 禁用动画
# opening and closing windows and popovers defaults write -g NSAutomaticWindowAnimationsEnabled -boo ...