1024 - 河南省多校連萌(三)(寫了的題)
問題 B: Kick Ass Biu
時間限制: 1 Sec 內存限制: 128 MB提交: 113 解決: 13
題目描述
在玩Kick Ass的時候,可以發現子彈的發射與飛船的移動非常有趣。
假設屏幕是個n×mn×m(豎直為n
,水平為m
)的矩形,以矩形左下角為原點,水平方向為x
軸,向右為正方向,豎直方向為y
軸,像上為正方向,建立平面直角坐標系。你的飛船在(x1,y1)
點,射擊目標在(x2,y2)
,你向目標發出了一發子彈,然而由於網頁卡頓,這枚子彈並不會觸碰到目標。所以,子彈將以每秒v
單位的速度繼續前進,若子彈移動到屏幕邊緣,將自動傳送到另一邊並繼續移動。如:向右移動到(m,0)
則下一刻從(0,0)
(0,n)
則下一刻從(0,0)
開始繼續移動。
現在給出n
、m
、(x1,y1)
、(x2,y2)
、v
,能否通過編程回答第t
秒子彈的坐標?
輸入
多組測試數據,請處理到文件結束。
第一行是兩個正整數n
,m
第二行是六個正整數x1
,y1
,x2
,y2
,v
,t
0<n,m<1000000<n,m<100000
0<x1,y1,x2,y2,v,t<1000000<x1,y1,x2,y2,v,t<100000
輸出
對於每組測試數據請在一行輸出第t
秒子彈的坐標x
,y
,中間用一個空格隔開。
結果四舍五入保留到小數點後一位
樣例輸入
3 3 1 1 1 2 1 1 3 3 1 1 1 2 1 2 3 3 1 1 1 2 1 3
樣例輸出
1.0 2.0
1.0 0.0
1.0 1.0
#include <stdio.h> #include <stdlib.h> #include <cmath> #include <cstring> #include <iostream> #include <algorithm> #include <queue> #include <vector> #include <stack> #include <map> #include <cmath> using namespacestd; #define INF 0x3f3f3f3f #define N 100000 #define mid 1e-8 #define LL long long /********************************************************/ int main() { double x, y, x1, x2, y1, y2, v, t, dx, vx, vy, n, m; while(~scanf("%lf%lf", &n, &m)) { scanf("%lf%lf%lf%lf%lf%lf", &x1, &y1, &x2, &y2, &v, &t); dx=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); vx=(x2-x1)/dx*v; vy=(y2-y1)/dx*v; x=x1+vx*t; y=y1+vy*t; while(x<0.0||fabs(x-0.0)<=mid) { x+=m; } while(y<0.0||fabs(y-0.0)<=mid) { y+=n; } while(x>m||fabs(x-m)<=mid) { x-=m; } while(y>n||fabs(y-n)<=mid) { y-=n; } printf("%.1f %.1f\n", x, y); } return 0; }
問題 D: QAQ & ORZ 的簽到題
時間限制: 1 Sec 內存限制: 128 MB提交: 834 解決: 204
題目描述
QAQ 的好朋友 ORZ,最近在做一個選拔節目的評委,對於每位選手 ORZ 想知道在這個選手以及這位選手前面的的選手中,得分最高和最低的選手的序號分別是多少....
ORZ 找了 QAQ 幫忙,但是 QAQ 最近在追火星情報局....所以你可以幫助 QAQ 解決 ORZ 的問題嗎?
輸入
第一行一個數 T
(1≤T≤101≤T≤10),表示 T
組測試數據
第二行一個數 n
(1≤n≤1051≤n≤105 ),表示有 n
位選手
接下來 n
行,每行一個數 a
(1≤a≤1081≤a≤108),表示第 i
位選手的得分,打分總是從第一位選手開始
輸出
輸出從 1 ~ n
位選手中 a[i]
,在 1 ~ i
之間的選手中得分最高和得分最低的選手的序號分別是多少
樣例輸入
1
3
1
2
3
樣例輸出
1 1 2 1 3 1
#include <stdio.h> #include <stdlib.h> #include <cmath> #include <cstring> #include <iostream> #include <algorithm> #include <queue> #include <vector> #include <stack> #include <map> #include <cmath> using namespace std; #define INF 0x3f3f3f3f #define N 100005 #define mid 1e-8 #define PI 3.1415926535898 #define LL long long /********************************************************/ int a[N], min1, max1, max2, min2; int main() { int T, n; scanf("%d", &T); while(T--) { scanf("%d", &n); for(int i=1;i<=n;i++) { scanf("%d", &a[i]); } min1=a[1]; max1=a[1]; max2=1; min2=1; for(int i=1;i<=n;i++) { if(a[i]>max1) { max1=a[i]; max2=i; } if(a[i]<min1) { min1=a[i]; min2=i; } printf("%d %d\n", max2, min2); } } return 0; }
問題 E: QAQ & 君臨天下 || 天行九歌
時間限制: 1 Sec 內存限制: 128 MB提交: 730 解決: 222
題目描述
QAQ~生活之余喜歡看一些動漫,說到國產動漫,QAQ 最喜歡的就屬玄機了,玄機出品的動漫都很贊的說,君臨天下 和 天行九歌是 QAQ 最喜歡的兩部動漫了,每次看完 QAQ 對玄機的敬佩值都會分別增加 2
與 1
,QAQ 記錄了自己每天看的動漫名稱 由 A ~ Z
26個字母代替,J
:代表 君臨天下,T
代表 : 天行九歌。
有一天,ORZ 突發奇想想幫 QAQ 測試一下 L ~ R
天裏 QAQ 對玄機的敬佩值增加了多少,看 QAQ 能否清楚記得?
問題來了 ORZ 怎麽知道 QAQ 回答的對錯呢 ?所以 ORZ 想請你幫忙算出 L ~ R
天裏 QAQ 對玄機的敬佩值增加的正確答案。
輸入
第一行一個 T
( 1≤T≤101≤T≤10)代表有 T
組測試數據
第二行兩個數 n
,m
(1≤n,m≤1051≤n,m≤105),分別代表看了 n
天動漫,和 m
次查詢
接下來 n
行一個 A ~ Z
的字母,表示第 i
天看的動漫名稱
接下來 m
行,每行兩個數 L
,R
(1≤L≤R≤n1≤L≤R≤n)
輸出
對於每次查詢,輸出 L~R
天裏,QAQ對玄機的敬佩值增加了多少
樣例輸入
1
3 3
J
A
T
1 1
1 2
2 3
樣例輸出
2
2
1
一開始我居然想用線段樹、、、
#include <stdio.h> #include <stdlib.h> #include <cmath> #include <cstring> #include <iostream> #include <algorithm> #include <queue> #include <vector> #include <stack> #include <map> #include <cmath> using namespace std; #define INF 0x3f3f3f3f #define N 100000 #define LL long long /********************************************************/ int main() { int a[N], T, x, y, n, m; char ch; scanf("%d", &T); while(T--) { scanf("%d%d", &n, &m); a[0]=0; for(int i=1;i<=n;i++) { getchar(); scanf("%c", &ch); if(ch==‘J‘) a[i]=a[i-1]+2; else if(ch==‘T‘) a[i]=a[i-1]+1; else a[i]=a[i-1]; } for(int i=0;i<m;i++) { scanf("%d%d", &x, &y); printf("%d\n", a[y]-a[x-1]); } } return 0; }
問題 F: 小ho的01串
時間限制: 1 Sec 內存限制: 128 MB提交: 148 解決: 59
題目描述
有一個由0
和1
組成的字符串,它好長呀--------一望無際
恩,說正題,小ho的數學不太好,雖然是學計算機的但是看見0
和1
也是很頭疼的,
現在他的老師想讓他計算出來包含K
個1
的串有多少個-----呀,頭要炸了!!!
小ho知道你的數學棒棒噠,所以來找你幫忙了。
輸入
第一行是一個數K
。
第二行是一個字符串str
。
0 < |str| ≤ 106
輸出
一個數S
,代表了滿足條件的個數。
樣例輸入
2
101010
樣例輸出
6
#include <stdio.h> #include <stdlib.h> #include <cmath> #include <cstring> #include <iostream> #include <algorithm> #include <queue> #include <vector> #include <stack> #include <map> #include <cmath> using namespace std; #define INF 0x3f3f3f3f #define N 100000 #define mid 1e-8 #define LL long long /********************************************************/ int main() { int n, i, sum, k, vis[N]; char s[N]; scanf("%d", &k); n=0; scanf("%s", s); memset(vis, 0, sizeof(vis)); for(i=0; i<strlen(s); i++) { if(s[i]==‘1‘) n++; else vis[n]++; } sum=0; for(i=k; i<=n; i++) { sum+=1+vis[i-k]+vis[i]+vis[i-k]*vis[i]; } printf("%d\n", sum); return 0; }
1024 - 河南省多校連萌(三)(寫了的題)