第七届河南省程序设计大赛

http://acm.nyist.net/JudgeOnline/problem.php?pid=1248

 
#include<bits/stdc++.h>
using namespace std;
const int N=110;
const int inf=0x3f3f3f3f;
int e[N][N];
int main()
{
    int i,j,k,m,n;
    while(~scanf("%d%d",&n,&m))
    {
        memset(e,0x3f3f3f3f,sizeof(e));
        for(i=0;i<N;i++) e[i][i]=0;
        int a,b,c;
        for(i=0;i<m;i++)
        {
            scanf("%d%d%d",&a,&b,&c);
            e[a][b]=min(e[a][b],c);
            e[b][a]=min(e[b][a],c);
        }
        for(k=1;k<=n;k++)
        for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
        if(e[i][k]<inf && e[k][j]<inf &&e[i][j]>max(e[i][k],e[k][j]))
        {
            e[i][j]=max(e[i][k],e[k][j]);
        }
        cin>>m;
        for(i=0;i<m;i++)
        {
            cin>>a>>b;
            if(e[a][b]==inf) cout<<"-1"<<endl;
            else cout<<e[a][b]<<endl;
        }
    }
}
        

http://acm.nyist.net/JudgeOnline/problem.php?pid=1249

 
#include<bits/stdc++.h>
using namespace std;
int dp[100100];
int main()
{
    int n,m,t,i,j,ans;
    scanf("%d",&t);
    while(t--)
    {
        int a,b,c,d,v;
        scanf("%d%d",&n,&v);
        memset(dp,0,sizeof(dp));
        dp[0]=1;
        for(i=0;i<n;i++)
        {
            scanf("%d",&a);
            for(j=v;j>=a;j--)
                dp[j]+=dp[j-a];
        }
        printf("%d\n",dp[v]);
    }
    return 0;
}
        

http://acm.nyist.net/JudgeOnline/problem.php?pid=1250

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b,ll &x,ll &y)
{
    if(b==0){
        x = 1;
        y = 0;
        return a;
    }
    ll g=gcd(b,a%b,x,y);
    ll tmp=x;
    x=y;
    y=tmp-(a/b)*y;
    return g;
}
bool is(ll a,ll b,ll c,ll d,ll g,ll x,ll y)
{
    for(int i = -2; i <= 2; ++i)
    {
        ll x1, y1;
        x1 = a+x/g*i;
        y1 = b-y/g*i;
        for(int j = -2; j <= 2; ++j)
        {
            ll x2, y2;
            x2 = c+x/g*j;
            y2 = d-y/g*j;
            if((x1+y2)%2 == 0 && (x2+y1)%2 == 0)
                return 1;
        }
    }
    return 0;
}
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        ll x,y,a,b,c,d,g,m,n;
        cin>>a>>b>>m>>n;
        g=gcd(a,b,x,y);
        if(m%g||n%g) puts("N");
        else if(is(x*(m/g),y*(m/g),x*(n/g),y*(n/g),g,a,b)) puts("Y");
        else puts("N");
    }
    return 0;
}

http://acm.nyist.net/JudgeOnline/problem.php?pid=1251

#include<bits/stdc++.h>
using namespace std;
const int imax=0x3f3f3f3f;
struct gg
{
    long long a;
}a[505];
long long b[505];
long long dp[505][505];
bool cmp(gg a,gg b)
{
    return a.a<b.a;
}
int main()
{
    int k;
    scanf("%d",&k);
    while (k--)
    {
        int n;
        scanf("%d",&n);
        for (int i=0;i<n;i++) scanf("%d",&b[i]),a[i].a=b[i];
        sort(a,a+n,cmp);
        for (int i=0;i<n;i++)
        {
            long long s=b[0]-a[i].a;
            dp[i][0]=abs(s);
        }
        for (int i=1;i<n;i++)
        {
            long long mmin=imax;
            for (int j=0;j<n;j++)
            {
                mmin=min(mmin,dp[j][i-1]);
                long long s=b[i]-a[j].a;
                s=abs(s);
                dp[j][i]=s+mmin;
            }
        }
        long long mmmm=imax;
        for (int i=0;i<n;i++) mmmm=min(mmmm,dp[i][n-1]);
        for (int i=1;i<n;i++)
        {
            long long mmin=imax;
            for (int j=n-1;j>=0;j--)
            {
                mmin=min(mmin,dp[j][i-1]);
                long long s=b[i]-a[j].a;
                s=abs(s);
                dp[j][i]=s+mmin;
            }
        }
        for (int i=0;i<n;i++) mmmm=min(mmmm,dp[i][n-1]);
        cout<<mmmm<<endl;
    }
}


http://acm.nyist.net/JudgeOnline/problem.php?pid=1252


http://acm.nyist.net/JudgeOnline/problem.php?pid=1253

 
#include<bits/stdc++.h>
using namespace std;
const int N=110;
const int inf=0x3f3f3f3f;
string s;
int main()
{
    while(cin>>s,s!="0+0=0")
    {
       int n=s.size(),i;
       int a=0,b=0,c=0;
       for(i=n-1;s[i]!='=';i--) a=a*10+s[i]-'0';
       for(i--;s[i]!='+';i--)   b=b*10+s[i]-'0';
       for(i--;i>=0;i--)        c=c*10+s[i]-'0';
       if(a==b+c) printf("TRUE\n");
       else printf("FALSE\n");
    }
    return 0;
}
        

http://acm.nyist.net/JudgeOnline/problem.php?pid=1254

未AC

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e2;
const int inf=0x3f3f3f3f;
int start,k;
char s[N];
int f[N];
int e[N][N];
int dfs(int i)
{
    int v,n;
    while(start!=strlen(s))
    {
        switch(s[start])
        {
            case ')':  {start++;return 0;}
            case ' ':  {start++;}
            case '(':
            {
                start++;
                sscanf(s+start,"%d%n",&v,&n);
                start+=n;
                if(i!=0) {e[v][i]=1;e[i][v]=1;f[i]++;f[v]++;}
                k++;
                dfs(v);
            }
        }
    }
}
int is(int n,int j)
{
    for(int i=1;i<=n;i++) if(e[i][j])   e[i][j]=0;
    for(int i=1;i<=n;i++) if(e[j][i])   {e[j][i]=0;return i;}
}
int main()
{
    int i,j;
    while(gets(s)&&s!="EOF")
    {
        memset(f,0,sizeof(f));
        memset(e,0,sizeof(e));
        start=0;k=0;
        dfs(0);
//        for(i=1;i<=k;i++) cout<<i<<" ";cout<<endl;
//        for(i=1;i<=k;i++) cout<<f[i]<<" ";cout<<endl;
//        for(i=1;i<=k;i++) {for(j=1;j<=k;j++) cout<<e[i][j]<<" ";cout<<endl;}
        for(i=0;i<k-1;i++)
        {
            for(j=1;j<=k;j++) if(f[j]==1) break;
            f[j]=inf;
            int b=is(k,j);f[b]--;
            if(i!=k-2) cout<<b<<" ";
            else       cout<<b;
        }
        cout<<endl;
    }
}

http://acm.nyist.net/JudgeOnline/problem.php?pid=1255

 
#include<bits/stdc++.h>
using namespace std;
const int N=110;
struct node{
int x,y;
}e[N];
int  dp[N];
bool cmp(node p1,node p2){
    if(p1.x==p2.x) return p1.y>p2.y;
    return p1.x>p2.x;
}
bool jud(node p1,node p2)
{
    if((p1.x<p2.x && p1.y<p2.y) || (p1.x==p2.x && p1.y<p2.y) || (p1.x<p2.x && p1.y==p2.y)) return true;
    return false;
}
int main()
{
int t;
int m,i,j,n;
scanf("%d",&t);
while(t--)
{
    scanf("%d",&n);
    int a,b;
    for(i=0;i<n;i++)
    {
    scanf("%d%d",&a,&b);
    if(a<b) swap(a,b);
    e[i].x=a;
    e[i].y=b;
    }
    sort(e,e+n,cmp);
    for(i=0;i<n;i++)
    {
    dp[i]=1;
    for(j=0;j<i;j++)
    {
        if(jud(e[i],e[j])) dp[i]=max(dp[i],dp[j]+1);
    }
    }
    int ans=0;
    for(i=0;i<n;i++)
    if(ans<dp[i]) ans=dp[i];
    printf("%d\n",ans);
}
return 0;
}
        


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值