青海农林学院第八届程序设计大赛

Contest1068 – 2017“久源软件杯”新疆科学技术高校第八届程序设计大赛

关于设置“久源软件杯”

新疆科技(science and technology)高校第八届程序设计大赛文告

     ACM 国际大学生程序设计竞技 (International Collegiate Programming
Contest)是由美利坚联邦合众国统计机协会(ACM)主办的一项意在浮现硕士革新能力、团队精神和在压力下编写程序、分析和化解问题能力的老牌比赛。二〇一〇年以来,我校参加了历届青海省 ACM 程序设计比赛,并拿走了突出的实绩。为遴选省ACM 参赛队员,特举行“久源软件杯” 黑龙江科学技术高校第八届总结机程序设计大赛,热忱欢迎广大程序设计爱好者踊跃参预。

 

主办方:河南戏剧大学教务处、音信与网络工程高校

承办方:信息与网络工程大学统计机系

赞助方:郑州久源软件股份有限公司(独家赞助)

 

一、 竞赛时间:2017 年 4 月 22(周六)上午 8:00~12:00

二、比赛地点:统计机与网络试验中央(力行楼六楼)

三、参赛对象:14~16 级统计机、网络、新闻、电子等正规

四、 报名办法(免费报名参赛):

(1)报名网站: https://oj.ahstu.cc/JudgeOnline/contest_join.php?cid=1068

(2)请进入比赛 QQ 群:391668336(安科ACM官方群)

(3) 报名时间:2017 年 4 月 10日至 十一月 21 日

五、竞赛设奖:设一等奖8%、二等奖12%、三等奖15%、杰出奖若干

(1)一二三等奖都有方便的物质奖励

(2)一二等奖同学直接进入省ACM赛集训

六、比赛相关:

1.      竞技语言:C/C++/JAVA环境:DevCpp /CodeBlock /Eclipse

2.      竞技试题:接纳 ICPC 样式——赛题 8~10 道

3.       陶冶与竞技网站(AOJ):https://oj.ahstu.cc/

 

相关比赛携带将随后开展,请关怀群公告。

 

教务处、音讯与网络工程大学

2017 年 4月 11 日

Start Time: 2017-04-22
08:00:00 End Time: 2017-04-22 12:00:00

Current Time: 2017-4-22
22:28:34 Status:Ended   Public 

[Status]
[Standing]
[Statistics]

[Status]
[Standing]
[Statistics]

 

Problem ID

Title

Source

AC

Submit

N

ea平台365bet体育在线,1847 Problem  A

A -bits

icpc08th

2

48

Y

1848 Problem  B

B-黄金矿工

icpc08th

4

16

 

1849 Problem  C

C-皇后的交手

icpc08th

3

5

 

1850 Problem  D

D-纸盘游戏

icpc08th

4

48

N

1851 Problem  E

E-平均数

icpc08th

2

117

Y

1852 Problem  F

F-刹车

icpc08th

99

156

 

1853 Problem  G

G-圆组

icpc08th

2

35

Y

1854 Problem  H

H-曲线长度

icpc08th

34

56

Y

1855 Problem  I

I-相交点

icpc08th

63

70

Y

1856 Problem  J

J-老赵的挑逗

icpc08th

45

159

1847: A -bits

Time Limit: 1 Sec  Memory
Limit: 128 MB
Submit: 48  Solved: 2
上一题SubmitStatus标签打分编写题目新闻编排测试数据下一题

Description

定义F(n)为n的二进制表示中,“三番三次两个1出现的次数”例如 F(27)=2(27的二进制位11011)输入整数n(0<=n<=263 -2)求S =
F(0)+F(1)+…+F(n)的值

Input

多组输入,每行输入n,当n=-1时达成输入

Output

出口每行输入相应的S值

Sample Input

0615202122-1

Sample Output

Case 1: 0

Case 2: 2

Case 3: 12

Case 4: 13

Case 5: 13

Case 6: 14

那道题一开始感到挺简单,不过不是那样简单,首先必要用到长整型long
long,然后必要考虑时间问题

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;

long long aa,bb;

void cal(long long n) {
    bb += n;
    if (bb >= (1000000000000ll)) {
        aa += bb / (1000000000000ll);
        bb %= (1000000000000ll);
    }
}

int main() {
    freopen("a.in","r",stdin);
    freopen("a.out","w",stdout);
    int cas = 1;
    long long n;
    long long a,b,c,m;
    while (cin >> n && n >= 0) {
        aa = bb = 0;
        m = 1, a = n;
        for (int i = 0; i < 62; i++) {
            cal((n>>2)*m);
            if ((n & 3) == 3)
                cal((a&((1ll<<i)-1))+1);
            m <<= 1;
            n >>= 1;
        }
        printf("Case %d: ", cas++);
        if(aa) {
            cout << aa;
            printf("%012lld\n",bb);
        }
        else cout<<bb<<endl;
    }
    return 0;
}

1848: B-黄金矿工

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 16  Solved: 4
上一题SubmitStatus标签打分编排题目音讯编辑测试数据下一题

Description

在上个世纪前,安科的后山曾经是一个黄金矿山(现在无力吐槽)。在山上住着是n个矿工,他们艰辛一年底于到了发年底嘉奖的时候了,公司的COOvyoung先生决定将一块黄金发给最有价值矿工,不过那就很让她讨厌了,那么些矿工每个人都是可怜拼命的做事的。无奈,vyoung决定让上帝来支配。他让n课矿工围坐在一起成一个圈,第二回淘汰第m个,未来每数k个数淘汰一个,最终一个雁过拔毛的将收获那块金块。

Input

输入包罗多组数据。每组数据包括几个整数 n,k,m(<=2n<=10000,1<=k<=10000,1<=m<=n)

输入完结标志为n=k=m=0

Output

对于每组数据输出最终被留下来的人

Sample Input

8 5 3

100 9999 98

10000 10000 10000

0 0 0

Sample Output

1

93

2019

模板题,较为简单

#include<cstdio>

int main()
{
    freopen("a.in","r",stdin);
    freopen("a.out","w",stdout);
  int n,m,k,f;
  while(scanf("%d%d%d",&n,&k,&m)==3&&n)
  {
    f=0;
    for(int i=2;i<=n;i++)f=(f+k)%i;
    f=(m-k+1+f)%n;
    if(f<=0)f+=n;
    printf("%d\n",f);
  }
}

1849: C-皇后的对打

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 5  Solved: 3
上一题SubmitStatus标签打分编写题目新闻编制测试数据下一题

Description

在国际象棋中,多个皇后相互攻击只会是在相同行,同一列,或者同一对角线上。现在交由一个nxm的棋盘,问有稍许种方法放置四个互相攻击的皇后

Input

多组输入,每组输入包涵几个整数n,m(0<=n,m<=106)输入完结的注脚为n=m=0

Output

对此每组输入,输出对应的方案数

Sample Input

100 223

Sample Output

10907100

那道题如故不是很通晓,可是下边一个代码就一个公式就化解了,挺郁闷的

#include<iostream>
#include<cstdio>
#include<algorithm>

using namespace std;

int main()
{   freopen("a.in","r",stdin);
    freopen("a.out","w",stdout);
    unsigned long long n,m;
    while(cin>>n>>m){
        if(!n&&!m)break;
        if(n>m)swap(n,m);
        cout<<n*m*(m+n-2)+2*n*(n-1)*(3*m-n-1)/3<<endl;
    }

    return 0;
}

1850: D-纸盘游戏

Time Limit: 1 Sec  Memory
Limit: 128 MB
Submit: 48  Solved: 4
上一题SubmitStatus标签打分编制题目新闻编辑测试数据下一题

Description

高等高校克罗地亚语四级考试即未来临了,你是否在心神不定的复习?也许紧张得连短学期的ACM都没工夫陶冶了,反正自己明白的Kiki和Cici都是这么。当然,作为在考场浸润了十几载的现世硕士,Kiki和Cici更明白考前的放宽,所谓“张弛有道”就是其一意思。那不,Kiki和Cici在天天早晨休息此前都要玩会儿扑克牌以放宽神经。
“升级”?“双扣”?“红五”?还是“斗地主”?
自然都不是!这多俗啊~
作为计算机大学的学生,Kiki和Cici打牌的时候可没忘记专业,她们打牌的条条框框是如此的:
1、  总共n张牌;
2、  双方轮流抓牌;
3、  每人每趟抓牌的个数只好是2的幂次(即:1,2,4,8,16…)
4、  抓完牌,胜负结果也出去了:最终抓完牌的人为胜者;
假使Kiki和Cici都是十足聪明(其实不用如果,哪有不通晓的学生~),并且每一次都是Kiki先抓牌,请问什么人能赢呢?
自然,打牌无论谁赢都问题不大,主要的是霎时赶到的CET-4能有好的图景。
Good luck in CET-4 everybody!

Input

输入数据包括几个测试用例,每个测试用例占一行,包罗一个整数n(1<=n<=1000)。

Output

若是Kiki能赢的话,请输出“Kiki”,否则请输出“Cici”,每个实例的出口占一行。

那道题也是,看了代码少的大致难以置信,考察的博弈论。

简单找到规律,最佳策略是通过取1或2张牌,使留给对手的牌数总是3的倍数,那时对手不容许两回取光,而你就足以将除以3的余数部分取光。

这样一来就自然胜利。

#include<iostream>
#include<cstdio>
using namespace std;
int main(void)
{
    freopen("a.in","r",stdin);
    freopen("a.out","w",stdout);
    int n;
    while(scanf("%d",&n)==1)
    {
        if(n%3==0)
            cout<<"Cici"<<endl;
        else
            cout<<"Kiki"<<endl;
    }
    return 0;
}

1851: E-平均数

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 117  Solved: 2
上一题SubmitStatus标签打分编排题目音讯编辑测试数据下一题

Description

给出n个数,每相邻三个数求四次平均数获得n-1个数,在通过n-1次操作后,剩下1个数,求那个数是有点。

Input

多组输入,先输入T,表示有T组测试数据 每行输入一个n(0<=n<=50000),接下去一行输入n个数a[i],(-1000<=a[i]<=1000)

Output

对每组输入输出最终取得的一个数(保留小数点后三位)

Sample Input

4110.421.0 2.231 2 351 2 3 4 5

解题思路:类似与杨辉三角,第i个数起先被加了C(n−1i−1)次。总共有2n−1个数相加。可是因为n有50000,250000常有存不下,所以借助log函数。

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <set>
#include <cstdio>
#include <string>
#include <vector>
#include <map>
#include <cmath>
#include <algorithm>

#define LL long long
#define LLU unsigned long long

using namespace std;

double log_C[50005],a[50005];

int main()
{
    int n,T;
    scanf("%d",&T);
    for (int kcase=1;kcase<=T;++kcase)
    {
        scanf("%d",&n);
        for (int i=0;i<n;++i)
            scanf("%lf",&a[i]);
        log_C[0]=log10(1);
        for (int i=1;i<n;++i)
            log_C[i]=log_C[i-1]+log10(n-i)-log10(i);//,printf("%lf %lf\n",log_C[i],pow(10,log_C[i]));
        double ans=0.0;
        for (int i=0;i<n;++i)
            if (a[i]<0)
                ans-=pow(10,log_C[i]+log10(-a[i])-log10(2)*(n-1));
            else
                ans+=pow(10,log_C[i]+log10(a[i])-log10(2)*(n-1));
        printf("Case #%d: %.3lf\n",kcase,ans);
    }
    return 0;
}

1852: F-刹车

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 156  Solved: 99
上一题SubmitStatus标签打分编辑题目新闻编纂测试数据下一题

Description

汽车一每小时n km的快慢行驶,到某处须要减速停车。设汽车以等加速度 a
m/s2\  停顿。问从上马暂停,到停车,小车驶过多远。

Input

多组输入,每行输入n (0<=n<=400),a(-10<=a<=10)

Output

对此每组输入,输出小车到停下驶过的相距(单位:米)(小数点后保留三位)

Sample Input

36 -5

简单题

#include<iostream>
#include<cstdio>
using namespace std;

int main(){
    // freopen("a.in","r",stdin);
      //  freopen("a.out","w",stdout);
int a,n;
while(cin>>n>>a){

    double v0 = n*1000*1.0/3600;
    double t = v0*1.0/(a*-1);
    double s = v0*t + 0.5*a*t*t;
    printf("%.3f\n",s);
}
return 0;
}

1853: G-圆组

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 35  Solved: 2
上一题SubmitStatus标签打分编辑题目新闻编写测试数据下一题

Description

给出n个圆的圆心和半径,相交的圆算在一如既往组中,如圆1和圆2和圆3相交,则圆1,2,3在相同组中。求总共有几组圆。

Input

多组输入,第一行输入n,表示有n(0<=n<=1000)个圆,接下去n行,每行输入 圆心坐标 x,y,半径r (都是int型)

Output

对每组输入输出总共圆的组数

Sample Input

42 0 10 2 1-2 0 10 -2 1

Sample Output

4

问题较为不难,遍历判断任意三个圆,并查集举办操作即可

#include <iostream>
#include <vector>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
using namespace std;

typedef struct round {
    int x;
    int y;
    int r;
};
int n;
const int maxn  = 1000+10;
//int mp[maxn][maxn];
int f[maxn];
vector<struct round>V;
int findset(int x){
    return x==f[x]?x:f[x] = findset(f[x]);
}
void init(){
    V.clear();
    for(int i=0;i<maxn;i++)
        f[i]=i;
for(int i=0;i<n;i++){
    int x0,y0,R;
    scanf("%d%d%d",&x0,&y0,&R);
    struct round s;
    s.x = x0;
    s.y = y0;
    s.r = R;
    V.push_back(s);
}
}

void Union(int a,int b){
    int x = findset(a);
    int y = findset(b);
    if(x!=y)
        f[y]=x;
}
double  dis(struct round a,struct round b){
    double s = sqrt(1.0*(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
    return s;
}
bool charge(struct round a,struct round b){
    return dis(a,b)<(a.r+b.r);
}
void solve(){
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(charge(V[i],V[j])&&i!=j){
               // cout<<dis(V[i],V[j])<<endl;
                Union(i,j);
            }
        }
    }
    int s = 0;
    for(int i=0;i<n;i++)
        if(f[i]==i)s++;
        printf("%d\n",s);
}
int main(){
    freopen("a.in","r",stdin);
    freopen("a.out","w",stdout);
    while(~scanf("%d",&n)){
        init();
        solve();
    }
    return 0;
}

1854: H-曲线长度

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 56  Solved: 34
上一题SubmitStatus标签打分编制题目音信编辑测试数据下一题

Description

计量曲线y  =
x3/2  上相应于ab的一段弧长(-100<a,b<100,a,b均为int)

Input

多组输入,每组包涵八个数,a,b

Output

对于每组输入,输出对应区间的弧长,结果小数点后保留三位

Sample Input

1 2

Sample Output

1.578

#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;


int main(){
    //freopen("a.in","r",stdin);
   // freopen("a.out","w",stdout);
int a,b;
while(cin>>a>>b){
       // double d = 3.0/2;
double s = 2.0/3*(pow((1+b)*1.0,1.5)-pow((1+a)*1.0,1.5));

printf("%.3f\n",s);

}
return 0;
}

1855: I-相交点

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 70  Solved: 63
上一题SubmitStatus标签打分编排题目音讯编纂测试数据下一题

Description

圆1 圆心坐标(-1,0)半径为1.5,圆2圆心坐标为(2,0)半径为2,求那八个圆的交点坐标,结果保留小数点后三位

Input

Output

依次输出三个点坐标,输出格式如下

x1 y1

x2 y2

#include<iostream>
#include<cmath>
#include<cstdio>

using namespace std;

int main()
{
    freopen("a.out","w",stdout);
    int x1 = -1,y1 = 0,r1 = 1.5;
    int x2 = 2,y2 = 0, r2 = 2;
    double mid = 1.0*(x2+x1)/2;
    double x  = 2 - mid;
    double y = sqrt(4-x*x*1.0);
    printf("%.3f %.3f\n%.3f %.3f\n",x,y,x,y*-1);
    return 0;
}

1856: J-老赵的挑逗

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 159  Solved: 45
上一题SubmitStatus标签打分编排题目新闻编辑测试数据下一题

Description

贯通数学的老赵现在想难为一下热衷编程的童鞋们,现在提交一个三角的三条边a,b,c求出这些三角的内切圆和外接圆的面积

Input

多组输入,每行蕴含七个整数数a,b,c

Output

从没每组输入输出对应三角形的内切圆和外围圆面积(结果保留小数点后三位)

Sample Input

3 4 5

Sample Output

3.142 19.635

#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;

double cacu(double r){
double pi = atan(1)*4;
return pi*r*r;
}
int main(){
  //  freopen("a.in","r",stdin);
   // freopen("a.out","w",stdout);
int a,b,c;
while(cin>>a>>b>>c){
    double p = 1.0*(a+b+c)/2;
    double temp = p*(p-a)*(p-b)*(p-c);
    double s = sqrt(temp);
    double R = 1.0*a*b*c/(4*s);
    double r = 2*s/(a+b+c);
    double S1 = cacu(r);
    double S2 = cacu(R);
    printf("%.3f %.3f\n",S1,S2);
}
return 0;
}

屈居终榜

https://oj.ahstu.cc/JudgeOnline/contestrank.php?cid=1068

ea平台365bet体育在线 1

属于本太子出席的最后一届校赛了,简单统计下本次校赛吧,这一次校赛考的多数都是数学题,竞技刚开头时,不亮堂问题是pdf文档,有点意思,一开端做A题,考的二进制,感觉有思路,于是写,结果老是通但是样例,写的挺着急的,当时广上将友都AC好几题了,有点慌了,再换下一题,一看就是约瑟夫(Joseph)环问题,挺好的,准备的有模板,然后写上去就AC了,C题D题跳过,感觉没什么好的思路,E题平均数,随便写了一晃也AC了,接着写F题,写了写也AC了,感觉日子相比丰硕,不是很慌了,又回去去写A题,终于也AC了。。结果临时说问题全体重判了,重判了,结果全都WA了,全部WA,排行一下掉到了最后。我马上有如何办法啊,我也很绝望啊。算了吧,感觉这一次成绩会很差,已经这么了,那渐渐写吧,接着看A题,感觉数据量有点大,就如不怎么劳苦,照旧看B题吗,于是再写了五次Joseph环问题,因为材料准备充裕,找了个纯数学方法写了一次,然后就AC了,然后F题,真是不明了是怎么着问题,过了很久,用c++再付出了两回然后就过了,非常无语啊,然而还好F题末了如故重判了,然则真的也花了点时间找问题。再看I题相交点,因为不少都AC了那题,乍一看感觉十分劳动啊,没有样例,又过了很久才清楚那题就一组数据,输出结果就好了,我却还在找什么输入输出格式。。。然后AC了I题,接着写J,什么内切圆和外接圆面积的问题,怎么如此多数学啊,公式什么的早已经忘了,逐渐推呢,感觉一时半会又推不出。。。内切圆是找材料写好的,最后仍旧通过余弦定理求出外接圆的半径,于是AC了,然后H题,H题求弧长,是考定积分的,一起头没有怎么写,算了很久然后却积分不出去,最终发现积分里有地点写错了,挺简单的积分被我弄得很复杂,修改了一晃,不过仍旧通不过样例,输出了一串奇怪的串,我相信本次写的不会有题目,然而仍旧不对,时间就将要收场了,不会自身这道题也写不出来吗,,最终发现先后中一个变量用了三次,就像是值已经转移了,其实很已经发现了,然而我就是认为那么也是不会有题目的,最后依然AC了,那道题。还剩10多分钟,觉得自己平素不什么样日子写接下去的几题了,就算最少有一题仍旧有清晰的思绪,照旧不曾写了,然后后就像此停止了。

总的说来,感觉如故实力有许多不足吗,希望自己能源源努力学习,还有就是认为偶尔自己多少钻牛角尖,导致浪费广大日子。

校赛为止了,准备省赛了,舞台很大,我依然很不起眼,加油啊!

发表评论

电子邮件地址不会被公开。 必填项已用*标注