CSU 1027: Smallbox魔方 1031: Parsing Real Numbers 1032: OSU! Scoring System 1033: 五一步行街购物

9人阅读 评论(0) 收藏 举报
分类:

1027: Smallbox魔方

代码:

#include<stdio.h>
#include<string.h>
#define MAXD 15010
#define MOD 1000000007
int N, M, a[10], b[10], ny[MAXD];
long long exgcd(long long a, long long b, long long &x, long long &y)
{
    if(b == 0)
        x = 1, y = 0;
    else
        exgcd(b, a % b, y, x), y -= x * (a / b);
}
void prepare()
{
    int i;
    long long x, y;
    for(i = 1; i <= 15000; i ++)
    {
        exgcd(i, MOD, x, y);
        x = (x % MOD + MOD) % MOD;
        ny[i] = x;
    }
}
void init()
{
    int i;
    scanf("%d", &N);
    M = 6 * N * N;
    for(i = 0; i < 6; i ++)
        scanf("%d", &a[i]);
}
long long comb(int n, int m)
{
    int i;
    long long ans = 1;
    for(i = n - m + 1; i <= n; i ++)
        ans = ans * i % MOD;
    for(i = 2; i <= m; i ++)
        ans = ans * ny[i] % MOD;
    return ans;
}
long long calculate(int m)
{
    int i, j, n = 0;
    long long ans = 1;
    for(i = 0; i < 6; i ++)
    {
        if(b[i] % m != 0)
            return 0;
        b[i] /= m;
        n += b[i];
    }
    for(i = 0; i < 6; i ++)
    {
        ans = ans * comb(n, b[i]) % MOD;
        n -= b[i];
    }
    return ans;
}
long long frotate()
{
    int i, j;
    long long ans = 0;
    // 0
    memcpy(b, a, sizeof(a));
    ans = (ans + calculate(1)) % MOD;
    // 90 270
    if(N & 1)
    {
        for(i = 0; i < 6; i ++)
            for(j = 0; j < 6; j ++)
            {
                memcpy(b, a, sizeof(a));
                -- b[i], -- b[j];
                if(b[i] < 0 || b[j] < 0)
                    continue;
                ans = (ans + 6 * calculate(4)) % MOD;
            }
    }
    else
    {
        memcpy(b, a, sizeof(a));
        ans = (ans + 6 * calculate(4)) % MOD;
    }
    // 180
    if(N & 1)
    {
        for(i = 0; i < 6; i ++)
            for(j = 0; j < 6; j ++)
            {
                memcpy(b, a, sizeof(a));
                -- b[i], -- b[j];
                if(b[i] < 0 || b[j] < 0)
                    continue;
                ans = (ans + 3 * calculate(2)) % MOD;
            }
    }
    else
    {
        memcpy(b, a, sizeof(a));
        ans = (ans + 3 * calculate(2)) % MOD;
    }
    return ans;
}
long long erotate()
{
    int i;
    long long ans = 0;
    // 180
    memcpy(b, a, sizeof(a));
    ans = (6 * calculate(2)) % MOD;
    return ans;
}
long long vrotate()
{
    int i;
    long long ans = 0;
    // 60 120
    memcpy(b, a, sizeof(a));
    ans = (8 * calculate(3)) % MOD;
    return ans;
}
void solve()
{
    long long ans = 0;
    ans = (ans + frotate()) % MOD;
    ans = (ans + erotate()) % MOD;
    ans = (ans + vrotate()) % MOD;
    ans = ans * ny[24] % MOD;
    printf("%lld\n", ans);
}
int main()
{
    int t;
    prepare();
    scanf("%d", &t);
    while(t --)
    {
        init();
        solve();
    }
    return 0;
}


1031: Parsing Real Numbers

代码:

# include <stdio.h>
# include <ctype.h>
# include <string.h>

# define BITSET(i) ((sign)|=(char)(0x1<<(i)))
# define GETBIT(i) ((sign)>>(i) & (0x1))

char a[1000];
char sign;

/* sign: 0 - wrong?
         1 - coeff sign
         2 - integ
         3 - digit
         4 - floatdigit
         5 - e
         6 - e sign
         7 - e integ
*/

int main()
{
    int i, T, len, judge;
    scanf("%d", &T);
    while (T > 0)
    {
        scanf("%s", a);
        len = strlen(a);

        sign = 0;
        i = 0;
        if (a[i]=='+' || a[i]=='-') { BITSET(1); ++i;}
        while (isdigit(a[i])) { BITSET(2); ++i;}
        if (a[i]=='.') { BITSET(3); ++i;}
        while (isdigit(a[i])) { BITSET(4); ++i;}
        if (a[i]=='E' || a[i]=='e') { BITSET(5); ++i;}
        if (a[i]=='+' || a[i]=='-') { BITSET(6); ++i;}
        while (isdigit(a[i])) { BITSET(7); ++i;}

        if ((a[i] != '\0')
                || (GETBIT(3) && !GETBIT(2) && !GETBIT(4))
                || ((GETBIT(5)||GETBIT(6)) && !GETBIT(7))
                || (len && !GETBIT(2) && !GETBIT(4)))
            BITSET(0);

        if (GETBIT(0)) printf("NO\n");
        else printf("YES\n");
        --T;
    }

    return 0;
}


1032: OSU! Scoring System

代码:

#include <stdio.h>  
  
int main()  
{  
    int cas,com,mis,num50,num300;  
    scanf("%d",&cas);  
    double d,m,l,hsum,sum,all,num;  
    while(cas--)  
    {  
        scanf("%lf %lf %lf",&d,&m,&l);  
        hsum=0,sum=0,all=0;  
        com=mis=num50=num300=0;  
        for(int i=0;i<l;i++)  
        {  
            scanf("%lf",&num);  
            all+=num+num*( (com-1>0?com-1:0)*d*m )/25;  
            if(num==0) com=0,mis++;  
            else com++;  
            hsum+=num;  
            if(num==50) num50++;  
            if(num==300) num300++;  
        }  
        printf("%.2lf %.2lf%% ",all,hsum*100/(l*300));  
        double temp=hsum*100/(l*300);  
        if(temp==100) printf("SS\n");  
        else  
        {  
            double temp50=num50*50*100/(l*300);  
            double temp300=num300*300*100/(l*300);  
            if(temp300>=90 &&temp50<=1 &&mis==0)  
                printf("S\n");  
            else if(temp300>=80 &&mis==0 || temp300>=90)  
                printf("A\n");  
            else if(temp300>=70&&mis==0 ||temp300>=80)  
                printf("B\n");  
            else if(temp300>=60)  
                printf("C\n");  
            else printf("D\n");  
        }  
    }  
    return 0;  
}  


1033: 五一步行街购物

代码:

#include <iostream>
#include <stdio.h>
#include <cstring>
#include <algorithm>
#include <queue>
#include <map>
#include <cmath>
using namespace std;
typedef long long ll;
const int INF = 1e9;
int dp[110];
int m, n;
int gou[101];
int shang[100001][2], top;
int main()
{
    while(scanf("%d%d",&m,&n)!=EOF)
    {
        if(n==0&&m==0)break;
        int i, j, a, b;
        map<int,bool>mp;
        top = 1;
        mp.clear();
        for(i=1; i<=m; i++)
        {
            scanf("%d",&gou[i]);
            mp[gou[i]] = true;
        }
        for(i=0; i<n; i++)
        {
            scanf("%d%d",&a,&b);
            if(mp[a])
            {
                shang[top][0] = a;
                shang[top][1] = b;
                top++;
            }
        }
        dp[0] = 0;
        for(i=1; i<=m; i++)dp[i] = INF;
        for(i=1; i<top; i++)
        {
            for(j=m; j>0; j--)
            {
                if(shang[i][0] == gou[j])
                {
                    dp[j] = min(dp[j], dp[j-1] + shang[i][1]);
                }
            }
        }
        if(dp[m]==INF)
        {
            printf("Impossible\n");
        }
        else
        {
            printf("%d\n",dp[m]);
        }
    }
    return 0;
}

查看评论

CSU 1032 OSU! Scoring System

OSU! is a rhythm game based on the gameplay of a variety of popular commercial rhythm games. The gam...
  • A852852852852
  • A852852852852
  • 2015-08-05 15:42:35
  • 289

CSU 1035: Max DPS

题目:Description       Liam 喜欢玩电脑游戏,他的最爱是“World of Bugcraft”。Liam在游戏中扮演了一个法师。法师通过吟唱法术攻击敌人。由于一开始Liam非常弱...
  • nameofcsdn
  • nameofcsdn
  • 2018-04-16 18:42:41
  • 27

五一步行街购物

 /*五一步行街购物   个人认为dp学的真的很差劲所以把看了别人解题报告后的代码,再来仔细的回顾一下,以加深印象。dp[i][j]表示第到第i个商店时购买第j件商品的最小值。dp[i][j]==-1...
  • qq258513813
  • qq258513813
  • 2010-10-25 16:40:00
  • 1683

HDU 5003 Osu!(数学题)

HDU 5003 Osu!(数学题)
  • u012860063
  • u012860063
  • 2014-09-14 18:59:45
  • 1207

51步行街购物源代码

  • 2010年05月18日 23:27
  • 1KB
  • 下载

CWINDOWSsystem32 1025, 1028, 1031, 1033, 1037, 1041, 1053, 2052 & 3076

那些文件夹应该是office和VS等软件存放多国语言文件的目录。我的1033和2052不是空的,1033里边存放的是英文版本的文件,2052存放的是中文版本的文件。如果是空的应该是可以删除的。 以下是...
  • zuixinl
  • zuixinl
  • 2011-04-22 16:20:00
  • 700

csu oj 1031 Real Numbers(模拟)

csu oj 1031 Parsing Real Numbers 思路:判断  #include #include #include #include #include #inclu...
  • yibcs
  • yibcs
  • 2014-10-04 15:52:25
  • 676

Error 1033 received logging on to the standby

Fri Jan 01 15:57:00 2016 Error 1033 received logging on to the standby PING[ARC1]: Heartbeat faile...
  • EVISWANG
  • EVISWANG
  • 2016-01-12 10:02:40
  • 1748

CSU 1086 超市购物

1086: 超市购物 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 361  Solved: 151 [Submit][Status][Web Bo...
  • lizhaowei213
  • lizhaowei213
  • 2016-04-16 01:02:11
  • 384

51nod 1031 骨牌覆盖 (找规律题_数学)

在2*N的一个长方形方格中,用一个1*2的骨牌排满方格。 问有多少种不同的排列方法。 例如:2 * 3的方格,共有3种不同的排法。(由于方案的数量巨大,只输出 Mod 10^9 + 7...
  • h1021456873
  • h1021456873
  • 2015-10-21 20:49:23
  • 893
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 112万+
    积分: 2万+
    排名: 413
    博客专栏