标签:cpp cin 区分 -- https 技术 实现 ... 思路
下午一点钟起床洗澡完,到五点比赛结束,总共花了大概2.5个小时做题,做的效果不尽人意,只做出4题,第五题在5点之后调试成功。由于水题为主,我就简单记录一下。
题目链接:https://files-cdn.cnblogs.com/files/jinjin-2018/contest1inhdoj.pdf
#include<iostream>
#include<map>
using namespace std;
int pos[500] = {0};
int a[500] = {0};
int main(){
int n;
while(cin >> n){
map<int,int> mp;
int sum = 0;
for(int i = 1; i <= n ; i++){
pos[i] = sum;
mp[sum] = i;
int t;
cin >> t;
sum += t;
}
int cnt = 0;
if(sum%2) {cout << 0 << endl;continue;}
for(int i = 1; i <= n; i++){
for(int j = i+1; j <= n; j++){
int d = pos[j] - pos[i];
if(d >= sum/2) break;
int e = sum/2 - d;
if( j < mp[pos[j]+e] && mp[pos[i]+sum - e] <= n && mp[pos[j]+e] < mp[pos[i]+sum - e]) cnt++;
}
}
cout <<cnt<<endl;
}
return 0;
}
#include<iostream>
using namespace std;
long long f[20];
int nums[205];
void init1(){
long long mul = 1;
f[0] = 0;
for(int i = 2; i <= 20;i++){
mul *= i;
f[i-1] = mul;
}
return ;
}
void init2(){
int start = 5;
int x = 5;
for(int i = 4; i <= 20; i++){
x += i;
while(start < 202 && start < x){
nums[start] = i-2;
++start;
}
}
}
int main(){
int n;
cin >> n;
init1();
init2();
while(n--){
int m;
cin >> m;
if(m == 1) cout << 1<<" "<<1<<endl;
else if(m == 2) cout << 2 <<" "<<2<<endl;
else if(m == 3) cout << 2 <<" "<<3<<endl;
else if(m == 4) cout << 3 <<" " <<4<<endl;
else{
int k = nums[m];
int ss = m - k*(k+3)/2;
long long res;
if(ss > k) res = f[k+2]/2/(k+2);
else res = f[k+1]/(k+1+1-ss) ;
cout <<m-1<<" "<<res<<endl;
}
}
return 0;
}
标签:cpp cin 区分 -- https 技术 实现 ... 思路
原文地址:https://www.cnblogs.com/jinjin-2018/p/10050463.html