首页 > 其他 > 详细

L2-022 重排链表

时间:2019-03-13 19:20:00      阅读:203      评论:0      收藏:0      [点我收藏+]

写的有点乱

技术分享图片
#include <iostream>
#include <string.h>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <math.h>
#include <set>
#include <vector>
#define maxn 10005
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
struct multi
{
    int e;
    double c;
}m1[maxn],m2[maxn];
int n,m,k,x,flag,t1,t2,p,root,cnt;
double q;
double a[maxn];
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d %lf",&p,&q);
        a[p]=q;
        if(i==1)
            root=p;
    }
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d %lf",&m1[i].e,&m1[i].c);
    cnt=0;
    while(root>=m1[1].e)
    {
        int te=root-m1[1].e;
        double tc=a[root]/m1[1].c;
        if(fabs(tc)>0.05)
        {
            m2[cnt].e=te;
            m2[cnt].c=tc;
            cnt++;
            for(int i=1;i<=n;i++)
                a[m1[i].e+te]-=m1[i].c*tc;
        }
        else
            root--;
        while(root>=m1[1].e&&fabs(a[root])<0.05)
            root--;
    }
    printf("%d",cnt);
    if(cnt==0)
        printf(" 0 0.0");
    for(int i=0;i<cnt;i++)
        printf(" %d %.1lf",m2[i].e,m2[i].c);
    printf("\n");
    cnt=0;
    while(root>=0)
    {
        if(fabs(a[root])>0.05)
        {
            m2[cnt].e=root;
            m2[cnt].c=a[root];
            cnt++;
        }
        root--;
    }
    printf("%d",cnt);
    if(cnt==0)
        printf(" 0 0.0");
    for(int i=0;i<cnt;i++)
        printf(" %d %.1lf",m2[i].e,m2[i].c);
    printf("\n");
    return 0;
}
View Code

 

L2-022 重排链表

原文:https://www.cnblogs.com/FTA-Macro/p/10525432.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!