D.City Day

题意:就是给定n,x,y,以及这n天的下雨量ai,要求这一天的下雨量是这一天前x天到后y天的下雨量中最小的。输出最早的(下标最小的)d。保证答案一定存在

思路:直接遍历寻找就好了,做好标记

代码:

 1 #include<iostream>
2 #include<algorithm>
3 #include<cstdio>
4 #include<cstring>
5 #include<cmath>
6 using namespace std;
7 const int maxx=1e5+10;
8 int main(){
9 int n,x,y;
10 scanf("%d %d %d",&n,&x,&y);
11 int a[maxx];
12 for(int i=1;i<=n;i++){
13 scanf("%d",&a[i]);
14 }
15 int fl=0;
16 for(int i=1;i<=n;i++){
17 int flag=0;
18 for(int j=1;j<=x;j++){
19 if(a[i-j]<a[i]&&i-j>0){
20 flag=1;
21 }else if(i-j<=0){
22 break;
23 }
24 }
25 for(int j=1;j<=y;j++){
26 if(a[j+i]<a[i]&&i+j<=n){
27 flag=1;
28 }else if(i+j>n){
29 break;
30 }
31 }
32
33 if(flag==0){
34 fl=i;
35 break;
36 }
37 }
38 printf("%d",fl);
39 }

E.Water Lily

题目:荷花如图所示,距离水面H,倾斜后离竖直位置的水平距离为L,求水面高度

思路:直接根据已知,设勾股定理的未知等式进行求解

代码:

 1 #include<iostream>
2 #include<algorithm>
3 #include<cstdio>
4 #include<cstring>
5 #include<cmath>
6 using namespace std;
7 const int maxx=1e5+10;
8 int main(){
9 double l,h,x;
10 scanf("%lf %lf",&h,&l);
11 x=(l*l-h*h)*1.0/(2*h);
12 printf("%f\n",x);
13 }

F.MP3

题目:大小为n的数组,K 个不同值,需要 k=ceil(log2K) 位存储每个值,整个数组需要n 位存储,现在需要压缩到 8∗I ,求需要改变的数的最小值。

思路:先把数组转化为,从小到大排序,然后开定一个新的数组存储,从小到大的这些数相同的有多少个,然后如果存储空间可以存下,直接进行输出即可,如果不能找到就进行查找,保留的数组最大是多少,先计算一下,然后用前缀和进行寻找个数最多的数组,然后用总共的总数减去保留的最大的总数就是输出所要删去个数的多少

思考:觉得这个题真的是难以读明白题,从开始做的时候,就没办法了感觉自己读明白了,又没有读明白,就感觉很绕,后来就得慢慢的变读题,边缕题意,这个题是耗费时间最长的一个题

代码:

 1 #include<iostream>
2 #include<algorithm>
3 #include<cstdio>
4 #include<cstring>
5 #include<cmath>
6 using namespace std;
7 const int maxx=4e5+1;
8 int a[maxx];
9 int b[maxx]={0};
10 int main(){
11 //int a[maxx];
12 int n,i,k,kk;
13 scanf("%d %d",&n,&i);
14 //int b[maxx]={0};
15 for(int i=0;i<n;i++){
16 scanf("%d",&a[i]);
17 }
18 sort(a,a+n);
19 int flag=0;
20 int sum=0;
21 int j=0;
22 long long int p=0;
23 for(int i=0;i<n;i++){
24 if(i==0){
25 sum++;//同类一共多少
26 flag++;//不同类一共多少
27 }else{
28 if(a[i]==a[i-1]){
29 sum++;
30 }else{
31 b[j]=sum;
32 //printf("i:%d a[i]:%d sum:%d\n",i,a[i-1],sum);
33 sum=1;
34 j++;
35 flag++;
36
37 }
38 if(i==n-1&&a[i]==a[i-1]){
39 b[j]=sum;
40 sum=1;
41 j++;
42 }else if(i==n-1){
43 b[j]=1;
44 j++;
45 }
46 }
47 }
48 kk=flag;
49 k=log2(kk);
50 if(pow(2,k)!=kk){
51 k++;
52 }
53 //printf("k:%d\n",k);
54 // printf("k;%d\n",k);
55 if(8*i>=n*k){
56 printf("0");
57 }else{
58 int p=8*i/n;
59 int s=pow(2,p);
60 int summ=0;//找到间断s区间最大的
61 //printf("s:%d\n",s);
62 int c[maxx]={0};
63 //printf("j:%d\n",j);
64 for(int i=0;i<j;i++){
65 if(i-1>=0){
66 c[i]+=c[i-1]+b[i];
67 }else{
68 c[i]=b[i];
69 }
70 //printf("%d ",c[i]);
71 }
72 // printf("\n");
73 summ=0;
74 int little=0;
75 for(int i=0;i<j;i++){
76 if(i-s+1==0){
77 little=c[i];
78 }else if(i-s+1>0){
79 little=c[i]-c[i-s+1]+b[i-s+1];
80 }
81 summ=max(little,summ);
82 }
83 printf("%d",c[j-1]-summ);
84
85 }
86 }

J.Tokitsukaze and Enhancement

题目:一个数除4余1那么就是等级A,余3就是等级B,余2就是等级C,余0就是等级D,并且等级A>B>C>D,如果一个数最多能增加2,那么它最少需要增加多少,并且此时等级最高是多少

思路:这个数,这个数+1,这个数+2都表示出来进行比较

代码:

 1 #include<iostream>
2 #include<algorithm>
3 #include<cstdio>
4 #include<cstring>
5 #include<cmath>
6 using namespace std;
7 const int maxx=1e5+10;
8 int main(){
9 int n;
10 scanf("%d",&n);
11 int n1,n2;
12 n1=(n+1)%4;
13 n2=(n+2)%4;
14 n=n%4;
15 if(n==1){
16 printf("0 A\n");
17 }else if(n1==1){
18 printf("1 A\n");
19 }else if(n2==1){
20 printf("2 A\n");
21 }else if(n==3){
22 printf("0 B\n");
23 }else if(n1==3){
24 printf("1 B\n");
25 }else if(n2==3){
26 printf("2 B\n");
27 }
28 }

K.Tokitsukaze and Mahjong

题目:只有所给三个数个数是顺子并且是是同种类型的,或者是三个数相等并且是同种类型的才可以,现在问变成题目中所给类型的任意一种需要改变多少个数

思路:巧用数组进行存储比较

代码:

 1 #include<iostream>
2 #include<algorithm>
3 #include<cstdio>
4 #include<cstring>
5 #include<cmath>
6 using namespace std;
7 const int maxx=4e5+1;
8 long long int a[maxx];
9 long long int b[maxx]={0};
10 int main(){
11 int s[10]={0};
12 int p[10]={0};
13 int m[10]={0};
14 int n=10;
15 for(int i=0;i<3;i++){
16 int num=0;
17 char c;
18 scanf("%1d%c",&num,&c);
19 if(c=='s'){
20 s[num]++;
21 }else if(c=='p'){
22 p[num]++;
23 }else if(c=='m'){
24 m[num]++;
25 }
26 }
27 int flag=0;
28 for(int i=0;i<n;i++){//三个相同 0
29 if(s[i]==3||p[i]==3||m[i]==3){
30 flag=1;
31 }
32 }
33 for(int i=0;i<n;i++){//顺子--0
34 if(s[i]==1&&s[i+1]==1&&s[i+2]==1&&i+2<10){
35 flag=1;
36 }else if(m[i]==1&&m[i+1]==1&&m[i+2]==1&&i+2<10){
37 flag=1;
38 }else if(p[i]==1&&p[i+1]==1&&p[i+2]==1&&i+2<10){
39 flag=1;
40 }
41 }
42 if(flag==1){
43 printf("0\n");
44 }else{
45 for(int i=0;i<n;i++){
46 if(s[i]==2||p[i]==2||m[i]==2){
47 flag=1;
48 }
49 }//两个相同
50 for(int i=0;i<n;i++){
51 if(s[i]>0&&s[i+1]>0&&i+1<10){
52 flag=1;
53 }else if(p[i]>0&&p[i+1]>0&&i+1<10){
54 flag=1;
55 }else if(m[i]>0&&m[i+1]>0&&i+1<10){
56 flag=1;
57 }
58 }//两个紧挨着形成顺子
59 for(int i=0;i<n;i++){
60 if(s[i]>0&&s[i+2]>0&&i+2<10){
61 flag=1;
62 }else if(p[i]>0&&p[i+2]>0&&i+2<10){
63 flag=1;
64 }else if(m[i]>0&&m[i+2]>0&&i+2<10){
65 flag=1;
66 }
67 }//空一格形成顺子
68 if(flag==1){
69 printf("1\n");
70 }else{
71 printf("2\n");
72 }
73 }
74 }

L.Tokitsukaze and Discard Items

题目:一开始有n个数,这些数从1到n编号,每k个数为一组,现在给出m个要删去的特殊数,有一种操作,从第一个包含特殊数的组开始删,一次可以把一组里所有特殊数删掉,删掉数后会有空位,这些空位会被后面的数依次补上,并形成新的组,问最少需要操作多少次

思路:我就用他们的相对位置是不是变动的时候在一页上面比如一个变动完成以后,剩下的多少个都是存在的第一页上的,那就直接忽略,在for循环里面套了一个while循环

代码:

 1 #include<iostream>
2 #include<algorithm>
3 #include<cstdio>
4 #include<cstring>
5 #include<cmath>
6 #include<queue>
7 using namespace std;
8 const int maxx=1e5+10;
9 long long int a[maxx];
10 long long int b[maxx]={0};
11 int main(){
12 long long int n,m,k;
13 scanf("%lld %lld %lld",&n,&m,&k);
14 for(long long int i=0;i<m;i++){
15 scanf("%lld",&a[i]);
16 }
17 sort(a,a+m);
18 long long int sum0=0;
19 long long int flag=(a[0]+(k-1))/k;
20 long long int flagi=0;
21 long long int sum=1;
22 for(long long int i=0;i<m;i++){
23 if((a[i]+(k-1))/k==flag){
24 sum0++;
25 flagi=i;
26 }else{
27 break;
28 }
29 }//sum0--满足条件的第一页上含有的特殊数的个数
30 for(long long int i=flagi+1;i<m;i++){
31 long long int j=i;
32 long long int sum1=0;
33 long long int t=(a[i]-sum0+k-1)/k;
34 while((a[j]-sum0+k-1)/k==t){
35 sum1++;
36 j++;
37 }
38 sum0+=sum1;
39 i=i+sum1-1;
40 sum++;
41 }
42 //printf("flagi:%d\n",flagi);
43 printf("%lld\n",sum);
44
45
46
47 }

感受:这次个人赛总的来说感觉还好,没有wa掉很多的题,一个题也没有wa很多,现在越来越觉得边刷题边学习算法还有一些思维思路才是真正适合自己的方式,只是最近一直在忙着复习也没太多的时间来补cf了,慢慢的也感觉到了自己能力的提升,找到了更浓厚的乐趣,希望赶紧考完试然后就能有时间学习了,好好考试,好好学习算法

12.26vj训练补题的更多相关文章

  1. 2020.12.3--vj个人赛补题

    A Vasya studies music.He has learned lots of interesting stuff. For example, he knows that there are ...

  2. 2020.12.20vj补题

    A - Insomnia cure 题意:一共s只龙,每隔k,l,m,n只龙就会受伤,问这s只龙有多少龙是受伤的 思路:看起来题目范围并不是很多,直接进行循环判断 代码: 1 #include< ...

  3. 第十届山东省acm省赛补题(1)

    今天第一场个人训练赛的题目有点恐怖啊,我看了半个小时多硬是一道都不会写.我干脆就直接补题去了.... 先补的都是简单题,难题等我这周末慢慢来吧... A Calandar Time Limit: 1 ...

  4. [数]补题ver.

    上次补题好像把两次训练混在一起了,总之先按时间顺序补完这一次|ू・ω・` ) HDU-6301 不会的东西不能逃避.jpg 红小豆非常讨厌构造题,因为非常不会,并且非常逃避学习这类题,因为总也搞不清楚 ...

  5. Codeforces VP/补题小记 (持续填坑)

    Codeforces VP/补题小记 1149 C. Tree Generator 给你一棵树的括号序列,每次交换两个括号,维护每次交换之后的直径. ​ 考虑括号序列维护树的路径信息和,是将左括号看做 ...

  6. 【JOISC 2020 补题记录】

    目录 Day 1 Building 4 Hamburg Steak Sweeping Day 2 Chameleon's Love Making Friends on Joitter is Fun R ...

  7. hdu5017:补题系列之西安网络赛1011

    补题系列之西安网络赛1011 题目大意:给定一个椭球: 求它到原点的最短距离. 思路: 对于一个椭球的标准方程 x^2/a^2 + y^2/b^2 +z^2/c^2=1 来说,它到原点的最短距离即为m ...

  8. 2017河工大校赛补题CGH and 赛后小结

    网页设计课上实在无聊,便开始补题,发现比赛时候僵着的东西突然相通了不少 首先,"追妹"这题,两个队友讨论半天,分好多种情况最后放弃(可是我连题目都没看啊),今天看了之后试试是不是直 ...

  9. 2018 HDU多校第四场赛后补题

    2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...

随机推荐

  1. Linux 自定义快捷命令

    Linux中一些比较常用的命令总是重复敲很麻烦,这个时候就可以使用 alias 来自定义快捷命令,用以简化操作.系统会有一些预定义的快捷命令,比如 ll 的效果就和 ls -l 一样. 可以使用 al ...

  2. JAVA面试-计算机网络-TCP三次握手

    学习原因 这个是面试的一个常问热点,所以务必要掌握. 通俗示例 小红是人事部门的员工,现在正在招收IT人员,小明看到招聘信息和待遇,感觉很适合自己,所以准备和小红发消息了解具体情况.而简历在本故事中代 ...

  3. Kafka又出问题了!

    写在前面 估计运维年前没有祭拜服务器,Nginx的问题修复了,Kafka又不行了.今天,本来想再睡会,结果,电话又响了.还是运营,"喂,冰河,到公司了吗?赶紧看看服务器吧,又出问题了&quo ...

  4. 2020牛客NOIP赛前集训营-普及组(第二场)A-面试

    面 试 面试 面试 题目描述 牛牛内推了好多人去牛客网参加面试,面试总共分四轮,每轮的面试官都会对面试者的发挥进行评分.评分有 A B C D 四种.如果面试者在四轮中有一次发挥被评为 D,或者两次发 ...

  5. Java8中的Stream流式操作 - 入门篇

    作者:汤圆 个人博客:javalover.cc 前言 之前总是朋友朋友的叫,感觉有套近乎的嫌疑,所以后面还是给大家改个称呼吧 因为大家是来看东西的,所以暂且叫做官人吧(灵感来自于民间流传的四大名著之一 ...

  6. css详解background八大属性及其含义

    background(背景) 以前笔者在css盒模型以及如何计算盒子的宽度一文中提到过盒模型可以看成由 元素外边距(margin).元素边框(border).元素内边距(padding)和元素内容(c ...

  7. 【DB宝48】JumpServer:多云环境下更好用的堡垒机

    目录 一.JumpServer简介 1.1.页面展示 1.2.特色优势 1.3.功能列表 1.4.架构图 1.5.端口说明 1.6.产品组件 二.安装JumpServer 2.1.一键自动部署 2.2 ...

  8. Go语言操作数据库及其常规操作

    Go操作MySQL 安装: go get -u github.com/go-sql-driver/mysql GO语言的操作数据库的驱动原生支持连接池, 并且是并发安全的 标准库没有具体的实现 只是列 ...

  9. 如何自己设计一个类似dubbo的rpc框架?

    (1)上来你的服务就得去注册中心注册吧,你是不是得有个注册中心,保留各个服务的信息,可以用zookeeper来做,对吧 (2)然后你的消费者需要去注册中心拿对应的服务信息吧,对吧,而且每个服务可能会存 ...

  10. linux下更新gcc

    1 下载源码 链接 目前最新为9.2版本. 2 解压 tar -zxvf gcc-9.2.0.tar.gz cd gcc-9.2.0 3 download_prerequisites脚本 运行这个脚本 ...