Educational Codeforces Round 11、A B题

A. Co-prime Array

题意:给你一个数列,要求构造两两相邻之间的数互质的数列,可以插入的数的小于10的9次方

思路:其实可以选择靠近10的9次方的最大的三个素数、然后按我下面的方法做就可以了,我这里选的三个素数不是最大的,数据有点水,就水过了

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cmath>
 4 const int qq=1005;
 5 int num[qq];
 6 int ar[qq<<1];
 7 int gcd(int x,int y)
 8 {
 9     return y==0?x:gcd(y,x%y);
10 }
11 int main()
12 {
13     int n;scanf("%d",&n);
14     for(int i=0;i<n;++i)
15         scanf("%d",&num[i]);
16     int c[3]={9997747,9996739,9999749};
17     ar[0]=num[0];
18     int k=1;
19     for(int i=1;i<n;++i){
20         int ans;
21         int x=num[i];
22         int y=ar[k-1];
23         if(x>y)    ans=gcd(x,y);
24         else    ans=gcd(y,x);
25         if(ans==1)    ar[k++]=x;
26         else{
27             for(int j=0;j<3;++j){
28                 if(c[j]%x!=0&&c[j]%y!=0){
29                     ar[k++]=c[j];
30                     break;
31                 }
32             }
33             ar[k++]=x;
34         }
35     }
36     printf("%d\n",k-n);
37     for(int i=0;i<k;++i)
38         printf("%d ",ar[i]);
39         printf("\n");
40 }

B. Seating On Bus

题意:这题就纯粹考英语了,读懂了就so easy,大概是说人去做公交车会先选择靠窗的位置坐下,靠窗的坐完了然后才会做靠近走廊的位置,途中也给出了座位标号的顺序,但是这里要求输出的顺序就不一样了, 要求比如一行的编号是 1 19 20 2 如果都有人的话输出的循序就是 19 1 20 2、

思路:先标记能坐多少人,然后按给定的输出顺序判断这地方有没有坐人就ok了

 1 #include<iostream>
 2 #include<cstdio>
 3 const int qq=1005;
 4 int num[qq]={0};
 5 int main()
 6 {
 7     int n,m;
 8     scanf("%d%d",&n,&m);
 9     for(int i=1;i<=m;++i)
10         num[i]=1;
11     int fir=n*2+1,sec=n*2+2;
12     for(int i=1;i<=(n<<2);++i){
13         if(i%4==1){
14             if(num[fir])    printf("%d ",fir);
15         }
16         else if(i%4==2)    {
17             if(num[fir-2*n])    printf("%d ",fir-2*n);
18         }
19         else if(i%4==3){
20             if(num[sec])    printf("%d ",sec);
21         }
22         else if(i%4==0){
23             if(num[sec-2*n])    printf("%d ",sec-2*n);
24         }
25         if(i%4==0){
26             fir=fir+2;
27             sec=sec+2;
28         }
29     }
30     printf("\n");
31 } 
时间: 2024-08-06 20:03:55

Educational Codeforces Round 11、A B题的相关文章

Educational Codeforces Round 11 C hard process_补题——作为司老大的脑残粉

司老大当时教了一种姿势枚举连续K个0,说实话当时比赛写这题完全蒙了 纵然后来知道思路还是写了一段时间 真的是.. 题目大意 n长度的序列,由0 1构成 我们可以改变 k个0为1 求可以得到的最长连续1序列的长度 既然求连续1 我们贪心连续k个0 枚举端点 左端点0设置为0 右端点0设置为 n+1 中间统计一下 最长长度和改变的0的位置就OK了 1 #include<cstdio> 2 #include<map> 3 //#include<bits/stdc++.h> 4

Educational Codeforces Round 10 A B题、

A. Gabriel and Caterpillar 题意: 就是说  一个小孩子去观察毛毛虫从 h1的地方爬到h2的地方.毛毛虫从10点爬到22点.每小时爬的距离是a, 晚上22点到第二天早上10点 毛毛虫休息 每小时下落b距离.但是最初状态是那个小孩子从14点开始观察毛毛虫的, 必须过了24点才算一天 思路:模拟.但细节地方要注意 hint:但你要知道什么情况下永远也爬不上去,就是说每小时下落比每小时上升的距离大呢,但这还有个细节, 就是即使b>a 但毛毛虫是先可以爬10个小时,如果在这10

Educational Codeforces Round 23 A-F 补题

A Treasure Hunt 注意负数和0的特殊处理.. 水题.. 然而又被Hack了 吗的智障 #include<bits/stdc++.h> using namespace std; int main() { int sa,sb,da,db,x,y; scanf("%d%d%d%d%d%d",&sa,&sb,&da,&db,&x,&y); sa=da-sa;sb=db-sb; if(sa<0)sa*=-1; if(

Educational Codeforces Round 20解(bu)题记录

A. Maximal Binary Matrix 解法:暴力模拟+贪心 #include<bits/stdc++.h> using namespace std; int a[110][110]; int main(){ int n,k,cmp,f=0;scanf("%d%d",&n,&k); if(k>n*n){puts("-1");return 0;}cmp=n; int r=1; while(k>=2*cmp-1){ k-

Educational Codeforces Round 74 (Rated for Div. 2)补题

慢慢来. 题目册 题目 A B C D E F G 状态 √ √ √ √ × ? ? //√,×,? 想法 A. Prime Subtraction res tp A 题意:给定\(x,y(x>y)\),问能否将\(x-y\)拆成任意多个质数之和 1.任意大于\(1\)的整数\(k\)都可以用\(2\)与\(3\)的线性表示 证: 若\(k\)是偶数,显然: 若\(k\)是奇数,则\(k\)可以表示成\(k = 3 + 2*k'\),显然: 毕. #include<bits/stdc++.h&

Educational Codeforces Round 21 F. Card Game(网络流之最大点权独立集)

题目链接:Educational Codeforces Round 21 F. Card Game 题意: 有n个卡片,每个卡片有三个值:p,c,l; 现在让你找一个最小的L,使得满足选出来的卡片l<=L,并且所有卡片的p的和不小于k. 选择卡片时有限制,任意两张卡片的c之和不能为质数. 题解: 和hdu 1565 方格取数(2)一样,都是求最大点权独立集. 不难看出来,这题再多一个二分. 注意的是在构造二部图的时候,按照c值的奇偶性构造. 当c==1时要单独处理,因为如果有多个c==1的卡片,

Educational Codeforces Round 21 G. Anthem of Berland(dp+kmp)

题目链接:Educational Codeforces Round 21 G. Anthem of Berland 题意: 给你两个字符串,第一个字符串包含问号,问号可以变成任意字符串. 问你第一个字符串最多包含多少个第二个字符串. 题解: 考虑dp[i][j],表示当前考虑到第一个串的第i位,已经匹配到第二个字符串的第j位. 这样的话复杂度为26*n*m*O(fail). fail可以用kmp进行预处理,将26个字母全部处理出来,这样复杂度就变成了26*n*m. 状态转移看代码(就是一个kmp

Educational Codeforces Round 26 D. Round Subset(dp)

题目链接:Educational Codeforces Round 26 D. Round Subset 题意: 给你n个数,让你选其中的k个数,使得这k个数的乘积的末尾的0的个数最大. 题解: 显然,末尾乘积0的个数和因子2和因子5的个数有关. 然后考虑dp[i][j]表示选i个数,当前因子5的个数为j时,能得到因子2最多的为多少. 那么对于每个数,记录一下因子2和5的个数,做一些01背包就行了. 1 #include<bits/stdc++.h> 2 #define mst(a,b) me

Educational Codeforces Round 26 D dp,思维

Educational Codeforces Round 26 D. Round Subset 题意:有 n 个数,从中选出 k 个数,要使这 k 个数的乘积末尾的 0 的数量最多. tags:dp好题 dp[i][j][l] 表示前 i 个数,选取了其中 j 个数,分解因子后有 l 个 5时,最多有多少个 2 .i 这一维明显可以省略. 这题一开始有个地方写挫了..选取 j 个数时,应该反着来,即 for( j, k, 1) ,不是 for( j, 1, k) ,不然会多算. #include