比赛链接:https://vjudge.net/contest/409725#problem

题面点此处进入

Gym - 102062A

题意:

就是说比赛一共发a+b+c+d个牌子,现在不带上主人公已经有N个人了,问你带上主人公这场比赛发牌子的数量到不到总人数一半

代码:

 1 /*
2 * @Author: hesorchen
3 * @Date: 2020-11-21 17:26:54
4 * @LastEditTime: 2020-11-25 13:17:10
5 * @Description: 栽种绝处的花
6 */
7 #include <bits/stdc++.h>
8 using namespace std;
9
10 int main()
11 {
12 int t;
13 scanf("%d", &t);
14 while (t--)
15 {
16 int n, a, b, c, d;
17 scanf("%d %d %d %d %d", &n, &a, &b, &c, &d);
18 n++;
19 if (n & 1)
20 n++;
21 if (n / 2 <= a + b + c + d)
22 printf("Yes\n");
23 else
24 printf("No\n");
25 }
26 return 0;
27 }

Gym - 102062B

题意:

给你圆的质量和密度。让你求圆的表面积

题解:

S=4*PI*r*r

代码:

 1 #include <bits/stdc++.h>
2 using namespace std;
3
4 const double PI = acos(-1);
5
6 int main()
7 {
8 int t;
9 int CA = 0;
10 scanf("%d", &t);
11 while (t--)
12 {
13 double a, b;
14 scanf("%lf %lf", &a, &b);
15 double V = a / b;
16 double r = pow((3.0 * V / (4.0 * PI)), 1.0 / 3);
17 double ans = 4.0 * PI * r * r;
18 printf("Case %d: %.4f\n", ++CA, ans);
19 }
20 }

Gym - 102062C

题意:

求出阴影部分面积

题解:

AGF这个半圆的面积就是半径为r/2的面积的一半

三角形AEF的面积也可以求出来

EAHF的面积就是半径为EA的圆面积的四分之一

前两个减去后面一个就是答案

代码:

 1 /*
2 * @Author: hesorchen
3 * @Date: 2020-11-21 17:26:54
4 * @LastEditTime: 2020-11-25 14:11:07
5 * @Description: 栽种绝处的花
6 */
7 #include <bits/stdc++.h>
8 using namespace std;
9
10 const double PI = acos(-1);
11
12 int main()
13 {
14 int t;
15 scanf("%d", &t);
16 int CA = 0;
17 while (t--)
18 {
19 double r;
20 scanf("%lf", &r);
21 double r1 = r / 2;
22 double res1 = PI * r1 * r1 / 2;
23 double res2 = r * r / 4;
24 double r2 = r / (sqrt(2));
25 double res3 = r2 * r2 * PI / 4;
26 double ans = res1 + res2 - res3;
27 printf("Case %d: %.4f\n", ++CA, ans);
28 }
29
30 return 0;
31 }
32 //Case 1: 9

Gym - 102062D

题意:

问你从1开始的第n个是回文数的正整数是几

题解:

规律,就是正着输出这个N,再到着输出就是答案

 1 /*
2 * @Author: hesorchen
3 * @Date: 2020-11-21 17:26:54
4 * @LastEditTime: 2020-11-25 13:28:12
5 * @Description: 栽种绝处的花
6 */
7 #include <bits/stdc++.h>
8 using namespace std;
9
10 char s[100090];
11 int main()
12 {
13 int t;
14 scanf("%d", &t);
15 int CA = 0;
16 while (t--)
17 {
18 scanf("%s", s + 1);
19 printf("Case %d: ", ++CA);
20 int len = strlen(s + 1);
21 for (int i = 1; i <= len; i++)
22 printf("%c", s[i]);
23 for (int i = len - 1; i >= 1; i--)
24 printf("%c", s[i]);
25 printf("\n");
26 }
27
28 return 0;
29 }

Gym - 102062E

题意:

在X轴上,你刚开始站在第0位置。每一次你可以向右或者向左移动2d步,且d-=1;你不能到达坐标为负数的位置。问你能不能到达坐标为x的位置。如果可以输出YES并输出你是第几次到达的这个地方。否则输出NO

题解:

x>=2d+1都不可能到达。其他的模拟就行

代码:

 1 /*
2 * @Author: hesorchen
3 * @Date: 2020-11-21 17:26:54
4 * @LastEditTime: 2020-11-25 16:00:22
5 * @Description: 栽种绝处的花
6 */
7 #include <bits/stdc++.h>
8 using namespace std;
9
10 int main()
11 {
12
13 long long t, CA = 0;
14 scanf("%lld", &t);
15
16 while (t--)
17 {
18 long long d, x;
19 scanf("%lld %lld", &d, &x);
20 if ((1ll << (d + 1)) <= x)
21 {
22 printf("Case %lld: NO\n", ++CA);
23 continue;
24 }
25 else
26 {
27 long long pos = 0, step = 0;
28 while (1)
29 {
30 if (pos < x)
31 {
32 pos += (1ll << d);
33 }
34 else if (pos > x)
35 {
36 pos -= (1ll << d);
37 }
38 else
39 {
40 printf("Case %lld: YES %lld\n", ++CA, step);
41 break;
42 }
43 // cout << '\t' << pos << ' ' << x << endl;
44 ++step;
45 --d;
46 }
47 }
48 }
49
50 return 0;
51 }
52 /**
53 37 6
54 38 5
55 39 6
56 40 3
57 41 6
58 42 5
59 43 6
60 44 4
61 45 6
62 46 5
63 47 6
64 48 2
65 49 6
66 50 5
67 51 6
68 52 4
69 53 6
70 54 5
71 55 6
72 56 3
73 57 6
74 58 5
75 59 6
76 60 4
77 61 6
78 62 5
79
80 * */

Gym - 102062F

题意:

一个数x可以形成一棵树或者一个图,形成过程如下(都是无向边):

1、x和它的因子相连(因子排除1和它本身)

2、x的因子和它的因子相连

然后判断最后形成的是图还是树。(只有一个点的是树)

让你输出区间[1,n]内有多少数可以形成树

题解:

只要一个数x的质因子数量大于2就不是树

因为如果x=a*b*c(a、b、c都是质因子),那么x也可以被a*b整除,那么a*b就可以和a、b相连,那这就形成环了

代码:

 1 /*
2 * @Author: hesorchen
3 * @Date: 2020-11-21 17:26:54
4 * @LastEditTime: 2020-11-25 16:47:54
5 * @Description: 栽种绝处的花
6 */
7 #include <bits/stdc++.h>
8 using namespace std;
9 int sum[1000010];
10
11 int f(int x)
12 {
13 int ans = 0;
14 for (int i = 2; i <= sqrt(x); i++)
15 {
16 if (x % i == 0)
17 {
18 while (x % i == 0)
19 {
20 ans++;
21 x /= i;
22 }
23 }
24 }
25 if (x > 1)
26 ans++;
27 if (ans > 2)
28 return 0;
29 return 1;
30 }
31 void init()
32 {
33 sum[1] = 1;
34 for (int i = 2; i <= 1000000; i++)
35 {
36 if (f(i))
37 sum[i] = 1;
38 }
39 for (int i = 2; i <= 1000000; i++)
40 sum[i] += sum[i - 1];
41 }
42 int main()
43 {
44 init();
45 int n, t, id = 0;
46 scanf("%d", &t);
47 while (t--)
48 {
49 scanf("%d", &n);
50 int x = sum[n];
51 int y = __gcd(x, n);
52 n /= y, x /= y;
53 printf("Case %d: %d/%d\n", ++id, x, n);
54 }
55 return 0;
56 }
57 /**
58 37 6
59 38 5
60 39 6
61 40 3
62 41 6
63 42 5
64 43 6
65 44 4
66 45 6
67 46 5
68 47 6
69 48 2
70 49 6
71 50 5
72 51 6
73 52 4
74 53 6
75 54 5
76 55 6
77 56 3
78 57 6
79 58 5
80 59 6
81 60 4
82 61 6
83 62 5
84
85 * */

Gym - 102062G

题意:

给你一个字符串s,对于s的所有子串,我们需要计算全部子串的贡献,加起来取模1e9+7输出就可以

例如给你一个字符串str,他的贡献就是∑len(str)*str[i] (1<=i<=len(str))

题解:

暴力T定了,正解是找规律,找字符串每一个位置计算了多少次,设一个位置计算次数为wi

最后求和∑wi*s[i]输出就是答案

代码:

 1 #include <bits/stdc++.h>
2 using namespace std;
3
4 #define mod 1000000007
5 char s[100010];
6 int main()
7 {
8 long long t;
9 scanf("%lld", &t);
10 long long CA = 0;
11 while (t--)
12 {
13 long long n, ans = 0, res = 0;
14 scanf("%lld", &n);
15 scanf("%s", s + 1);
16 for (long long i = 1; i <= n; i++)
17 {
18 res += (n - i + 1) * ((n - i + 1) + 1) / 2;
19 res -= (i - 1) * i / 2;
20 ans = (ans + (s[i] * res) % mod) % mod;
21 }
22 printf("Case %lld: %lld\n", ++CA, ans);
23 }
24 }

Gym - 102062H

题意:

计算字符串忍耐度程序如下:

int tolerance(char Txt[], int len){
int sum=0;
for(int i=1, j=len; i<j; i++, j--){
sum=sum+abs(Txt[j]-Txt[i]);
}
return sum;
}

题目给你一个字符串s,对于每次询问L、R、X

就是计算s字符串的的子字符串s[L,R]。求这一部分的忍耐度,如果大于x就去掉头部和尾部各一个字符,再次计算,重复这个过程

输出的话就是输出最后子字符串的长度

题解:

模拟

预处理一下s字符串的所有子字符串的忍耐度

之后二分最后答案长度就可以了

代码:

 1 #include <bits/stdc++.h>
2 using namespace std;
3 const int maxn = 6e3 + 10;
4 #define mod 1000000007
5
6 char s[maxn];
7 int w[maxn][maxn];
8 int main()
9 {
10 int t, n;
11 scanf("%d", &t);
12 while (t--)
13 {
14 scanf("%s", s + 1);
15 n = strlen(s + 1);
16 for (int i = 1; i <= n; ++i)
17 {
18 w[i][i] = 0;
19 for (int j = 1; j <= n; ++j)
20 {
21 int start = i - j;
22 int last = i + j;
23 if (i - j >= 1 && i + j <= n)
24 {
25 w[i - j][i + j] = w[start + 1][last - 1] + abs(s[last] - s[start]);
26 }
27 else
28 break;
29 }
30 }
31 for (int i = 1; i <= n; ++i)
32 {
33 for (int j = 1; j <= n; ++j)
34 {
35 int start = i - j + 1;
36 int last = i + j;
37 if (start >= 1 && last <= n)
38 {
39 if (j == 1)
40 w[start][last] = abs(s[last] - s[start]);
41 else
42
43 w[start][last] = w[start + 1][last - 1] + abs(s[last] - s[start]);
44 }
45 else
46 break;
47 }
48 }
49 int m ;
50 scanf("%d", &m);
51 while (m--)
52 {
53 int x, y, z;
54 scanf("%d%d%d", &x, &y, &z);
55 int l = 0, r = (y - x + 1) / 2, ans = 0;
56 while (l <= r)
57 {
58 int mid = (l + r) >> 1;
59 if (y - mid < x + mid)
60 {
61 ans = mid;
62 break;
63 }
64 if (w[x + mid][y - mid] <= z)
65 {
66 ans = mid;
67 r = mid - 1;
68 }
69 else
70 l = mid + 1;
71 }
72 // cout<<ans<<endl;
73 printf("%d\n", (y - x + 1) - ans * 2);
74 }
75 }
76 return 0;
77 }
78 /*
79
80
81 abcde
82 w[2][2]=0;w[1][3]
83 w[3][3]=0;w[2][4]/w[1][5]
84 w[4][4]=0;w[3][5]/w[2][6]/w[1][7]
85
86 w[3][4] w[2][5]
87 w[4][5] w[3][6]
88
89
90 */

Gym - 102062A、B、C、D、E、F、G、H的更多相关文章

  1. Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页

    models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...

  2. /MT、/MD编译选项,以及可能引起在不同堆中申请、释放内存的问题

    一.MD(d).MT(d)编译选项的区别 1.编译选项的位置 以VS2005为例,这样子打开: 1)         打开项目的Property Pages对话框 2)         点击左侧C/C ...

  3. c语言求平面上2个坐标点的直线距离、求俩坐标直线距离作为半径的圆的面积、递归、菲波那次数列、explode

    #include <stdio.h> #include <math.h> #include <string.h> char explode( char * str ...

  4. ArcGIS Engine开发之旅07---文件地理数据库、个人地理数据库和 ArcSDE 地理数据库中的栅格存储加以比较 、打开栅格数据

    原文:ArcGIS Engine开发之旅07---文件地理数据库.个人地理数据库和 ArcSDE 地理数据库中的栅格存储加以比较 .打开栅格数据 对文件地理数据库.个人地理数据库和 ArcSDE 地理 ...

  5. MySQL命名、设计及使用规范--------来自标点符的《MySQL命名、设计及使用规范》

    原文地址:http://www.biaodianfu.com/mysql-best-practices.html 最近在看MySQL相关的内容,整理如下规范,作为一名刚刚学习MySQL的菜鸟,整理的内 ...

  6. UltraEdit (Ctrl + F) 查找、(Ctrl + R)替换功能失效

    环境: Windows 7 Service Pack 1 X64 工具: UltraEdit Version 21 症状: UltraEdit (Ctrl + F) 查找.(Ctrl + R)替换功能 ...

  7. Linux ubuntu 安装gcc、g++、 pcre、zlib、ssl、nginx和该内存不能为written解决方法

    1.楼主也是第一次接触Linux  如果有错误的地方还请各位朋友指出.... 2.gcc.g++依赖库:sudo apt-get install build-essential,sudoapt-get ...

  8. javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)

    主要内容: 1.数组整体元素修改 2. 数组筛选 3.jquery 元素转数组 4.获取两个数组中相同部分或者不同部分 5.数组去重并倒序排序 6.数组排序 7.数组截取slice 8.数组插入.删除 ...

  9. Page11:状态反馈、输出反馈的概念及性能比较,极点配置的基本概念、意义及其算法[Linear System Theory]

    内容包含离散时间线性时不变系统的稳定判据 状态反馈.输出反馈的基本概念及其性能比较 极点配置的基本概念.意义及其算法

随机推荐

  1. 浅谈JVM垃圾回收

    JVM内存区域 要想搞懂啊垃圾回收机制,首先就要知道垃圾回收主要回收的是哪些数据,这些数据主要在哪一块区域. Java8和Java8之前的相同点有很多. 都有虚拟机栈,本地方法栈,程序计数器,这三个是 ...

  2. ansible 安装和使用

                                ansible 安装和使用   ## 安装epel 源: rpm -ivh https://dl.fedoraproject.org/pub/e ...

  3. ORA-32004解决办法

    ORA-32004 解释是: 产生问题的原因是一个过时的参数,这个参数是早在8i,9i中使用的,在11g中已经废掉了 这个参数就是pfile中的*.sql_trace 用spfile 生成一个pfil ...

  4. OpenID协议

    背景 当我们要使用一个网站的功能时,一般都需要注册想用的账号.现在的互联网应用很多,一段时间之后你会发现你注册了一堆账号密码,根本记不住. 你可能会想到所有的网站都用同一套用户名和密码,这样虽然能解决 ...

  5. leetcode 470. 用 Rand7() 实现 Rand10() (数学,优化策略)

    题目链接 https://leetcode-cn.com/problems/implement-rand10-using-rand7/ 题意: 给定一个rand7()的生成器,求解如何产生一个rand ...

  6. AWD生存之道

    比赛开始阶段 常见漏洞的防御手段:https://www.freebuf.com/articles/web/208778.html 一.登陆SSH 重点 如果ssh的密码不是随机密码,记得一开始就进行 ...

  7. 在recover database时,如何决定该从哪一个SCN开始恢复

    使用备份恢复的方法搭建DG库,还原数据文件后,打开数据库时报错 SQL> ALTER DATABASE OPEN READ ONLY; ALTER DATABASE OPEN READ ONLY ...

  8. 为什么不建议用var

    看了这个例子估计你就会明白了 var a = 'global'; function test() { if (!a) { var a = 'part'; } console.log(a); } tes ...

  9. 2020年12月18号--21号 人工智能(深度学习DeepLearning)python、TensorFlow技术实战

    深度学习DeepLearning(Python)实战培训班 时间地点: 2020 年 12 月 18 日-2020 年 12 月 21日 (第一天报到 授课三天:提前环境部署 电脑测试) 一.培训方式 ...

  10. es_python_操作

    获取es索引 https://www.itranslater.com/qa/details/2583886977221264384