电子科大题目

三国

 

Time Limit: 1000 ms Memory Limit: 65535 kB
Solved: 22 Tried: 63

 

Description

        话 说在三国时代,曹操曾亲率大军追打刘备,刘备势单力薄,只得向盟友孙权借兵,接下来,我将对这场战争作具体描述。战争发生在中国大陆上(一张二维平面), 刘备的大本营在成都,坐标(0,0),曹操的大军和孙权的援兵都驻扎在成都的周围,将用一个坐标点表示,不同地方驻扎的兵力有所不同,但所有人的行进速度 都是单位1。战争一开始,曹操所有的部队同时向刘备进发,此时幸得诸葛亮神机妙算,知道曹操来了,于是就叫他的主公刘备立刻派出使者从成都出发到孙权所有 的军营借兵(每个军营都派有使者,向各军营借兵是独立的;使者走后,成都的守城部队并不会减少),使者到了一个军营,那个军营所有的援兵开始启程增援成 都,增援部队到达成都后将一直停留在成都,直到整场战争结束。任何一个战役的胜负只取决于双方投入兵力的多少,兵力多的方胜,少的方负,一样多则战平;所 有人走的都是最短路线,且不是必须平行于x轴和y轴行走。
 

 

Input

        输入包含多组数据。首先输入一个整数T,表示有T组测试数据。对于每组数据,首先输入一个整数P,表示成 都自己有的兵力;接着输入一个整数N,表示曹操的部队数量,接下来的N行,每行3个整数x,y,n,表示曹操N个部队的坐标,和对应部队的兵力;接着又是 一个整数M,表示孙权的部队数量,接着的M行就是部队描述。 (0 <= P,n <= 10000), (-10000 <= x,y <= 10000), (0 <= N,M <= 1000)。

 

 

Output
        对于每组测试数据,首先输出“Case #k: ”,k为样例数,接着要是成都可以保下来(即在曹操的所有进攻中,刘备的兵力加上孙权的援兵都不少于曹操的进攻兵力),输出“Yes”,否则输出 “No”。详见样例。
 

 

Sample Input
2

10
2
1 0 10
3 0 10
1
0 1 10

10
2
1 0 10
3 0 10
1
0 2 10
 

 

Sample Output
Case #1: Yes
Case #2: No
 

 

Hint
第一组样例,部队(1,0)在时刻1到达成都,此时成都的兵力刚好能够抵抗,孙权的部队(0,1)在时刻2到达成都,刚好抵抗时刻3到达成都的曹操的部队(3,0),所以成都得保。而第二组样例中,孙权的部队(0,2)要在时刻4才到成都,那时成都已经沦陷了。

注意:战役双方如果分别有人数为a, b的部队,则打完之后较多的一方剩余abs(a - b)的部队

我的re代码:
View Code
 1 #include <iostream>
2 #include <cmath>
3 #include <cstdlib>
4 #include <cstdio>
5 using namespace std;
6 const int Max=101000;
7 typedef struct node
8 {
9 double dis;
10 int p;
11 }Node;
12 Node f1[Max],f2[Max];
13
14 int cmp(const void *a,const void *b)
15 {
16 Node *c=(Node *)a;
17 Node *d=(Node *)b;
18 if(c->dis < d->dis) return -1;
19 if(c->dis > d->dis) return 1;
20 return 0;
21 }
22
23 int main()
24 {
25 int t;
26 cin>>t;
27 int cas=1;
28 while(t--)
29 {
30 int p,n,m,x,y;
31 cin>>p>>n;
32 for(int i=0;i<n;i++)
33 {
34 cin>>x>>y>>f1[i].p;
35 f1[i].dis=sqrt(x*x*1.0+y*y*1.0);
36 }
37 qsort(f1,n,sizeof(Node),cmp);
38 cin>>m;
39 for(int i=0;i<m;i++)
40 {
41 cin>>x>>y>>f2[i].p;
42 f2[i].dis=2.0*sqrt(x*x*1.0+y*y*1.0);
43 }
44 qsort(f2,m,sizeof(Node),cmp);
45 int pre=0,now,p0=p,i;
46 for(i=0;i<n;i++)
47 {
48 double tim=f1[i].dis;
49 int j;
50 for(j=pre;f2[j].dis<=tim&&j<m;j++)
51 {
52 p0+=f2[j].p;
53 }
54 if(p0<f1[i].p) break;
55 else
56 p0-=f1[i].p;
57 pre=j;
58 }
59 cout<<"Case #"<<cas++<<": ";
60 puts(i>=n?"Yes":"No");
61 }
62 return 0;
63 }
约会

Time Limit: 1000 ms Memory Limit: 65535 kB
Solved: 44 Tried: 104

Description
有一天silentsky和lcy同学去教室上自习。silentsky百无聊赖地看着书本,觉得很无聊,看着右手边的lcy认真仔细的在画着她繁重的物 理实验报告的图。silentsky无聊地弄着他的脉动瓶子,结果一不小心就把瓶盖弄到了lcy刚画好的坐标纸上,而且冥冥之中仿佛有一双手在安排,瓶盖 的中心正好和坐标纸的中心重合了,瓶盖的边缘有水,会弄湿坐标纸的。 lcy很生气,后果很严重。
于是,lcy由此情形想出了一道难题问 silentsky,如果他回答正确了。lcy就原谅了silentsky并且答应他星期天去看暮光之城2的请求,不然一切都免谈。然后 silentsky就回去面壁思过了,现在silentsky好无助的,希望得到广大编程爱好者的好心帮助。

问题是这样的: lcy现在手上有一张2n * 2n的坐标纸,而silentsky的圆形瓶盖的直径正好有2*n-1大,现在lcy想知道 silentsky到底弄湿了多少个坐标纸的格子(坐标纸是由1 * 1的小格子组成的表格)

如果还是有人觉得理解不了焦急的silentsky的意思。干脆silentsky做下翻译,毕竟silentsky还是多了解lcy的O(∩_∩)O~。
问题就是给你一个2n * 2n的正方形格子,分成1 * 1的格子,然后以中心为原点画一个直径为2n - 1的圆,问圆的周线穿过了多少个格子。
    
 

Input

含有多组测试数据,每组数据都包含一个正整数n(n <= 1000)。
当n = 0的时候结束程序,证明silentky经受住考验了的O(∩_∩)O~

 

Output
对于每个n,输出被瓶盖边缘的水弄湿了的格子数为多少。
 

Sample Input
1
2
0
 

Sample Output
4
12
ac代码:
View Code
 1 #include <iostream>
2 #include <cmath>
3
4 using namespace std;
5
6 int main()
7 {
8 int n;
9 while(cin>>n&&n)
10 {
11 double pre=n*1.0-0.5;
12 double r=pre;
13 int ans=0;
14 for(int i=1;i<n;i++)
15 {
16 double now=sqrt(r*r-i*i*1.0);
17 ans+=(int)pre-(int)now+1;
18 pre=now;
19 }
20 ans+=(int)pre+1;
21 cout<<4*ans<<endl;
22 }
23 return 0;
24 }



转载于:https://www.cnblogs.com/one--world--one--dream/archive/2011/11/29/2268055.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值