8.31

来源:互联网 发布:mac os升级后盗版软件 编辑:程序博客网 时间:2024/05/17 23:29

今天做的是模拟10题  马上要给同学讲解了  所以做得比较透。

第一题:

LUOGU1003题目描述为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 n 张地毯,编号从 1 到n 。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。

这道题也有些细节  因为这个矩形可以很大  (两三万) 所以直接开数组肯定是会炸的。所以要用到离散化(虽然我也不明白什么事离散化 黄涵大佬和我说的 但和我的思路是一样的)  就是读到那个需要的坐标后  对每个地毯进行判断是否覆盖该点 

 AC代码如下:

#include<bits/stdc++.h>using namespace std;int main(){ int n,x[10010],y[10010],x1[10010],y1[10010]; int a,b; scanf("%d",&n); for(int i=1;i<=n;i++)  scanf("%d%d%d%d",&x[i],&y[i],&x1[i],&y1[i]); scanf("%d%d",&a,&b); int s=0; for(int i=1;i<=n;i++)  if((a>=x[i])&&(a<=x[i]+x1[i])&&(b>=y[i])&&(b<=y[i]+y1[i]))     s=i; if(s==0) s--; printf("%d",s); return 0;}
暴力题比较简单。

第二题:

LUOGU1089 题目描述津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。

这题就非常简单了  暴力过
AC代码如下:
#include<bits/stdc++.h>using namespace std;int main (){  int  money=0,n,i=0,save=0;  bool flag=true;  while((i<12)&&(flag))  {   i++;   scanf("%d",&n);   money+=300;   money-=n;   if(money>=100) {n=money/100;money-=n*100;save=save+n*100;}     else if(money<0) flag=false;   }  if (flag) printf("%d",save*120/100+money);    else printf("-%d",i);  return 0;}
第三题:

LUOGU1328

题目描述石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。在《生活大爆炸》第二季第8 集中出现了一种石头剪刀布的升级版游戏。升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势:斯波克:《星际迷航》主角之一。蜥蜴人:《星际迷航》中的反面角色。这五种手势的胜负关系如表一所示,表中列出的是甲对乙的游戏结果。

现在,小A 和小B 尝试玩这种升级版的猜拳游戏。已知他们的出拳都是有周期性规律的,但周期长度不一定相等。例如:如果小 A以“石头 - 布- 石头- 剪刀- 蜥蜴人- 斯波克”长度为6 的周期出拳,那么他的出拳序列就是“石头- 布- 石头- 剪刀- 蜥蜴人- 斯波克- 石头- 布- 石头- 剪刀- 蜥蜴人- 斯波克- ……”,而如果小B 以“剪刀- 石头- 布- 斯波克- 蜥蜴人”长度为5 的周期出拳,那么他出拳的序列就是“剪刀- 石头- 布- 斯波克- 蜥蜴人- 剪刀- 石头- 布-斯波克- 蜥蜴人- ……”已知小A 和小B 一共进行N 次猜拳。每一次赢的人得1 分,输的得0 分;平局两人都得0 分。现请你统计N 次猜拳结束之后两人的得分。

也是暴力  代码如下:

#include<bits/stdc++.h>using namespace std;int main (){  int p,q,n,a,b,A[300],B[300];  int awin=0,bwin=0;  scanf("%d%d%d",&n,&a,&b);  for(int i=1;i<=a;i++)    scanf("%d",&A[i]);  for(int i=1;i<=b;i++)    scanf("%d",&B[i]);  p=0;q=0;   for(int i=1;i<=n;i++)     {     p=p%a+1;    q=q%b+1;    switch(A[p])       {    case 0:switch(B[q])   //a出剪刀     {       case 1:bwin++;break;       case 2:awin++;break;              case 3:awin++;break;              case 4:bwin++;break;           };break;       case 1:switch(B[q])   //a出石头            {              case 0:awin++;break;       case 2:bwin++;break;              case 3:awin++;break;              case 4:bwin++;break;           };break;        case 2:switch(B[q])   //a出布     {       case 0:bwin++;break;       case 1:awin++;break;              case 3:bwin++;break;              case 4:awin++;break;           };break;    case 3:switch(B[q])  //a出蜥蜴人     {       case 0:bwin++;break;       case 1:bwin++;break;              case 2:awin++;break;              case 4:awin++;break;};break;    case 4:switch(B[q])  //a出斯波克     {       case 0:awin++;break;       case 1:awin++;break;              case 2:bwin++;break;              case 3:bwin++;break; };break;      }   } printf("%d %d",awin,bwin); return 0;}
溜了


原创粉丝点击