A.Rudolph and Cut the Rope
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e7 + 10;
const int M = 1e9+7;
signed main(){
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int ans=0;
while(n--){
int a,b;
cin>>a>>b;
if(a>b) ans++;
}
cout<<ans<<endl;
}
return 0;
}
B.Rudolph and Tic-Tac-Toe
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e7 + 10;
const int M = 1e9+7;
map<int,string> s;
signed main(){
int t;
cin>>t;
s[0]="OOO";
s[1]="XXX";
s[2]="+++";
while(t--){
string s1,s2,s3,s4,s5,s6,s7,s8;
cin>>s1>>s2>>s3;
s4=s1.substr(0,1)+s2.substr(0,1)+s3.substr(0,1);
s5=s1.substr(1,1)+s2.substr(1,1)+s3.substr(1,1);
s6=s1.substr(2,1)+s2.substr(2,1)+s3.substr(2,1);
s7=s1.substr(0,1)+s2.substr(1,1)+s3.substr(2,1);
s8=s1.substr(2,1)+s2.substr(1,1)+s3.substr(0,1);
for(int i=0;i<3;i++)
{
if(s1==s[i]){
cout<<s[i][0]<<endl;
break;
}
if(s2==s[i]){
cout<<s[i][0]<<endl;
break;
}
if(s3==s[i]){
cout<<s[i][0]<<endl;
break;
}
if(s4==s[i]){
cout<<s[i][0]<<endl;
break;
}
if(s5==s[i]){
cout<<s[i][0]<<endl;
break;
}
if(s6==s[i]){
cout<<s[i][0]<<endl;
break;
}
if(s7==s[i]){
cout<<s[i][0]<<endl;
break;
}
if(s8==s[i]){
cout<<s[i][0]<<endl;
break;
}
if(i==2) cout<<"DRAW"<<endl;
}
}
return 0;
}
C.Rudolf and the Another Competition
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e7 + 10;
const int M = 1e9+7;
int b[N];
signed main(){
int t;
cin>>t;
while(t--){
int x,y,z;
int ttt=1;
int ans1=0;
int time1=0;
cin>>y>>x>>z;
for(int i=0;i<y;i++)
{
for(int j=0;j<x;j++)
{
cin>>b[j];
}
sort(b,b+x);
int ans=0;
int time=0;
for(int j=0;j<x;j++){
if(j!=0) b[j]+=b[j-1];
if(b[j]<=z){
ans++;
time+=b[j];
}
}
if(i==0) ans1=ans,time1=time;
else{
if(ans>ans1) ttt++;
else if(ans==ans1&&time<time1) ttt++;
}
}
cout<<ttt<<endl;
}
return 0;
}
D.Rudolph and Christmas Tree
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e7 + 10;
const int M = 1e9+7;
long double b[N]={0};
signed main(){
int t;
cin>>t;
while(t--){
long double ans=0;
int x;
long double y,z;
cin>>x>>y>>z;
long double k=(double)z*y/2;
for(int i=0;i<x;i++){
cin>>b[i];
ans+=k;
}
for(int i=1;i<x;i++){
if(b[i]-b[i-1]<z){
long double ll=(double)k*(z-(double)(b[i]-b[i-1]))/z*(z-(double)(b[i]-b[i-1]))/z;
ans-=ll;
}
}
printf("%.6Lf\n",ans);
}
return 0;
}
开long double 数学算面积
E2.Rudolf and Snowflakes (hard version)
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e7 + 10;
const int M = 1e9+7;
long double b[N]={0};
signed main(){
int t;
cin>>t;
while(t--){
long double ans=0;
int x;
long double y,z;
cin>>x>>y>>z;
long double k=(double)z*y/2;
for(int i=0;i<x;i++){
cin>>b[i];
ans+=k;
}
for(int i=1;i<x;i++){
if(b[i]-b[i-1]<z){
long double ll=(double)k*(z-(double)(b[i]-b[i-1]))/z*(z-(double)(b[i]-b[i-1]))/z;
ans-=ll;
}
}
printf("%.6Lf\n",ans);
}
return 0;
}
1 ~ 1e6的数据进行预运算,1e6 ~ 1e9的数据满足1+k+k*k=n,用公式进行运算。