最近一个月在codeforces上做的题(做个记录)
后面太多了就不把代码一一放出了,只放置了链接,可根据链接找到提交的代码.
最小子矩阵
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
const int N = 1e2+7;
int a[N],b[N];
int w[N][N];
int dp[N];
int n,m,x,y;
double maxSub(int c[]){
int b = 0;
int cnt = 0;
double avg = 0.0,s = 0.0;
for(int i=0;i<m;i++){
if(b<0){
b = c[i];
cnt = 0;
}else{
b += c[i];
cnt++;
avg = b/(cnt*1.0);
}
if(cnt>=x){
s = max(s,avg);
}
}
return s;
}
int main()
{
scanf("%d%d%d%d",&n,&m,&x,&y);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<m;i++)
scanf("%d",&b[i]);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
w[i][j] = a[i] + b[j];
double maxavg = 0.0;
int f = 0;
for(int i=0;i<n;i++){
memset(dp,0,sizeof(dp));
f = 0;
for(int j=i;j<n;j++){
f++;
for(int k=0;k<m;k++){
dp[k] += w[j][k];
}
if(f>=y){
maxavg = max(maxavg,maxSub(dp));
}
}
}
printf("%.10lf\n",maxavg);
return 0;
}
1504A - Déjà Vu:构造.
1513B AND Sequences(数学+位运算.)
构造
#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;
int main()
{
ll a,b;
ll t;
scanf("%lld",&t);
getchar();
while(t--){
scanf("%lld%lld",&a,&b);
if(b==1){
puts("NO");
}else{
puts("YES");
printf("%lld %lld %lld\n",a,2*a*b-a,2*a*b);
}
}
return 0;
}
while(t--){
cin >> n;
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
cout << n/2 << endl;
for(int i=0;i<n-1;i+=2){
cout << i+1 << " " << i+2 << " " << min(a[i],a[i+1]) << " " << k << endl;
}
}
int t,k;
cin >> t;
while(t--){
cin >> k;
int g = gcd(k,100-k);
// cout << g << endl;
cout << k/g + (100-k)/g << endl;
}
void solve(){
bool flag = false;
cin >> n;
for(int i=0;i<n;i++){
cin >> a[i];
if(a[i]!=i+1){
flag = true;
}
}
if(!flag){
cout << "0" << endl;
return;
}
if(a[0]==n&&a[n-1]==1){
cout << "3" << endl;
}else if(a[0]==1||a[n-1]==n){
cout << "1" << endl;
}else{
cout << "2" << endl;
}
return;
}
while(t--){
cin >> n;
for(int i=0;i<2*n;i++)
scanf("%d",&a[i]);
sort(a,a+2*n);
for(int i=0,j=n;i<n;i++,j++){
printf("%d %d",a[i],a[j]);
if(i!=n-1){
printf(" ");
}
}
printf("\n");
}
while(t--){
cin >> a;
if(a/111>=a%11)
puts("YES");
else
puts("NO");
}
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
typedef long long ll;
int main()
{
int n;
scanf("%d",&n);
ll sum = 0;
int x;
int ans = 0;
priority_queue<int,vector<int>,greater<int> > pq;
while(n--){
scanf("%d",&x);
sum += x;
ans++;
pq.push(x);
if(sum<0){
sum -= pq.top();
pq.pop();
ans--;
}
}
printf("%d\n",ans);
return 0;
}
同上.
//割去突出部分即可
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
long long a[500010];
int main()
{
int t,n;
scanf("%d",&t);
while(t--){
long long ans = 0;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=1;i<n-1;i++){
if(a[i]>a[i-1]&&a[i]>a[i+1]){
ans += min(a[i]-a[i-1],a[i]-a[i+1]);
a[i] = a[i+1]>a[i-1]?a[i+1]:a[i-1];
}
}
if(a[0]>a[1]){
ans += a[0]-a[1];
a[0] = a[1];
}
if(a[n-1]>a[n-2]){
ans += a[n-1]-a[n-2];
a[n-1] = a[n-2];
}
for(int i=1;i<n;i++){
ans += abs(a[i]-a[i-1]);
}
cout << (ans+a[0]+a[n-1]) << endl;
}
return 0;
}
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
int sum = 0,a;
for(int i=0;i<n;i++){
scanf("%d",&a);
// cnt ++;
sum += a;
}
int ans = sum - n;
if(ans < 0){
puts("1");
}else{
printf("%d\n",ans);
}
}
return 0;
}
B. Bad Boy
C. Challenging Cliffs
A. Stone Game
B. Friends and Candies
C. Number of Pairs
D. Another Problem About Dividing Numbers
F. Interesting Function
B. Love Song
C. Stable Groups
D. PriceFixed
A. Gregor and Cryptography
B. Gregor and the Pawn Game
A. Find The Array
B. Maximum Cost Deletion
C. Manhattan Subarrays
A. Polycarp and Coins
B1. Wonderful Coloring - 1
B2. Wonderful Coloring - 2
C. Interesting Story
D1. Domino (easy version)
A. Subsequence Permutation
B. Running for Gold
C. Maximize the Intersections
D. Array Differentiation
A. Digits Sum
B. Reverse String
C. Penalty
D. Backspace
A. Cherry
B. Cobb
C. Mikasa
D. Diane
A. PizzaForces
B. Two Tables
C. Coin Rows
D. Say No to Palindromes
A. A Variety of Operations
B. Take Your Places!
A. Ezzat and Two Subsequences
B. Moamen and k-subarrays
A. Charmed by the Game
C. Mocha and Hiking
D1. Mocha and Diana (Easy Version)
A. Median Maximization
B. MIN-MEX Cut
C. MAX-MEX Cut
D1. Seating Arrangements (easy version)
A. Domino Disaster
B. MEXor Mixup
C. Carrying Conundrum
A. Balanced Substring
C. Jury Meeting
A. Countdown
B. Swaps
A. Regular Bracket Sequences
B. Combinatorics Homework
C. Slay the Dragon
A. Casimir’s String Solitaire
B. Shifting Sort
C. Ticks
D. Productive Meeting
E1. Permutation Minimization by Deque
E2. Array Optimization by Deque
F. Array Stabilization (AND version)
A. CQXYM Count Permutations
B. Diameter of Graph
A. Luntik and Concerts
B. Luntik and Subsequences
C. Grandma Capa Knits a Scarf
D. Vupsen, Pupsen and 0
A. Gamer Hemose
B. Hemose Shopping
C. Bakry and Partitioning
A. Elections
B. Make it Divisible by 25
C. Save More Mice
D1. All are Same
E. Gardener and Tree
A. Consecutive Sum Riddle
B. Special Numbers
C. Make Them Equal
E1. Rubik’s Cube Coloring (easy version)
A. Computer Game
B. Groups
C. Delete Two Elements
D. Training Session