在群里看到这个比赛就注册做了一道,这个真水,acmoj上的第一道题,贴上来纪念纪念,事实上是我现在做个题目就像贴上来,以后看能不能办的更好这个比赛。。第三道题好像是用线段树做,然而我并不会写。。。T了3发,先放弃吧。。。
代码:
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; struct node { int x,y,z; }b[10005]; int a[10005]; int main() { int T,n,m,i; int cnt = 0; cin >> T; while(T--) { cnt++; cin >> n; for(i=1; i<=n; i++) { scanf("%d",&a[i]); } cin >> m; for(i=1; i<=m; i++) { scanf("%d%d%d",&b[i].x,&b[i].y,&b[i].z); } printf("Case #%d:\n",cnt); for(i=1; i<=m; i++) { if(b[i].x == 0) { for(int k=b[i].y; k<=b[i].z; k++) { if(a[k] < 1000) a[k] = min(a[k]*a[k],1000); } } else if(b[i].x == 1) { int sum = 0; for(int k=b[i].y; k<=b[i].z; k++) { sum += a[k]; } cout << sum << endl; } } } return 0; }