985月赛我只喜欢ECNU.jpg
A. 打工时不可能打工的
Time limit per test: 2.0 seconds
Memory limit: 256 megabytes
我 Ayano 就是破产,吃白菜,从这里跳下去,也绝对不打一天工!
然而现实是,没有钱就还是得打工的,否则生活无法继续啊。
现在你已经身无分文,信用卡也不欠钱,n 天后就是你的信用卡最后还款期,你必须在第 n 天结束时还清所有的借款。(这 n天里你通过信用卡借的款项也必须在那时还清)你知道接下来 n 天每天打工的收入 ai 和你预计的开销 bi,你想要打尽量少天数的工,又不至于破产。
每天的开销是一定发生的,打工只能按天为单位打工。
Input
第 1 行包含一个整数 n 表示总天数。(1≤n≤200 000)
第 2 行包含 n 个整数,第 i 个整数表示 ai。
第 3 行包含 n 个整数,第 i 个整数表示 bi。(1≤ai,bi≤100 000)
Output
如果你在 n 天后能还清信用卡,输出最少的打工天数;如果不能,输出 Game Over!
。
Examples
input
3 1 2 3 1 1 1
output
1
就是你要还的钱是一定的,选择钱最多的天打工就是了
#include<bits/stdc++.h> using namespace std; const int N=200005; int a[N]; int main() { ios::sync_with_stdio(false); int n; cin>>n; for(int i=0;i<n;i++) cin>>a[i]; long long s=0; for(int i=0,x;i<n;i++) cin>>x,s+=x; sort(a,a+n); long long f=0; for(int i=0;i<n;i++) { f+=a[n-i-1]; if(f>=s) { cout<<i+1<<" "; return 0; } } cout<<"Game Over! "; return 0; }
B. 蛇形矩阵
Time limit per test: 2.0 seconds
Memory limit: 256 megabytes
蛇形矩阵是我最喜欢的矩阵之一。n 阶蛇形矩阵由前 n2 个正整数顺时针从外到内盘绕而成。
例如四阶具有如下形式:
1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
五阶(奇数阶数)在中心位置略有不同:
1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9
由于这种盘绕的方式过分诡异,无法简单的用数学语言表示。所以无聊又过分的出题人想让你算出这个矩阵每一行的和。
Input
输入一个整数 n (1≤n≤200 000)。
Output
输出 n 行 n 个整数,依次为每一行的和。
Examples
input
4
output
10 44 48 34
input
5
output
15 76 91 88 55
input
1
output
1
这个规律还是很好找的,就是等差数列啊,然后每次取首尾两个求一下前缀和,因为一个+1一个-1所以那个和是相等的
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N=200005; ll a[N]; int main() { int n; cin>>n; ll l=1,r=n,f=n,s=0; a[1]=(l+r)*f/2; a[n]=a[1]+(f-1)*2*f; for(int i=2;i<=(n+1)/2;i++) { s+=r; l+=4*f-4,f=f-2,r=l+f-1; s+=l; a[i]=s+(l+r)*f/2; a[n-i+1]=a[i]+(f-1)*2*f; } for(int i=1;i<=n;i++) cout<<a[i]<<" "; }