USACO铜组测试3

T1-奶牛年轮

Dir42. 奶牛年轮
时间限制:1.0s 内存限制:256.0MB
输入文件名:yearcow.in 输出文件名:yearcow.out
试题来源:USACO
问题描述
Farmer John 的奶牛们得知最近正在庆祝牛年的到来时十分兴奋。牛年总是奶牛们的最爱。
我们知道,中国历法中每一年所对应的生肖遵循 12 年的周期:Ox, Tiger, Rabbit, Dragon, Snake, Horse, Goat, Monkey, Rooster, Dog, Pig, Rat(牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪、鼠),然后回到牛。
奶牛 Bessie 自豪地说她是在许多年前的一个牛年出生的。她的朋友 Elsie 想要知道她与 Bessie 出生相差多少年,并且希望你能够通过查看农场上若干奶牛出生年份之间的关系来帮助她推算。
输入格式
输入的第一行包含一个整数 ()。以下 行每行包含一个 8 个单词的短语,指定了两头奶牛的出生年份之间的关系,格式为"Mildred born in previous Dragon year from Bessie"(Mildred 在 Bessie 出生的前一个龙年出生),或"Mildred born in next Dragon year from Bessie"(Mildred 在 Bessie 出生的后一个龙年出生)。
最后一个单词是农场上某一头奶牛的名字,为 “Bessie” 或一头已经在之前的输入中出现过的奶牛。
第一个单词是农场上某一头奶牛的名字,不为 “Bessie” 且未在之前的输入中出现过。所有的奶牛名字不超过 10 个字符,且仅包含字符 a…z 或 A…Z。
第 5 个单词是上述十二生肖之一。
第 4 个单词是 “previous”(之前)或 “next”(之后)之一。例如,如果短语为 “Mildred born in previous Dragon year from Bessie”,则 Mildred 的出生年份为最为接近且严格处于 Bessie 的出生年份之前(不等于)的龙年。
输出格式
输出 Bessie 和 Elsie 的出生年份之间相差的年数。输入保证可以通过给定的信息求出结果。
输入样例
4
Mildred born in previous Dragon year from Bessie
Gretta born in previous Monkey year from Mildred
Elsie born in next Ox year from Gretta
Paulina born in next Dog year from Bessie
输出样例
12
样例说明
在以上的输入中,
Elsie 在 Bessie 之前 12 年出生。
Mildred 在 Bessie 之前 9 年出生。
Gretta 在 Bessie 之前 17 年出生。
Paulina 在 Bessie 之前 9 年出生。

这一题我是用一组字符串存一下生肖顺序,再根据是之前还是之后出生判断一下年份。
我是将Bessie出生年份定义为300(当然也可以直接设为0更省事一些),每读入一头牛就算出他的出生年份,读到Elsie时停止(因为题目保证:

“最后一个单词是农场上某一头奶牛的名字,
为 "Bessie" 或一头已经在之前的输入中出现过的奶牛。
第一个单词是农场上某一头奶牛的名字,
不为 "Bessie" 且未在之前的输入中出现过。”


但是不知为什么就是“运行出错”,仅得20分!
int全改成long long后就是90分,但是题目中数据也不会爆int呀。
只能先搁一下了。
附上90分代码:

#include <bits/stdc++.h>
using namespace std;long long n;
string s[20]={"","Ox","Tiger","Rabbit","Dragon","Snake","Horse","Goat","Monkey","Rooster","Dog","Pig","Rat"};struct nod{long long num;string s1,s2,s3,s4,s5,s6,s7,s8;
}a[110];void cmp(long long ii){long long look1,find;if(ii==1){for(long long i=1;i<=12;++i)if(s[i]==a[ii].s5){find=i;break;}if(a[ii].s4=="previous"){if(find-1>=0)a[ii].num=(find-1)-12+300;else a[ii].num=(find-1)+300;}else{if(find-1>0)a[ii].num=find-1+300;else a[ii].num=find-1+300+12;}return;}for(long long i=1;i<ii;++i){if(a[i].s1==a[ii].s8)look1=i;}long long look,ans=a[look1].num;string ans1=a[look1].s5;for(long long i=1;i<=12;++i){if(s[i]==a[ii].s5)find=i;if(s[i]==ans1)look=i;}if(a[ii].s4=="previous"){if(find-look>=0)a[ii].num=find-look-12+a[look1].num;else a[ii].num=find-look+a[look1].num;}else{if(find-look>0)a[ii].num=find-look+a[look1].num;else a[ii].num=find-look+a[look1].num+12;}
}void readp(){a[1].num=300;long long test;cin>>n;for(long long i=1;i<=n;++i){cin>>a[i].s1>>a[i].s2>>a[i].s3>>a[i].s4>>a[i].s5>>a[i].s6>>a[i].s7>>a[i].s8;cmp(i);if(a[i].s1=="Elsie"){test=i;}}cout<<abs(a[test].num-300)<<endl;
}int main(){freopen("yearcow.in","r",stdin);freopen("yearcow.out","w",stdout);readp();fclose(stdin);fclose(stdout);return 0;
}

T2-舒适的牛

Dk8tl. 舒适的牛
时间限制:1.0s 内存限制:256.0MB
输入文件名:comfortable.in 输出文件名:comfortable.out
试题来源:USACO
问题描述
Farmer John 的草地可以被看作是一个由正方形方格组成的巨大的二维方阵(想象一个巨大的棋盘)。初始时,草地上是空的。
Farmer John 将会逐一地将 N()头奶牛加入到草地上。第 i 头奶牛将会占据方格 (xi,yi),不同于所有已经被其他奶牛占据的方格(0≤xi,yi≤1000)。
一头奶牛被称为是「舒适的」,如果它水平或竖直方向上与恰好三头其他奶牛相邻。Farmer John 对他的农场上舒适的奶牛数量感兴趣。对 1…N 中的每一个 i,输出第 i 头奶牛加入到草地上之后舒适的奶牛的数量。
输入格式
输入的第一行包含一个整数 N。以下 N 行每行包含两个空格分隔的整数,表示一头奶牛所在的方格坐标 (x,y)。输入保证所有方格的坐标是不同的。
输出格式(输出至终端 / 标准输出)
输出的第 i 行包含前 i 头奶牛加入到草地上之后舒适的奶牛的数量。
输入样例
8
0 1
1 0
1 1
1 2
2 1
2 2
3 1
3 2
输出样例
0
0
0
1
0
0
1
2
样例说明
在前四头奶牛加入之后,位于 (1,1) 的奶牛是舒适的。
在前七头奶牛加入之后,位于 (2,1) 的奶牛是舒适的。
在前八头奶牛加入之后,位于 (2,1) 和 (2,2) 的奶牛是舒适的。
测试点性质
测试点 1-4 满足 N≤400。
测试点 5-12 没有额外限制。

这一题不算太难,简单模拟一下是O(n2)算法,每放入一头牛就在一个数组里标记一下,检查一下整片草地。
但是这样肯定不划算!。。
为什么?---->
因为每加入一头牛,可能会有哪些牛状态改变?
只有他本身和周围。。
,,其实我一开始数组少开一个0,结果,,

#include <bits/stdc++.h>
using namespace std;int n,ans[1010][1010];
short x[100010],y[100010];
bool vh[1010][1010];void readp(){cin>>n;int cnt=0;for(int i=1;i<=n;++i){cin>>x[i]>>y[i];vh[x[i]][y[i]]=1;if(vh[x[i]+1][y[i]]&&ans[x[i]+1][y[i]]==3)--cnt;if(vh[x[i]-1][y[i]]&&ans[x[i]-1][y[i]]==3)--cnt;if(vh[x[i]][y[i]+1]&&ans[x[i]][y[i]+1]==3)--cnt;if(vh[x[i]][y[i]-1]&&ans[x[i]][y[i]-1]==3)--cnt;ans[x[i]+1][y[i]]++;if(x[i]!=0)ans[x[i]-1][y[i]]++;ans[x[i]][y[i]+1]++;if(y[i]!=0)ans[x[i]][y[i]-1]++;if(vh[x[i]+1][y[i]]&&ans[x[i]+1][y[i]]==3)++cnt;if(x[i]>0&&vh[x[i]-1][y[i]]&&ans[x[i]-1][y[i]]==3)++cnt;if(vh[x[i]][y[i]+1]&&ans[x[i]][y[i]+1]==3)++cnt;if(y[i]>0&&vh[x[i]][y[i]-1]&&ans[x[i]][y[i]-1]==3)++cnt;if(ans[x[i]][y[i]]==3)++cnt;printf("%d\n",cnt);}
}int main(){freopen("comfortable.in","r",stdin);freopen("comfortable.out","w",stdout);readp();fclose(stdin);fclose(stdout);return 0;
}

T3-旋转方向

Dj540. 旋转方向
时间限制:1.0s 内存限制:256.0MB
输入文件名:direction.in 输出文件名:direction.out
试题来源:USACO
问题描述
围绕 Farmer John 最大的草地的栅栏已经损坏了,如今他终于决定要换一个新的栅栏。
不幸的是,当 Farmer John 在铺设新栅栏时,一只巨大的蜜蜂突然出现,在他的草地上追着他跑,导致最后栅栏被沿着一条相当不规则的路径铺设。栅栏可以用一个字符串表示,每个字符为 “N”(north,北)、“E”(east,东)、“S”(south,南)、“W”(west,西)之一。每个字符表示一米长的一段栅栏。举例来说,如果字符串为 NESW,这表示栅栏从起点开始向北延伸 1 米,然后向东延伸 1 米,然后向南延伸 1 米,然后向西延伸 1 米,回到栅栏的起点。
栅栏的结束位置与开始位置相同,而这是栅栏的路径上唯一会被到达多次的位置(从而起始位置是唯一会被再次到达的位置,在栅栏结束之时)。结果,栅栏确实围起了一个草地上连通的区域,尽管这个区域可能形状十分奇特。
Farmer John 想要知道他铺设栅栏的路径是顺时针(当按字符串表示的顺序沿着栅栏的路径行走时被围起的区域位于右侧)还是逆时针(被围起的区域位于左侧)。
输入格式
输入的第一行包含一个整数 N(1≤N≤20)。
以下 N 行每行包含一个长度不小于 4 且不超过 100 的字符串,表示一个栅栏的路径。
输出格式
对 N 条输入的栅栏路径的每一条,输出一行,为 “CW”(clockwise,顺时针)或 “CCW”(counterclockwise,逆时针)。
输入样例
2
NESW
WSSSEENWNEESSENNNNWWWS
输出样例
CW
CCW
样例说明
以下为这两条栅栏路径,用 @ 表示起始位置:

*>*
^ v
@<*
  *<*<*<*v     ^
*<@     *
v       ^
* *>*>* *
v ^   v ^
* *<* * *
v   ^ v ^
*>*>* *>*

这题主要在于分析。
首先要明白,既然首尾相接,那说明他肯定是旋转一周后回来的,正好转了360°,也就是说,除了这四个转弯,其余转弯均有与其对应的相反的转弯。
所以我们可以将左转90°(即逆时针旋转)记为-90°
右则记为+90°。
而顺时针方向的牛圈就必定多出4个右转无法与其他对应,逆时针则多4个左转。
于是最后判断是+360°还是-360°。

#include <bits/stdc++.h>
using namespace std;int n;
string s;int cmp(char a,char b){if(a==b)return 0;if(a=='N'&&b=='E')return 90;if(a=='E'&&b=='S')return 90;if(a=='S'&&b=='W')return 90;if(a=='W'&&b=='N')return 90;return -90;
}int main(){freopen("direction.in","r",stdin);freopen("direction.out","w",stdout);cin>>n;for(int i=1;i<=n;++i){cin>>s;int pos=s.size(),ans=0;for(int j=0;j<pos;++j)if(j==pos-1)ans+=cmp(s[j],s[0]);else ans+=cmp(s[j],s[j+1]);if(ans==360)cout<<"CW"<<endl;else cout<<"CCW"<<endl;}fclose(stdin);fclose(stdout);return 0;
}

USACO铜组测试3相关推荐

  1. Fortinet“安立方”架构获得NSS Labs BDS 组测试多攻击维度100%检出率佳绩

    Fortinet(NASDAQ:FTNT),近日公布了在NSS Labs最新违规检测系统(BDS:Breach Detection System) 组测试 中的成绩.Fortinet参加测试的沙箱解决 ...

  2. (保守群组测试 非保守群组测试 二次重复测试 自适应二次重复测试)四种群体测试的C++代码

    目录 原理 保守组检测 非保守组检测 二次重复测试 自适应二次重复测试 四种测试方法的核心代码 保守群组测试 非保守群组测试 二次重复测试与自适应二次重复测试 测试代码 参考文献 原理 假设该病在人群 ...

  3. testNG之组测试

    @Test(groups = {""}) 在执行测试用例的时候,往往一个功能依赖多个测试用例,比如流程的测试,那么这个时候就可以用到组测试,把流程涉及到测试用例都分到同一组里,按组 ...

  4. 链接:https://ac.nowcoder.com/acm/problem/22228来源:牛客网题目描述 在给定的数组中删除一个数。输入描述:多组测试。每组第一行输入1个整数n(n

    链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 在给定的数组中删除一个数. 输入描述: 多组测试. 每组第一行输入1个整数n(n<20), 第二行输入n个整数 第三行输入1 ...

  5. Fortinet安立方架构获得NSS Labs BDS 组测试多攻击维度100%检出率佳绩

    Fortinet公司产品和解决方案高级副总裁John Maddison "网络罪犯正以惊人的速度不断开发新的攻击策略,从数据泄露到完全入侵仅需几分钟的情况也不是不可能.这使得快速检测和自动响 ...

  6. 群组测试(Group testing)介绍

    最近了解了群组测试 (Group testing) 的一些内容,在这里做个记录与分享. 问题引入 问题源于二战时期,美国需要通过血样检测美军是否携带梅毒,但是当时血液检测耗时耗钱,将每个士兵的血液都检 ...

  7. USACO刷题记录:2020铜组第二题Daisy Chains

    原题目链接:http://www.usaco.org/index.php?page=viewproblem2&cpid=1060 题目在这里复制一下: 每天,作为她绕农场行走的一部分,奶牛 B ...

  8. 电池pack结构_3C锂电池pack中,使用弹片微针模组测试基本性能和大电流

    3C锂电池有着循环寿命长.低温度放电性能好.续航能力强.比能量高.荷电保持能力强的优点,在3c消费电子领域方面应用范围广泛.由于3c锂电池的广泛应用,需求量极大,很多厂家开始自己掌握3C锂电池pack ...

  9. CSP 2021考前每日2题(10-2)洛谷 P5020 货币系统 + USACO2021铜组 Uddered but not Herd

    文章目录 P5020 [NOIP2018 提高组] 货币系统 USACO : Uddered but not Herd P5020 [NOIP2018 提高组] 货币系统 #include <c ...

最新文章

  1. poj 2681 字符串
  2. Python 包安装和 postgresql 的一些问题
  3. 根据经纬度批量计算多个点到多个点之间的距离
  4. lazarus开发android应用程序指南,Lazarus开发Android应用程序指南(2)
  5. bootstrap中关于兼容ie8 和 rem的问题总结
  6. 多线程读取视频及深度学习推理
  7. Labview如何建立与远程MS SQL数据库的连接
  8. 最近开发的NFC读写器控制软件
  9. 【宝藏系列】推荐几款免费的视频转文字字幕的软件
  10. 美通企业日报 | 易车收到腾讯等私有化要约;沃尔玛中国推出快时尚品牌George...
  11. MATLAB ttest和ttest2的区别
  12. Windows10常用Windows自检方法
  13. 售前笔记(三)——PPT方案
  14. 漫谈程序员系列:请区别对待女程序员
  15. 上市4天暴降1500元,iPhone14创下了苹果降价最快纪录
  16. android wms布局过程,深入理解WMS
  17. 想提高团队技术,来试试这个套路!
  18. 2021年Java发展怎么样?现在学了Java技术出来是否还能找到工作?
  19. 当年锥子的大爆炸,如今12个语言版本都可轻松搞定!
  20. Edwards推出市场上抽吸速度最高的新款紧凑型干式真空泵

热门文章

  1. 基于Java企业办公自动化系统设计实现(源码+lw+部署文档+讲解等)
  2. 陕西省10个地级市行政区划 (2023)
  3. 【大厂直通车】小红书日常实习_测开面经
  4. 第二天运行项目 报错 import fitz not module named ‘frontend’
  5. 复制目录本身和不复制目录本身的区别
  6. 单精度浮点数存储、双精度浮点数存储
  7. 华为python语言通用编程规范 模块导入顺序_Python编程规范
  8. python 汉字数字分割问题
  9. 蓝桥杯 15决赛 A2 四阶幻方(剪枝)
  10. elementui 上传图片 合集