Comet OJ 2019六一欢乐赛

Stella981
• 阅读 611

本来可以很欢乐的,结果由于参与人数众多,服务器过于土豆,硬是把手速场变成网速场。难度cf div3左右。

赛后中了抽奖23333然而只能选T恤,不能选日系短裙,不然就送hry裙子好了 (此处呲牙笑

大模拟我就不补了,该歇了(

题目链接:https://cometoj.com/contest/42


A:

求1+2+...+n+(n-1)+...+1,答案就是n^2。

太水,代码就不贴了。记得开long long即可。

B:

给n个数(n<=14),问最多选出多少个数,使得两两互质。

因为n非常小,二进制枚举,O(n^2)验证秒杀。

Comet OJ 2019六一欢乐赛 Comet OJ 2019六一欢乐赛

 1 /* basic header */
 2 #include <bits/stdc++.h>
 3 /* define */
 4 #define ll long long
 5 #define dou double
 6 #define pb emplace_back
 7 #define mp make_pair
 8 #define sot(a,b) sort(a+1,a+1+b)
 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
10 #define rep0(i,a,b) for(int i=a;i<b;++i)
11 #define eps 1e-8
12 #define int_inf 0x3f3f3f3f
13 #define ll_inf 0x7f7f7f7f7f7f7f7f
14 #define lson curPos<<1
15 #define rson curPos<<1|1
16 /* namespace */
17 using namespace std;
18 /* header end */
19 
20 const int maxn = 15;
21 int t, a[maxn];
22 
23 int check(set<int> &s) {
24     int b[maxn],p=0;
25     for (auto i:s) b[++p]=i;
26     for (int i=1;i<=p;i++)
27         for (int j=i+1;j<=p;j++)
28             if (__gcd(b[i],b[j])>1) return 0;
29     return 1;
30 }
31 
32 int main() {
33     cin >> t;
34     while (t--) {
35         int n, ans = 1;
36         cin >> n;
37         rep1(i, 1, n) cin >> a[i];
38         for (int cnt = 1; cnt < (1 << n); cnt++) {
39             int tmp = cnt;
40             set<int>s; s.clear();
41             rep1(i, 1, n) {
42                 if (tmp & 1) s.insert(a[i]);
43                 tmp >>= 1;
44             }
45             if (check(s)) ans = max(ans, (int)s.size());
46         }
47         cout << ans << endl;
48     }
49     return 0;
50 }

View Code

C:

给定字符串s,t,问t是否为s刚好删去两个字符的结果。

注意s为两个字符的情况就好了(也就是t为空串)。

Comet OJ 2019六一欢乐赛 Comet OJ 2019六一欢乐赛

 1 /* basic header */
 2 #include <bits/stdc++.h>
 3 /* define */
 4 #define ll long long
 5 #define dou double
 6 #define pb emplace_back
 7 #define mp make_pair
 8 #define sot(a,b) sort(a+1,a+1+b)
 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
10 #define rep0(i,a,b) for(int i=a;i<b;++i)
11 #define eps 1e-8
12 #define int_inf 0x3f3f3f3f
13 #define ll_inf 0x7f7f7f7f7f7f7f7f
14 #define lson curPos<<1
15 #define rson curPos<<1|1
16 /* namespace */
17 using namespace std;
18 /* header end */
19 
20 int main() {
21     int t; cin >> t; cin.get();
22     while (t--) {
23         // string s, t; cin >> s >> t;
24         string s, t;
25         getline(cin, s);
26         getline(cin, t);
27         int len1 = s.size(), len2 = t.size(), cnt = 0;
28         if (len1 - len2 != 2) {
29             puts("0"); continue;
30         }
31         if (len2 == 0 && len1 == 2) {
32             puts("1"); continue;
33         }
34         for (int p1 = 0, p2 = 0; p1 < len1; p1++) {
35             if (p2>=len2 || s[p1] != t[p2]) {
36                 cnt++;
37             } else ++p2;
38         }
39         if (cnt != 2) puts("0"); else puts("1");
40     }
41     return 0;
42 }

View Code

D:

给定18个数字,数字的范围是[0,13],数字可能重复但重复度不超过4。对于每个重复的数字可以做如下操作(只能对[1,13]之间的数字操作):若该数字重复度为2或4,则可以把该数字全部删去;若该数字重复度为3,则可以删去两个该数字。问最后最少剩下多少数字。

没什么可说的,模拟就完事了。

Comet OJ 2019六一欢乐赛 Comet OJ 2019六一欢乐赛

 1 /* basic header */
 2 #include <bits/stdc++.h>
 3 /* define */
 4 #define ll long long
 5 #define dou double
 6 #define pb emplace_back
 7 #define mp make_pair
 8 #define sot(a,b) sort(a+1,a+1+b)
 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
10 #define rep0(i,a,b) for(int i=a;i<b;++i)
11 #define eps 1e-8
12 #define int_inf 0x3f3f3f3f
13 #define ll_inf 0x7f7f7f7f7f7f7f7f
14 #define lson curPos<<1
15 #define rson curPos<<1|1
16 /* namespace */
17 using namespace std;
18 /* header end */
19 
20 const int maxn = 20;
21 int a[maxn];
22 
23 int main() {
24     rep0(i, 0, maxn) a[i] = 0;
25     rep1(i, 1, 18) {
26         int x; cin >> x;
27         a[x]++;
28     }
29     rep0(i, 1, maxn) {
30         if (a[i] == 2 || a[i] == 4) a[i] = 0;
31         if (a[i] == 3) a[i] -= 2;
32     }
33     int ans = 0;
34     rep0(i, 0, maxn) ans += a[i];
35     cout << ans << endl;
36     return 0;
37 }

View Code

E:

给定一个n*n的迷宫,迷宫里的格子只有路和墙。给定起点和终点,起点下方必定有墙。规定要用右手贴着地图中起点下方的墙壁一直沿着墙壁往前走(保证能走到终点)。要求把路程中右手贴的每一面墙在地图里的方向记录下来并按顺序输出。地图是不会旋转的。

很无聊的大模拟……

F:

给定一个n*m的矩阵,每个2*2子矩阵可以种一棵树,接下来给定q次变化,每次变化会ban掉一个格子。含有被ban掉的格子的子矩阵不可以种树。对于每次给定的变化,给出当前矩阵最多可以种多少棵树。

这很明显是个数学题。对于一个被ban掉的格子,它可以影响二、三、四个子矩阵。计算初始矩阵最多种多少棵树,然后对于每次查询计算影响即可。

(然而我那晚读错题了,以为是对于每次查询,给出当前状态的矩阵最多可以种多少棵树,题目一下子变得很烦

Comet OJ 2019六一欢乐赛 Comet OJ 2019六一欢乐赛

 1 /* basic header */
 2 #include <bits/stdc++.h>
 3 /* define */
 4 #define ll long long
 5 #define dou double
 6 #define pb emplace_back
 7 #define mp make_pair
 8 #define sot(a,b) sort(a+1,a+1+b)
 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
10 #define rep0(i,a,b) for(int i=a;i<b;++i)
11 #define eps 1e-8
12 #define int_inf 0x3f3f3f3f
13 #define ll_inf 0x7f7f7f7f7f7f7f7f
14 #define lson curPos<<1
15 #define rson curPos<<1|1
16 /* namespace */
17 using namespace std;
18 /* header end */
19 
20 const int maxn = 1e3 + 10;
21 int n, m, q, a[maxn][maxn], curr = 0;
22 
23 int main() {
24     cin >> n >> m >> q;
25     rep0(i, 1, n) {
26         rep0(j, 1, m) {
27             a[i][j] = 1;
28             curr++;
29         }
30     }
31     while (q--) {
32         int x, y; cin >> x >> y;
33         rep0(i, 0, 2) {
34             rep0(j, 0, 2) {
35                 if (a[x - i][y - j]) a[x - i][y - j] = 0, curr--;
36             }
37         }
38         printf("%d\n", curr);
39     }
40     return 0;
41 }

View Code

G:

黑白棋相关的题目。又是个大模拟。

H:

有个皮球从高处掉落,根据物理知识,它会弹起。现在按照时间顺序给定n个球的不同高度(>0),问球至少落地几次。

贪心。不妨设球一开始向下运动,每读入一个新的高度,判断球是否必须转向才可达到新的高度。

无论是问至少还是至多,这题都很好做。

Comet OJ 2019六一欢乐赛 Comet OJ 2019六一欢乐赛

 1 /* basic header */
 2 #include <bits/stdc++.h>
 3 /* define */
 4 #define ll long long
 5 #define dou double
 6 #define pb emplace_back
 7 #define mp make_pair
 8 #define sot(a,b) sort(a+1,a+1+b)
 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
10 #define rep0(i,a,b) for(int i=a;i<b;++i)
11 #define eps 1e-8
12 #define int_inf 0x3f3f3f3f
13 #define ll_inf 0x7f7f7f7f7f7f7f7f
14 #define lson curpos<<1
15 #define rson curpos<<1|1
16 /* namespace */
17 using namespace std;
18 /* header end */
19 
20 int last = int_inf, dire = 1, n, ans = 0; //1 is down and 0 is up
21 
22 int main() {
23     cin >> n;
24     while (n--) {
25         int x; cin >> x;
26         if (dire) {
27             if (x >= last) {
28                 dire = 0;
29                 ans++;
30             }
31         } else if (x <= last)
32             dire = 1;
33         last = x;
34     }
35     printf("%d\n", ans);
36     return 0;
37 }

View Code

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这