题目链接:】http://codeforces.com/group/NVaJtLaLjS/contest/238202

感想 emmmm,这套题有个特点,代码量小的考思维,而那些一眼看过去思路就有了,就是模拟到你死,代码量超级大,毫无疑问一遇到模拟题我就枯,所以这次被lwk锤爆

A. Out of Sorts(思维)
题意: 给你一个数组,问你需要经过几次冒泡排序,使其变成一个有序的数组

思路: 由于在冒泡排序过程中,会把一个较大的数往后面排,在这过程中有一些数也会被动交换,所以我们只需要找到一个需要移到前面最大的次数(也就是说有多少个数向后面移动,每次冒泡只会把一个最大的数移到最后,有几个数就需要冒多少次)

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
struct node
{int x,id;
}a[100005];
bool cmp(node c,node d)
{if(c.x==d.x)return c.id<d.id;return c.x<d.x;}
int main()
{int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i].x);a[i].id=i;}sort(a+1,a+1+n,cmp);int cnt=0,cnt1=0;for(int i=1;i<=n;i++){if(a[i].id>i)cnt=max(a[i].id-i,cnt);}cout<<cnt+1<<endl;return 0;
}

B. Milking Order(拓扑排序+二分)
题解链接: https://blog.csdn.net/qq_42819598/article/details/87925942

C. Team Tic Tac Toe(模拟)
题意: 井字棋,给出一个填好的图,问一个人赢的有几个,两个人组队赢的有几个
思路: 要注意这道题要去重例如一个人可能有好几组三个相连的,但是算一个赢,有个大佬的思路可以减少许多代码量的去重
一组去重比较容易,两组去重比较麻烦,可以把两个一组符合条件的就存两个不同的编号相加,这样就可以不用判重,每种情况都可以被存下来

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
char mp1[5][5];
int a[1000],mp[5][5],num[10],vis[1000];
int s(int i,int j,int k,int id)
{if(i==j&&i==k){a[id]=i;return 1;}else if(i!=j&&j!=k&&i!=k){a[id]=i+j+k;return 3;}else if(i==j&&i!=k){a[id]=i+k;return 2;}else if(i==k&&i!=j){a[id]=i+j;return 2;}else if(k==j&&k!=i){a[id]=k+j;return 2;}return 0;
}
int main()
{for(int i=0;i<3;i++)cin>>mp1[i];for(int i=0;i<3;i++){for(int j=0;j<3;j++)mp[i][j]=mp1[i][j]-'A'-'\0'+1;}int cnt=0,cnt1=0;num[1]=s(mp[0][0],mp[0][1],mp[0][2],1);num[2]=s(mp[1][0],mp[1][1],mp[1][2],2);num[3]=s(mp[2][0],mp[2][1],mp[2][2],3);num[5]=s(mp[0][0],mp[2][0],mp[1][0],5);num[6]=s(mp[0][2],mp[1][2],mp[2][2],6);num[7]=s(mp[0][1],mp[1][1],mp[2][1],7);num[4]=s(mp[0][0],mp[1][1],mp[2][2],4);num[8]=s(mp[0][2],mp[1][1],mp[2][0],8);for(int i=1;i<=8;i++){if(num[i]==1&&vis[a[i]]==0)cnt++;vis[a[i]]=1;}memset(vis,0,sizeof vis);for(int i=1;i<=8;i++){if(num[i]==2&&vis[a[i]]==0)cnt1++;vis[a[i]]=1;}cout<<cnt<<endl<<cnt1<<endl;return 0;
}

D. Lemonade Line(签到提+贪心)
题意:
思路:

E. Family Tree(模拟)
题意: 给你一些人之间的关系树,问里面两个人之间有什么关系
思路: 找到两个人最近的公共祖先,计算节点的深度从而判断除二者之间的关系,若没有公共祖先则没有关系,若判断A是B的侄女,应该反过来写成 B是A的姑姑

#include<bits/stdc++.h>
using namespace std;
string mother[105],cow[105];
int n;
string fid(string a)
{for(int i=1;i<=n;i++){if(a==cow[i])return mother[i];}return "";
}
int is(string a,string b)
{int cnt=0;while(b!=""){if(a==b)return cnt;b=fid(b);cnt++;}return -1;
}
int main()
{string  a,b;cin>>n>>a>>b;for(int i=1;i<=n;i++){cin>>mother[i]>>cow[i];}string now=a;int cnta=0;while(now!=""){if(is(now,b)!=-1)break;now=fid(now);cnta++;}if(now==""){cout<<"NOT RELATED"<<endl;return 0;}int cntb=is(now,b);if(cnta==cntb&&cnta==1){cout<<"SIBLINGS"<<endl;return 0;}else if(cnta>1&&cntb>1){cout<<"COUSINS"<<endl;return 0;}else {if(cnta<cntb){swap(a,b);swap(cnta,cntb);}cout<<b<<" is the ";for(int i=0;i<cnta-2;i++)cout<<"great-";if(cnta>1&&cntb==0)cout<<"grand-";if(cntb==0)cout<<"mother";elsecout<<"aunt";cout<<" of "<<a<<endl;}return 0;
}

F. Out of Sorts II(思维+树状数组)
题意: 对冒泡排序进行改良,变成双向冒泡,问需要冒几次,才能把一个序列变成有序

思路: 由于双向,所以每次都有一个小的往前冒,一个大的往后冒,所以我们需要求在前i个位置里面在排序之后,却不在前i个位置里面的个数,遍历1-n求出最大的个数,用树状数组优化一下,得出冒泡的次数

#include<bits/stdc++.h>
using namespace  std;
const int maxx=1e5+5;
struct node
{int x,id;
}a[maxx];
bool cmp(node a,node b)
{if(a.x==b.x)return a.id<b.id;return a.x<b.x;
}
int sum[maxx];
void add(int x)
{while(x<maxx){sum[x]++;x+=x&(-x);}
}
int ask(int x)
{int ans=0;for(int i=x;i>0;i-=i&(-i)){ans+=sum[i];}return ans;
}
int main()
{int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i].x;a[i].id=i;}int ans=0;sort(a+1,a+1+n,cmp);for(int i=1;i<=n;i++){add(a[i].id);ans=max(ans,i-ask(i));}cout<<max(ans,1)<<endl;return 0;
}

GDUT 寒假排位赛三相关推荐

  1. GDUT 寒假排位赛二

    直接看题 [题目链接]: http://codeforces.com/group/NVaJtLaLjS/contest/238204 A. Taming the Herd(签到题) 题意: 有一张表, ...

  2. 寒假集训三(暴力枚举)2020.01.02(11题)

    寒假集训三(暴力枚举)id :521 Problem:A 二倍的问题 Description 给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍.比如给 ...

  3. 寒假作业三:抓老鼠,亏了还是赚了

    7-1 抓老鼠啊~亏了还是赚了? (20 分) 某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块 ...

  4. 面向对象课程 - 寒假第三次作业 - C++计算器项目初始部分

    C++计算器项目初始部分 零.项目源文件地址 传送门:calculator 一.项目信息相关: 项目:Calculator 版本:1.0 日期:2016.2.16 实现: 基本的操作界面 对四则运算表 ...

  5. 排位赛三B. Loan Repayment

    Farmer John 欠了 Bessie N 加仑牛奶(1<=N<=1e12).他必须在 K 天内将牛奶给 Bessie.但是,他不想将牛奶太早拿出手.另一方面,他不得不在还债上有所进展 ...

  6. 寒假第三周学习总结与反思

    这次一共是11天的时间,学了很多东西,首先是结束了操作系统的学习,开学在做一个项目熟悉一下,又重新学了一遍Python基础,又学了直流电机.PID.机械臂.后面又学了怎么用openmv跑神经网络.再接 ...

  7. 2020大一寒假培训三 (暴力)

    比例简化 Problem:J Time Limit:1000ms Memory Limit:65535K Description 在社交媒体上,经常会看到针对某一个观点同意与否的民意调查以及结果.例如 ...

  8. 2017 ZSTU寒假排位赛 #8

    题目链接:https://vjudge.net/contest/149845#overview. A题,水题. B题,给出 p个 第一个人的区间 和 q个第二个人的区间,问[l,r]中有多少个整数满足 ...

  9. 2019寒假第三次作业

    学习视频课程(20') 无 实验题(30'+120') 热身题(30') 基本题 (120') 获取用户请求(15') 请求格式处理(25') 格式处理代码 import re f=open(&quo ...

最新文章

  1. ubuntu 压缩率最高的软件_不用写采集规则也可以轻松采集网站文章,揭秘一款明泽文章采集软件的工作原理...
  2. HDU-2612 Find a way
  3. folders默认配置 shell_更改windows默认的User Shell Folders
  4. python 相对导入_python 相对导入与绝对导入
  5. servlet乱码 解决方法 2种方法
  6. 配置silverlight 2的开发环境
  7. 远程配置jupyter notebook
  8. 详解机器视觉照明重点内容
  9. BUAA软工第0次作业
  10. 撩课-Java面试宝典-第十六篇
  11. matlab矩阵运算程序,matlab矩阵运算
  12. 【刘润五分钟商学院】156对对抗思考到平行思考
  13. 从零开始学习Openwrt教程
  14. Arduino零基础入门
  15. 计算机视觉、图像处理学习资料汇总
  16. 索引顺序查找(分块查找)
  17. wps和office哪个好用 wps和office兼容吗
  18. 谷歌浏览器无法记住密码问题
  19. 实验四、SPOOLing技术
  20. Java Web和Java后端学习之路

热门文章

  1. 工字型钢弹性截面模量计算公式_型钢计算公式2
  2. c++键盘按键监控以及键值表
  3. ik上校_如何在Android上校准指南针以提高设备位置精度
  4. CityEngine2019 学习笔记 (1)一 基本操作
  5. 如何将web项目部署到远程桌面,通过远程地址访问web项目
  6. 一个程序员的基本素质
  7. PHP API接口数据简单快速的加密解密
  8. win7下常用截图工具snipaste,常用gif制作工具ScreenToGif使用方法
  9. csv(逗号分隔值)文件用Excel编辑
  10. Linux常用命令大全(详细版)