2017.8.29-9.4
来源:互联网 发布:网络交友的危害 编辑:程序博客网 时间:2024/06/05 03:42
这几天是十分充实而有意义的!!
和一群有着相同爱好的目标的人一起努力!!
老师家里有事回老家了 一些教学的任务就落在我们四个以前学过的人身上(说是“大佬”其实就是蒟蒻)
一直认真的研究自己负责的五道题
其实就是几道模拟水题.....
P1089 津津的储蓄计划
模拟 模拟 模拟 模拟唯一的点就是 最后不能直接*1.2 因为 int 是自动去尾的 会让你和答案有出入 所以这里要用一个小细节 (*120/100)
上代码(代码极水一看就懂):
#include<bits/stdc++.h>//蒟蒻代码 不喜勿喷 using namespace std;int a[20];int main(){for (int i=1;i<=12;i++)scanf("%d",&a[i]);//输入12个月的预算int sum=0;int cun=0;//要存到麻麻那里的钱 for (int i=1;i<=12;i++){ sum+=300; if (sum<a[i]) { printf("%d",-i); exit(0);//退出整个程序..... } sum-=a[i];//减去预算 cun+=(sum/100)*100;//交给麻麻 sum=sum%100;} sum+=cun*120/100;//这波操作很关键 //如果你直接*1.2 int是去尾的 你会发现和答案差一点点//*120/100就可以避免 printf("%d",sum); return 0; }
P1202 [USACO1.1]黑色星期五Friday the Thirteenth
这题更水个人感觉 直接循环年份 月份 日期 处理好闰年和星期就好
直接上代码:
#include<bits/stdc++.h>//蒟蒻代码 不喜勿喷using namespace std;int a[10];//记录次数 int b[20];int main(){int n;scanf("%d",&n);int xiqi=0;b[1]=31;b[2]=28;b[3]=31;b[4]=30;b[5]=31;b[6]=30;b[7]=31;b[8]=31;b[9]=30;b[10]=31;b[11]=30;b[12]=31;for (int i=1900;i<=1900+n-1;i++)for (int j=1;j<=12;j++){ if((i%4==0&&i%100!=0)||i%400==0){ b[2]=29; }//判断今年是不是闰年 else b[2]=28;for (int k=1;k<=b[j];k++){ xiqi++; if (xiqi>7) xiqi=1; if (k==13) a[xiqi]++; } }printf("%d %d ",a[6],a[7]);//这题真的坑现输出星期六和星期天题目也没说明!!! for (int i=1;i<=5;i++) printf("%d ",a[i]); return 0; }
P1518 两只塔姆沃斯牛 The Tamworth Two
这题我觉得是五题里面最难的一道 有很多难处理的东西
首先 很多同学在处理农夫和牛的位置的时候都是用交换的 这个方法咋一看没毛病 其实问题很大
举个例子:
农夫和牛的位置如下:
C
F
如果此时农夫是向上走的 你用交换的话 会使牛换下来 导致一系列错误
所以我的方法是记录农夫和牛的实时位置就好 不需要改动读进去的矩阵
其次 判断抓不住的时候 有2种方法
第一种当然就是设一个很大的常数 超过 就说明不能抓住
第二种是我无意间看到的大佬的方法 :
记录农夫和牛走过一个位置的次数
如果到达五次 就说明 无法抓到 //需要细细体会
代码如下:
#include<bits/stdc++.h>using namespace std;char a[20][20];int heng[5];int shu[5];int main(){heng[0]=0;heng[1]=1;heng[2]=0;heng[3]=-1;shu[0]=-1;shu[1]=0;shu[2]=1;shu[3]=0;int x1,y1;//记录农夫的位置int x2,y2;//记录奶牛的位置 for (int i=0;i<=11;i++)for (int j=0;j<=11;j++) a[i][j]='*';//将边界设为障碍 for (int i=1;i<=10;i++) for (int j=1;j<=10;j++) {cin>>a[i][j]; if (a[i][j]=='F') {x1=i;y1=j;} if (a[i][j]=='C') {x2=i;y2=j;} } int x=x1,y=y1; int i=x2,j=y2;int time=0;int fx1=0,fx2=0;//刚开始都是向北走 int sum=0;//记录农夫回到初始的次数 //如果农夫回到初始位置达五次说明无法抓住while (1){time++; // if (x1==x && y1==y&&x2==i&&y2==j) sum++; // if (sum==4) {cout<<0;exit(0);} if (a[x1+shu[fx1]][y1+heng[fx1]]!='*') { x1+=shu[fx1]; y1+=heng[fx1]; } else fx1=(fx1+1)%4; if (a[x2+shu[fx2]][y2+heng[fx2]]!='*') { x2+=shu[fx2]; y2+=heng[fx2]; } else fx2=(fx2+1)%4;if (x1==x2&&y1==y2){ cout<<time; exit(0); } if (time>10000000) {cout<<0;exit(char a[20][20];int heng[5];int shu[5];int main(){heng[0]=0;heng[1]=1;heng[2]=0;heng[3]=-1;shu[0]=-1;shu[1]=0;shu[2]=1;shu[3]=0;int x1,y1;//记录农夫的位置int x2,y2;//记录奶牛的位置 for (int i=0;i<=11;i++)for (int j=0;j<=11;j++) a[i][j]='*';//将边界设为障碍 for (int i=1;i<=10;i++) for (int j=1;j<=10;j++) {cin>>a[i][j]; if (a[i][j]=='F') {x1=i;y1=j;} if (a[i][j]=='C') {x2=i;y2=j;} } int x=x1,y=y1; int i=x2,j=y2;int time=0;int fx1=0,fx2=0;//刚开始都是向北走 int sum=0;//记录农夫回到初始的次数 //如果农夫回到初始位置达五次说明无法抓住while (1){time++; // if (x1==x && y1==y&&x2==i&&y2==j) sum++; // if (sum==4) {cout<<0;exit(0);} if (a[x1+shu[fx1]][y1+heng[fx1]]!='*') { x1+=shu[fx1]; y1+=heng[fx1]; } else fx1=(fx1+1)%4; if (a[x2+shu[fx2]][y2+heng[fx2]]!='*') { x2+=shu[fx2]; y2+=heng[fx2]; } else fx2=(fx2+1)%4;if (x1==x2&&y1==y2){ cout<<time; exit(0); } if (time>10000000) {cout<<0;exit(0);} } return 0; }0);} } return 0; }
P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers
这题目就是考你字符串的应用
这题我们会用到字符串数组
还有就是除不尽的情况要将未除完的钱保存起来
上代码:
#include<bits/stdc++.h>//蒟蒻代码 不喜勿喷 using namespace std;int a[200];//记录收到的钱 int b[200];//记录送出的钱 int sum;int n;string name[200];//记录名字 string s;void search(string ss)//找到他是第几个 { for (int i=1;i<=n;i++) { if (ss==name[i]) {sum=i; break; } } return; }int main(){scanf("%d",&n);for (int i=1;i<=n;i++) cin>>name[i];int x,y;for (int i=1;i<=n;i++){ cin>>s; cin>>x>>y; if (y==0) { search(s); a[sum]+=x; continue; } int num=x/y; search(s); a[sum]+=x-num*y;//将没除完的钱保存起来 b[sum]+=x; for (int k=1;k<=y;k++) { cin>>s; search(s); a[sum]+=num; } } for (int i=1;i<=n;i++) { cout<<name[i]<<" "; cout<<a[i]-b[i]<<endl; } return 0; }
以上就是这几天一直努力的结果
帮十几个人改了代码 也了解到一些常犯的错误 (能看出错误说明自己不会犯!!)
这几天十分有意义 感谢岳老师给我这个机会
我会继续在oi道路上努力的走下去 !!!!!
加油
!!!!!!
!!!!!!
阅读全文
2 0
- 2017.8.29-9.4
- 2017.8.29
- 2017.8.29
- 2017.8.29 miniblink更新日记
- 9.4
- 2017.8
- [笔试编程]2017.8.29腾讯模拟,满二叉排序树找最小子树
- 2017.8.14--2017.8.25
- 9.4 Tokens
- 9.4. Zend_Config_Xml
- 9.4 - 9.6
- 黄迪明9.4
- cpp 9.4
- Refletion2017.9.4
- 2017.8.1
- 2017.8.2
- 2017.8.5
- 2017.8.7
- golang-defer坑的本质
- rownum用法详解
- select2 asp.net mvc jquery.validate.js jquery.validate.unobtrusive.js不能完美结合问题
- 前端试题
- EventBus的使用详解和封装
- 2017.8.29-9.4
- 当页面图片不存在时的处理方法
- MyBatis传入参数为list、数组、map写法
- [初学笔记] try...catch...end语句
- Ubuntu软件更新时出错问题解决
- 栈的实现(数组与链表实现)
- 使用IntelliJ IDEA 配置Maven(入门)
- 学习”OpenGL视频教程“小结
- 新手关于 Vue Slot 的理解