zoukankan      html  css  js  c++  java
  • 1.29 CF edu103

    A题:

    容斥原理直接除就行;

    代码:

     1 #include<bits/stdc++.h>
     2 #define ll long long
     3 using namespace std;
     4 int main(){
     5     int T;
     6     scanf("%d",&T);
     7     while (T--){
     8         ll n,k;
     9         scanf("%lld%lld",&n,&k);
    10         ll cmp=k;
    11         while (cmp<n){
    12             cmp+=k;
    13         }
    14         ll res=(cmp+n-1)/n;
    15         printf("%lld
    ",res);
    16     }
    17 }
    View Code

    B题:

    从后往前推一遍,保证小于k%就行。

    代码:

     1 #include<bits/stdc++.h>
     2 #define ll long long
     3 using namespace std;
     4 ll a[105],n,k;
     5 int main(){
     6     int T;
     7     scanf("%d",&T);
     8     while (T--){
     9         scanf("%lld%lld",&n,&k);
    10         ll sum=0;
    11         for (int i=1; i<=n; i++){
    12             scanf("%lld",&a[i]);
    13             sum+=a[i];
    14         }
    15         ll ret=0;
    16         for (int i=n; i>=2; i--){
    17             sum-=a[i];
    18             if (100*a[i]>k*sum){
    19                 ll add;
    20                 if (100*a[i]%k==0)
    21                    add=100*a[i]/k-sum;
    22                 else add=100*a[i]/k-sum+1;
    23                 ret+=add;
    24                 sum+=add;
    25             }
    26         }
    27         printf("%lld
    ",ret);
    28     }
    29 }
    View Code

    C题:

    DP,从后往前,每次选一下是只要两个还是加上之前做出来的最优解。

    代码:

     1 #include<bits/stdc++.h>
     2 #define ll long long
     3 using namespace std;
     4 ll n,a[100005],b[100005],c[100005],d[100005],sum[100005];
     5 ll dp[100005];
     6 int main(){
     7     int T;
     8     scanf("%d",&T);
     9     while (T--){
    10         scanf("%lld",&n);
    11         for (int i=1; i<=n; i++)
    12             scanf("%lld",&a[i]);
    13         for (int i=1; i<=n; i++)
    14             scanf("%lld",&b[i]);
    15         for (int i=1; i<=n; i++)
    16             scanf("%lld",&c[i]);
    17         for (int i=1; i<n; i++){
    18             d[i]=abs(b[i+1]-c[i+1])+1;
    19         }
    20         dp[n-1]=d[n-1]+a[n];
    21         for (int i=n-2; i>=1; i--){
    22             dp[i]=d[i]+a[i+1];
    23             if (d[i+1]!=1){
    24                 dp[i]=max(d[i]+min(c[i+2],b[i+2])+a[i+1]-max(c[i+2],b[i+2])+1+dp[i+1]-d[i+1],dp[i]);
    25             }
    26         }
    27         ll ret=0;
    28         for (int i=1; i<=n-1; i++)
    29             ret=max(ret,dp[i]);
    30         printf("%lld
    ",ret);
    31     }
    32 }
    View Code

    D题:

    打的时候感觉是个记忆化,可惜写挂了,没时间改,之后别人告诉我递推也能过(当然记忆化也行),之后赶紧补一下。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int st[300005],ed[300005],res[300005];
     4 char s[300005];
     5 int n;
     6 int main(){
     7     int T;
     8     scanf("%d",&T);
     9     while (T--){
    10         scanf("%d",&n);
    11         scanf("%s",s+1);
    12         st[0]=0;
    13         for (int i=1; i<=n; i++){
    14             if (s[i]=='L'){
    15                 if (i==1) st[i]=st[i-1]+1;
    16                 else if (st[i-1]==0){
    17                     st[i]=st[i-2]+2;
    18                 }
    19                 else st[i]=1;
    20             }
    21             else {
    22                 st[i]=0;
    23             }
    24         }
    25         ed[n]=0;
    26         for (int i=n-1; i>=0; i--){
    27             if (s[i+1]=='R'){
    28                 if (i==n-1) ed[i]=ed[i+1]+1;
    29                 else if (ed[i+1]==0){
    30                     ed[i]=ed[i+2]+2;
    31                 }
    32                 else ed[i]=1;
    33             }
    34             else {
    35                 ed[i]=0;
    36             }
    37         }
    38         for (int i=0; i<=n; i++)
    39             printf("%d ",ed[i]+1+st[i]);
    40         printf("
    ");
    41     }
    42     return 0;
    43 }
    View Code

    (连打两场CF状态真的很差,前一天上的分全还回去[叹气]

  • 相关阅读:
    git
    build and set proxy in Ubuntu
    export a java project to runable jar
    Remove openjdk in Ubuntu/Configure jdk and running adb in 64-bit Ubuntu
    When you install printer in Ubuntu, just need a ppd file.
    Ubuntu user switch
    Enable SSHD on Ubuntu
    web测试实践——day01
    白盒测试实践-day04
    白盒测试实践-day03
  • 原文地址:https://www.cnblogs.com/i-caigou-TT/p/14347821.html
Copyright © 2011-2022 走看看