Comet OJ - 2019 六一欢乐赛

传送门

#A:

思路:等差数列求和,看成俩次1+2+…+ n,多加的n减去,所以 ans = n*(n+1) - n。

AC代码:

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<string>
 4 using namespace std;
 5 int main()
 6 {
 7     int n;
 8     while(cin >> n)
 9     {
10         cout << n*(n+1) - n << endl ;
11     }
12     return 0;
13 }


#B:

思路:n 最大只有 14,所以暴力搜索每个数选和不选的情况。

AC代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 using namespace std;
 6 int ans;
 7 int n;
 8 int a[20];
 9 int vis[20];
10
11 int gcd(int a,int b)
12 {
13     if(b == 0)
14     return a;
15     else return gcd(b,a%b);
16 }
17 void dfs(int x)
18 {
19     if(x == n)
20     {
21         for(int i = 0;i < n;i++)
22             for(int j = i + 1;j < n;j++)
23                 if( vis[i] && vis[j] && gcd(a[i],a[j]) != 1 )
24                     return;
25         int cnt = 0;
26         for(int i = 0;i < n;i++)
27             if(vis[i])
28                 cnt++;
29         ans = max(ans,cnt);
30         return;
31     }
32     vis[x] = 1;
33     dfs(x + 1);
34     vis[x] = 0;
35     dfs(x + 1);
36 }
37
38 int main()
39 {
40     int t;
41     cin >> t;
42     while(t--)
43     {
44         memset(vis,0,sizeof(vis));
45         scanf("%d",&n);
46         for(int i = 0;i < n;i++)
47             scanf("%d",&a[i]);
48         ans = 0;
49         dfs(0);
50         cout << ans << endl;
51     }
52     return 0;
53 }


#C

思路:先比较长度,然后从头到尾检索比较字符串a和b,如果不相等,将b滞后一位再比较(具体看代码),最后滞后量等于2,说明可以输出1,否则输出0.

AC代码:

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<string>
 4 using namespace std;
 5 int main()
 6 {
 7     int t;
 8     cin >> t;
 9     while(t--)
10     {
11         string a,b;
12         cin >> a >> b;
13         if(a.size() - b.size() != 2) cout << "0" <<endl;
14         else
15         {
16             int f = 0;
17             for(int i = 0,j = 0;i < a.size();i++)
18             {
19                 if(a[i] != b[i - f]) f++;
20             }
21             if(f == 2) cout << "1" <<endl;
22             else cout << "0" <<endl;
23         }
24     }
25     return 0;
26 }


#D:

思路:签到题,直接模拟。

AC代码:

#include<iostream>
using namespace std;
int main()
{
    int a[14] = {0};
    int n;
    for(int i = 0;i < 18;i++)
    {
        cin >> n;
        a[n]++;
    }
    int ans = 0;
    for(int i = 0;i < 14;i++)
    {
        if(i)
        ans += a[i]%2;
        else ans += a[i];
    }
    cout << ans;
    return 0;
}


#F:

思路:这也是一道搜索题,首先每次变化后直接搜索能种树的位置肯定超时,所以我们要搜索每次变化后不能用的位置。容易推出最初的种树位置一共有 ans =(n - 1) *(m - 1)种,在总数 ans 减去 每次变化后 失去的位置即可。

AC代码:

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
const int maxn = 1e3+5;
int dy[4] = {0,1,0,-1};
int dx[4] = {-1,0,1,0};
int mp[maxn][maxn];
int q;
int n,m;
bool check(int x,int y)
{
    if(x <= n && y <= m && x > 0 && y > 0 && mp[x][y] == 0)
    return true;
    else return false;
}
int dfs(int x,int y)
{
    int ans = 0;
    if(check(x,y) && check(x+1,y) && check(x,y+1) && check(x+1,y+1)) ans++;
    if(check(x,y) && check(x-1,y) && check(x,y-1) && check(x-1,y-1)) ans++;
    if(check(x,y) && check(x+1,y) && check(x,y-1) && check(x+1,y-1)) ans++;
    if(check(x,y) && check(x-1,y) && check(x,y+1) && check(x-1,y+1)) ans++;
    return ans;
}

int main()
{
    cin >> n >> m >> q;
    int ans = (n - 1) * (m - 1);
    memset(mp,0,sizeof(mp));
    while(q--)
    {
        int a,b;
        cin >> a >> b;
        ans -= dfs(a,b);
        mp[a][b] = 1;
        cout << ans << endl;
    }
    return 0;
}


Comet OJ - 2019 六一欢乐赛

原文地址:https://www.cnblogs.com/Carered/p/10961670.html

时间: 2024-07-30 19:23:46

Comet OJ - 2019 六一欢乐赛的相关文章

Comet OJ - 2019国庆欢乐赛

https://www.cometoj.com/contest/68/problem/A enmmmm 看到 许多的 爆 ll  的老故事 #include<bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t,a,b,c,d; cin >> t; while(t--) { cin >> a >> b &g

六一欢乐赛 考试总结

时间:2018年5月31日 8:00~11:00 题目:5 难度:普及+/提高- T1.T2略 T3: 题目: 此时,Conan 却在一旁玩着 2048. 这是一个 4*4 的矩阵,初始全为 0.每次一个没有数字的格子中会随机出现一个 2 或 4,每次可以选择上下左右其中一个方向去滑动,每滑动一次,所有的数字方块都会往滑动的方向靠拢外,相同数字的方块在靠拢.相撞时会相加. Conan 想看看今天自己运气咋样,于是就闭着眼睛,在屏幕上随便滑来滑去.所以这个模拟的任务就交给你了.过了一会,他然后睁开

欢乐赛解题报告

~~一场不欢乐的欢乐赛 时间分配::T1做的时候还可以,大约三十分钟写了个深搜(鬼知道我为啥不用广搜,大概是因为快半个月没写了)写完后去研究第二题,刚开始以为是贪心,很快写了出来,但是自己推了一会举出了反例.于是自己想了很多方法,但是都是基于贪心,写了一个多小时,写炸了,没办法又改成了贪心.第三题并不会,然后搜索大法过了一个点,(输出-1也是一个点) 整体感觉::还是太弱,T1是会的,但是还是没做对,大概是独立做题少的缘故吧,平常做题都没有思考太多时间.T2贪心T3暴力,貌似自己啥都不会.到现在

综合-某假期欢乐赛 (Apri, 2018)

假期欢乐赛,确实挺轻松的,被逼迫写了题解. A.推数按列观察,有的列有多个格子,看起来好复杂啊,先放一放.按行观察,黑色格子在 i 行 j 列:当 i 是奇数,对应数字第 i 位是 j-1当 i 是偶数,对应数字第 i 位是 9-j B.体重某位同学不是中间体重的充要条件是,比他重的人数 >= mid 或 比他轻的人数 >= midx 比 y 重,则 x, y 有单向连通关系,G[x][y] = true .比 y 重的人数就是满足 G[i][y] = true 的 i 的数量.比 y 轻的人

Comet OJ - Contest #5

Comet OJ - Contest #5 总有一天,我会拿掉给\(dyj\)的小裙子的. A 显然 \(ans = min(cnt_1/3,cnt_4/2,cnt5)\) B 我们可以感性理解一下,最大的满足条件的\(x\)不会太大 因为当\(x\)越来越大时\(f(x)\)的增长速度比\(x\)的增长速度慢得多 其实可以证明,最大的满足的\(x\)不会超过\(100\) 因为没有任何一个三位数的各位之和大于等于\(50\) 所以我们就直接预处理\(1-99\)所有的合法的 暴力枚举即可 其实

符文能量(Comet OJ - Contest #8)

给Comet OJ打个小广告,挺好用的,比较简洁,给人感觉很好用 Contest #8是我打的第一场本oj比赛,很遗憾A了前两道傻逼题就没思路了,然后就不打算打了....... https://www.cometoj.com/contest/58/problem/C?problem_id=2760 怎么做啊完全不会啊我那么菜,虽然看到是dp但嫌太麻烦就放弃了: 靠后仔细想了想原来这道题很简单: 结构体node e[];储存ai,bi值(当然你用数组我也不拦着),因为合并的方式很特殊,可以不管合并

Comet OJ - Contest #10 B

Comet OJ - Contest #10 B 沉鱼落雁 思维题 题意 : 每个数字最多重复出现三次,有n给数字,让你尽可能的使得相同数字之间的最小距离尽可能大 思路 :分三种情况套路 设 a b c 分别代表出现 一次, 两次, 三次 数字的个数 所有元素至多出现一次,答案为 n,题目规定 所有元素至多出现两次, 例如 1 1 2,可以排列成 1 2 1,所以,答案为 1 例如 1 1 2 2 3,可以排列成 1 2 3 1 2,所有 答案为 2 思考后得出,应该尽可能的把 b 个出现两次的

2019徐州网络赛 XKC&#39;s basketball team 线段树

网址:https://nanti.jisuanke.com/t/41387 题意: 大家好,我是训练时长两年半的个人练习生蔡徐坤,我的爱好是唱,跳,rap,篮球. 给出一段长度为$n,(n \leq 1e5)$的序列,对每一个数,求出它和它后面比它大$m$的数中间夹着的数的数量,没有输出$-1$. 题解: 直接建线段树,维护最大值,然后查询时对第$i$个数,搜索区间$[i,n]$之中大于$num[i]+m$的值的位置的最大值,具体操作是先限定区间,然后求出所有合法位置,取最大值,如果搜索不到则返

ACM-ICPC 2019南昌网络赛I题 Yukino With Subinterval

ACM-ICPC 2019南昌网络赛I题 Yukino With Subinterval 题目大意:给一个长度为n,值域为[1, n]的序列{a},要求支持m次操作: 单点修改 1 pos val 询问子区间中某个值域的数的个数,连续的相同数字只记为一个.(即统计数字段的个数) 2 L R x y 数据范围: 1 ≤ n,m ≤ 2×10^5 1 ≤ a[i] ≤ n 解题思路: 连续重复的数字只记一次.所以考虑将每个数字段除第一个出现外的数字都删去(记为0).在读入操作的时候暴力模拟,同时维护