Gym - 102062A、B、C、D、E、F、G、H
比赛链接:https://vjudge.net/contest/409725#problem
题意:
就是说比赛一共发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 }
题意:
给你圆的质量和密度。让你求圆的表面积
题解:
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 }
题意:
求出阴影部分面积
题解:
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
题意:
问你从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 }
题意:
在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 * */
题意:
一个数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 * */
题意:
给你一个字符串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 }
题意:
计算字符串忍耐度程序如下:
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的更多相关文章
- Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页
models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...
- /MT、/MD编译选项,以及可能引起在不同堆中申请、释放内存的问题
一.MD(d).MT(d)编译选项的区别 1.编译选项的位置 以VS2005为例,这样子打开: 1) 打开项目的Property Pages对话框 2) 点击左侧C/C ...
- c语言求平面上2个坐标点的直线距离、求俩坐标直线距离作为半径的圆的面积、递归、菲波那次数列、explode
#include <stdio.h> #include <math.h> #include <string.h> char explode( char * str ...
- ArcGIS Engine开发之旅07---文件地理数据库、个人地理数据库和 ArcSDE 地理数据库中的栅格存储加以比较 、打开栅格数据
原文:ArcGIS Engine开发之旅07---文件地理数据库.个人地理数据库和 ArcSDE 地理数据库中的栅格存储加以比较 .打开栅格数据 对文件地理数据库.个人地理数据库和 ArcSDE 地理 ...
- MySQL命名、设计及使用规范--------来自标点符的《MySQL命名、设计及使用规范》
原文地址:http://www.biaodianfu.com/mysql-best-practices.html 最近在看MySQL相关的内容,整理如下规范,作为一名刚刚学习MySQL的菜鸟,整理的内 ...
- UltraEdit (Ctrl + F) 查找、(Ctrl + R)替换功能失效
环境: Windows 7 Service Pack 1 X64 工具: UltraEdit Version 21 症状: UltraEdit (Ctrl + F) 查找.(Ctrl + R)替换功能 ...
- Linux ubuntu 安装gcc、g++、 pcre、zlib、ssl、nginx和该内存不能为written解决方法
1.楼主也是第一次接触Linux 如果有错误的地方还请各位朋友指出.... 2.gcc.g++依赖库:sudo apt-get install build-essential,sudoapt-get ...
- 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.数组插入.删除 ...
- Page11:状态反馈、输出反馈的概念及性能比较,极点配置的基本概念、意义及其算法[Linear System Theory]
内容包含离散时间线性时不变系统的稳定判据 状态反馈.输出反馈的基本概念及其性能比较 极点配置的基本概念.意义及其算法
随机推荐
- Tomcat7,Tomcat8 的manager 配置
1.打开文件:tomcat目录-->conf-->tomcat-users.xml 2.将以下代码替换原来的所有内容,不要犹豫,就是所有内容. <?xml version=&quo ...
- 【C++】《C++ Primer 》第十章
第十章 泛型算法 一.概述 因为它们实现共同的操作,所以称之为"算法".而"泛型",指的是它们可以操作在多种容器类型上. 泛型算法并不直接操作容器,而是遍历由两 ...
- Docker Java 镜像基础(四)
基于官方提供的centos 7.2.1511 基础镜像构建JDK 和tomcat 镜像,先构建JDK镜像,然后在基于JDK镜像构建tomcat镜像 构建 centos:latest 基础镜像: # 下 ...
- python列表字符串集合常用方法
1.1 列表常用方法 # 1. append 用于在列表末尾追加新的对象a = [1,2,3]a.append(4) # the result : [1,2,3,4]# 2. count方法统计某个 ...
- k8s之ServiceAccount
导读 上一篇说了k8s的RBAC授权模式,今天就来简单看一下其中涉及到的ServiceAccount. 简介 k8s创建两套独立的账号系统,原因如下: (1)User账号给用户用,Service Ac ...
- 【Linux】if中的逻辑运算符怎么在linux的帮助中看到
今天在写shell的时候,突然想查看下if相关的一些逻辑运算的,像-f -d之类的这种 于是man if 或者if --help 可是返回的信息却都无济于事,一点帮助都没有 回想一下,if中调的判断 ...
- 基于kubernetes实现coredns的及验证
CoreDNS: k8s内部的DNS ,用于对pod对service做记录的,好让其他的pod做访问 这里不用做过多的阐述 官方kube-dns现在已经没有在维护了,从Kubernetes 1.11 ...
- MSDOS(MBR)和GPT磁盘分区表
MBR和GPT分区 MBR分区:以磁盘的第一个扇区(512byte)记录分区表,其中,446byte存储开机管理程序(MBR 主要开机记录),64byte用于存放分区表 分区实际上是对分区表的修改 M ...
- yum配置文件下使用自定义变量
yum的配置文件中,可以使用的变量,简称为yum变量: 默认的yum变量有: $releasever(Release Version),发行版的版本 $arch,CPU体系结构,通过 Python 的 ...
- 面试必问:如何实现Redis分布式锁
摘要:今天我们来聊聊分布式锁这块知识,具体的来看看Redis分布式锁的实现原理. 一.写在前面 现在面试,一般都会聊聊分布式系统这块的东西.通常面试官都会从服务框架(Spring Cloud.Dubb ...