j组t2 t3
  • 板块题目总版
  • 楼主宋小陀螺
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/21 22:17
  • 上次更新2023/11/2 12:05:46
查看原帖
j组t2 t3
267125
宋小陀螺楼主2023/10/21 22:17

rt,不是一个人的

#include<bits/stdc++.h>
using namespace std;
int v[100010],a[100010],dp[100010];
int main(){
    freopen("road.in","r",stdin);
    freopen("road.out","w",stdout);
    int n,d;
    cin>>n>>d;
    for(int i=0;i<n-1;i++){
        cin>>v[i];
    }
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    int minn=1e9,r=0;
    int sum=0,ans=0;
    for(int i=0;i<n;i++){
        if(a[i]>=minn){
            sum+=v[i];
        }
        else{
            int num=0;
            sum-=r;
            num+=sum/d;
            if(sum%d)num++;
            ans+=num*minn;
            r=num*d-sum;
            minn=a[i];
            sum=v[i];
        }
    }

    int num=0;
    sum-=r;
    num+=sum/d;
    if(sum%d)num++;
    ans+=num*minn;
    r=num*d-sum;
    minn=a[n-1];
    cout<<ans;
    return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int maxm = 1000;
int t,m,pri[100005],cnt;
bool vis[1000005];
int gcd(int a,int b)
{
    if (!b) return a;
    return gcd(b,a % b);
}
void mkpr(int a)
{
    for (int i = 2;i <= a;i++)
    {
        if (!vis[i])
        {
            pri[++cnt] = i;
            for (int j = 2;j <= a / i;j++) vis[i * j] = true;
        }
    }
}
int sqt(int a)
{
    int ans = 1;
    for (int i = 1;i * i <= a;i++)
        while (a % pri[i] == 0)
        {
            a /= pri[i];
            if (a % pri[i] == 0)
            {
                a /= pri[i];
                ans *= pri[i];
            }
        }
    return ans;
}
void prt1(int a,int b)
{
    if (b < 0) {a = -a; b = -b;}
    int tmp = gcd(abs(a),b);
    a /= tmp; b /= tmp;
    printf("%d",a);
    if (b != 1) printf("/%d",b);
}
void prt2(int a,int b,int r)
{
    if (b < 0) {a = -a; b = -b;}
    int tmp = gcd(abs(a),b);
    a /= tmp; b /= tmp;
    if (a != 1) printf("%d*",a);
    printf("sqrt(%d)",r);
    if (b != 1) printf("/%d",b);
}
void slv(int a,int b,int c)
{
    int r = b * b - 4 * a * c,lfz,rfz;
    if (r < 0)
    {
        printf("NO\n");
        return;
    }
    lfz = -b;
    rfz = sqt(r);
    r /= rfz * rfz;
    if (r == 1) lfz += rfz;
    if (lfz == 0 && (r == 0 || r == 1)) putchar('0');
    if (lfz) prt1(lfz,2 * a);
    if (lfz && r > 1) putchar('+');
    if (r > 1) prt2(rfz,2 * a,r);
    putchar('\n');
}
int main()
{
    freopen("uqe.in","r",stdin);
    freopen("uqe.out","w",stdout);
    mkpr(maxm * maxm);
    int a,b,c;
    scanf("%d %d\n",&t,&m);
    while (t--)
    {
        scanf("%d %d %d\n",&a,&b,&c);
        slv(a,b,c);
    }
    return 0;
}
2023/10/21 22:17
加载中...