2021.02.21cf补题
2024-08-27 22:49:28
B. National Project
题意:总长度为n的公路进行维修,天气是有规律性的,连续g天的好天气,连续b天的坏天气,必须在好天气进行维护,问至少维护n的一半,那么至少需要多少天
思路:必须是g的整数倍和b的整数倍构成的天数,通过相除,假设g+b是一组,最后尾巴那算作单算
想法:1)这个数必须是g的整数倍和b的整数倍构成的,或者是直接输出n,这个限制条件是题目中没有提到,但是你必须写的
代码:
1 #include<iostream>
2 #include<algorithm>
3 #include<cstdio>
4 #include<cmath>
5 #include<cstring>
6 using namespace std;
7 const int maxx=1e5+10;
8 int main(){
9 int t;
10 scanf("%d",&t);
11 while(t--){
12 long long int a,b,c;
13 long long int aa;
14 scanf("%lld %lld %lld",&a,&b,&c);
15
16 aa=a;
17 if(a%2==1){
18 a/=2;
19 a++;
20 }else{
21 a/=2;
22 }
23
24 if(a%b==0){
25 long long int sum=0;
26 sum=a/b*(b+c);
27 sum-=c;
28 printf("%lld\n",max(sum,aa));
29 }else{
30 long long int sum=0;
31 sum=a/b*(b+c);
32 sum+=a%b;
33 printf("%lld\n",max(sum,aa));
34 }
35 }
36
37 }
A. Common Subsequence(Codeforces Round #658 (Div. 2))
题目:题目很混乱,直接题目模糊样例入手调查猜想
思路:找两个数组中有没有共同元素,如果有直接输出1和这个元素值,如果没有就直接输出NO
代码:
1 #include<iostream>
2 #include<algorithm>
3 #include<cstdio>
4 #include<cmath>
5 #include<cstring>
6 using namespace std;
7 int main(){
8 int t;
9 scanf("%d",&t);
10 while(t--){
11 int n,m;
12 scanf("%d %d",&n,&m);
13 int a[1500],b[1500];
14 for(int i=0;i<n;i++){
15 scanf("%d",&a[i]);
16 }
17 for(int i=0;i<m;i++){
18 scanf("%d",&b[i]);
19 }
20 int flag=0;
21 int ii=0,jj=0;
22 for(int i=0;i<n;i++){
23 flag=0;
24 for(int j=0;j<m;j++){
25 if(a[i]==b[j]){
26 flag=1;
27 ii=i;
28 jj=j;
29 break;
30 }
31 }
32 if(flag==1){
33 break;
34 }
35 }
36 if(flag==0){
37 printf("NO\n");
38 }else{
39 printf("YES\n");
40 printf("1 %d\n",a[ii]);
41 }
42 }
43 }
B. Sequential Nim
题目:取牌,分为先手和后手,问谁先取完
思路:就是看谁先取到第一个非1的数,谁就赢了
代码:
1 #include<iostream>
2 #include<algorithm>
3 #include<cstdio>
4 #include<cmath>
5 #include<cstring>
6 using namespace std;
7 const int maxx=1e5+10;
8 int main(){
9 int t;
10 scanf("%d",&t);
11 while(t--){
12 int n;
13 scanf("%d",&n);
14 int a[maxx];
15 int flag=0;
16 int sum=0;
17 for(int i=0;i<n;i++){
18 scanf("%d",&a[i]);
19 }
20 if(n==1){
21 printf("First\n");
22 continue;
23 }
24 for(int i=0;i<n;i++){
25 if(a[i]==1){
26 sum+=1;
27 }
28 if(a[i]!=1){
29 sum++;
30 break;
31 }
32 }
33 if(sum%2==1){
34 printf("First\n");
35 }else{
36 printf("Second\n");
37 }
38
39 }
40 }
最新文章
- .NET Core 系列5 :使用 Nuget打包类库
- [每日Linux]Linux下xsell和xftp的使用
- 实验四 简单的PV操作
- Codeforces 498C Array and Operations(最大流)
- javascript 对象数组排序
- 执行config文件时,config.log中报错xcrun: error: active developer path (";/Applications/Xcode.app/Contents/Developer";) does not exist, use xcode-select to change
- 我学C的那些年[ch02]:宏,结构体,typedef
- C++ XML 解释库
- 生产环境搭建MySQL复制的教程(转)
- 查看mysql字符集及修改表结构
- [上海] 携程 门票事业部 招聘.NET 架构师 2 名 - V2EX
- C++基础学习笔记----第十四课(new和malloc的区别、单例模式等深入)
- Redis是新兴的通用存储系统-为何Redis要比Memcached好用
- Team Foundation Server 2015使用教程--默认团队checkin权限修改
- NYoj 素数环(深搜入门)
- Ubuntu 16.04 Django安装和配置
- css 小知识
- java线程condition
- UVa12325, Zombie&#39;s Treasure Chest
- Shell中$X的含义