【杭州电子科技大学2018新生编程大赛题解】

01:

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<string>
 4 #include<cmath>
 5 #include<iostream>
 6 #include<algorithm>
 7 #include<map>
 8 #include<set>
 9 #include<queue>
10 #include<vector>
11 using namespace std;
12 typedef long long ll;
13 typedef unsigned int uint;
14 typedef unsigned long long ull;
15 typedef pair<int,int> PII;
16 typedef vector<int> VI;
17 #define fi first
18 #define se second
19 #define MP make_pair
20 #define N   11000
21 #define MOD 19260817
22 #define eps 1e-8
23 #define pi acos(-1)
24
25
26
27 int main()
28 {
29     int cas;
30     scanf("%d",&cas);
31     while(cas--)
32     {
33         int n;
34         scanf("%d",&n);
35         ll ans=1;
36         for(int i=1;i<=n;i++)
37         {
38             ll x;
39             scanf("%I64d",&x);
40             ans=ans*x%MOD;
41         }
42         printf("%I64d\n",ans);
43     }
44     return 0;
45 }

02:

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<string>
 4 #include<cmath>
 5 #include<iostream>
 6 #include<algorithm>
 7 #include<map>
 8 #include<set>
 9 #include<queue>
10 #include<vector>
11 using namespace std;
12 typedef long long ll;
13 typedef unsigned int uint;
14 typedef unsigned long long ull;
15 typedef pair<int,int> PII;
16 typedef vector<int> VI;
17 #define fi first
18 #define se second
19 #define MP make_pair
20 #define N   110000
21 #define MOD 1000000007
22 #define eps 1e-8
23 #define pi acos(-1)
24
25 ll s[N],a[N];
26
27 int main()
28 {
29     int cas;
30     scanf("%d",&cas);
31     while(cas--)
32     {
33         int n,m;
34         scanf("%d%d",&n,&m);
35         s[0]=0;
36         for(int i=1;i<=n;i++)
37         {
38             scanf("%I64d",&a[i]);
39             s[i]=s[i-1]+a[i];
40         }
41         for(int i=1;i<=m;i++)
42         {
43             ll x;
44             scanf("%I64d",&x);
45             int l=0;
46             int r=n;
47             int last=0;
48             while(l<=r)
49             {
50                  int mid=(l+r)>>1;
51                 if(s[mid]<x){last=mid; l=mid+1;}
52                  else r=mid-1;
53             }
54             printf("%d\n",last);
55         }
56 }
57     return 0;
58 }

03:贪心,每次塞到人最多的能塞下的车里,不行就开新车

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<string>
 4 #include<cmath>
 5 #include<iostream>
 6 #include<algorithm>
 7 #include<map>
 8 #include<set>
 9 #include<queue>
10 #include<vector>
11 using namespace std;
12 typedef long long ll;
13 typedef unsigned int uint;
14 typedef unsigned long long ull;
15 typedef pair<int,int> PII;
16 typedef vector<int> VI;
17 #define fi first
18 #define se second
19 #define MP make_pair
20 #define N   1100000
21 #define MOD 1000000007
22 #define eps 1e-8
23 #define pi acos(-1)
24
25 int a[N],b[N];
26
27 bool cmp(int a,int b)
28 {
29     return a>b;
30 }
31
32 int main()
33 {
34     int cas;
35     scanf("%d",&cas);
36     while(cas--)
37     {
38          int n,m;
39         scanf("%d%d",&n,&m);
40         for(int i=1;i<=m;i++) scanf("%d",&a[i]);
41         sort(a+1,a+m+1,cmp);
42         for(int i=0;i<=4;i++) b[i]=0;
43         int ans=0;
44         for(int i=1;i<=m;i++)
45         {
46             int flag=1;
47             for(int j=3;j>=1;j--)
48              if(j+a[i]<=4&&b[j]>0)
49              {
50                   b[j]--; b[j+a[i]]++;
51                   flag=0; break;
52              }
53             if(flag){ans++; b[a[i]]++;}
54         }
55         printf("%d\n",ans);
56     }
57     return 0;
58 }
59
60     

04:按增加的攻击力贪心

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<string>
 4 #include<cmath>
 5 #include<iostream>
 6 #include<algorithm>
 7 #include<map>
 8 #include<set>
 9 #include<queue>
10 #include<vector>
11 using namespace std;
12 typedef long long ll;
13 typedef unsigned int uint;
14 typedef unsigned long long ull;
15 typedef pair<int,int> PII;
16 typedef vector<int> VI;
17 #define fi first
18 #define se second
19 #define MP make_pair
20 #define N   11000
21 #define MOD 1000000007
22 #define eps 1e-8
23 #define pi acos(-1)
24
25 struct node
26 {
27     ll x,y,z;
28 }a[N];
29
30 bool cmp(node a,node b)
31 {
32     return a.z>b.z;
33 }
34
35 int main()
36 {
37     int cas;
38     scanf("%d",&cas);
39     while(cas--)
40     {
41          int n,m;
42         scanf("%d%d",&n,&m);
43         for(int i=1;i<=n;i++)
44         {
45              scanf("%I64d%I64d",&a[i].x,&a[i].y);
46              a[i].z=a[i].y-a[i].x;
47         }
48         ll ans=0;
49         sort(a+1,a+n+1,cmp);
50         for(int i=1;i<=n;i++)
51         {
52             ans+=a[i].x;
53             if(m>0&&a[i].z>0){m--; ans+=a[i].z;}
54         }
55         printf("%I64d\n",ans);
56     }
57     return 0;
58 }

05:

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<string>
 4 #include<cmath>
 5 #include<iostream>
 6 #include<algorithm>
 7 #include<map>
 8 #include<set>
 9 #include<queue>
10 #include<vector>
11 using namespace std;
12 typedef long long ll;
13 typedef unsigned int uint;
14 typedef unsigned long long ull;
15 typedef pair<int,int> PII;
16 typedef vector<int> VI;
17 #define fi first
18 #define se second
19 #define MP make_pair
20 #define N   11000
21 #define MOD 1000000007
22 #define eps 1e-8
23 #define pi acos(-1)
24
25 int a[N];
26
27 int main()
28 {
29     int cas;
30     scanf("%d",&cas);
31     while(cas--)
32     {
33         int n;
34         scanf("%d",&n);
35         int mx=0;
36         for(int i=1;i<=n;i++)
37         {
38             scanf("%d",&a[i]);
39             mx=max(mx,a[i]);
40         }
41         for(int i=1;i<=mx;i++)
42         {
43              for(int j=1;j<=n;j++)
44               if(a[j]>=mx-i+1) printf("#");
45                else printf(".");
46             printf("\n");
47         }
48         for(int i=1;i<=n;i++) printf("@");
49         printf("\n");
50     }
51     return 0;
52 }

06:

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<string>
 4 #include<cmath>
 5 #include<iostream>
 6 #include<algorithm>
 7 #include<map>
 8 #include<set>
 9 #include<queue>
10 #include<vector>
11 using namespace std;
12 typedef long long ll;
13 typedef unsigned int uint;
14 typedef unsigned long long ull;
15 typedef pair<int,int> PII;
16 typedef vector<int> VI;
17 #define fi first
18 #define se second
19 #define MP make_pair
20 #define N   11000
21 #define MOD 1000000007
22 #define eps 1e-8
23 #define pi acos(-1)
24
25 char a[N],b[N];
26
27 int main()
28 {
29     int cas;
30     scanf("%d",&cas);
31     while(cas--)
32     {
33          scanf("%s",a+1);
34          int n=strlen(a+1);
35          int m=0;
36          for(int i=1;i<=n;i++)
37          {
38               if(a[i]>=‘0‘&&a[i]<=‘9‘) continue;
39               b[++m]=a[i];
40          }
41          sort(b+1,b+m+1);
42         for(int i=1;i<=m;i++) printf("%c",b[i]);
43         printf("\n");
44     }
45     return 0;
46 }

07:每个询问是连续的一段,二分起点和终点

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<string>
 4 #include<cmath>
 5 #include<iostream>
 6 #include<algorithm>
 7 #include<map>
 8 #include<set>
 9 #include<queue>
10 #include<vector>
11 using namespace std;
12 typedef long long ll;
13 typedef unsigned int uint;
14 typedef unsigned long long ull;
15 typedef pair<int,int> PII;
16 typedef vector<int> VI;
17 #define fi first
18 #define se second
19 #define MP make_pair
20 #define N   510000
21 #define MOD 1000000007
22 #define eps 1e-8
23 #define pi acos(-1)
24 #define oo  1000000000
25
26 ll a[N];
27
28 int main()
29 {
30     int cas;
31     scanf("%d",&cas);
32     while(cas--)
33     {
34         int n,m;
35         scanf("%d%d",&n,&m);
36         for(int i=1;i<=n;i++) scanf("%I64d",&a[i]);
37         sort(a+1,a+n+1);
38         for(int i=1;i<=m;i++)
39         {
40             ll x,y;
41             scanf("%I64d%I64d",&x,&y);
42             //printf("%d %d ",x,y);
43             //ll t=ll(sqrt(x));
44             //if(t*t<x) x=(t+1)*(t+1);
45             //t=ll(sqrt(y));
46             //if(t*t<y) y=(t-1)*(t-1);
47             //printf("%d %d\n",x,y);
48             int l=1;
49             int r=n;
50             int last1=n+1;
51             while(l<=r)
52             {
53                  int mid=(l+r)>>1;
54                  if(a[mid]*a[mid]>=x){last1=mid; r=mid-1;}
55                   else l=mid+1;
56             }
57             l=1;
58             r=n;
59             int last2=0;
60             while(l<=r)
61             {
62                 int mid=(l+r)>>1;
63                     if(a[mid]*a[mid]<=y){last2=mid; l=mid+1;}
64                  else r=mid-1;
65             }
66             int    ans=last2-last1+1;
67             ans=max(ans,0);
68             //p    rintf("%d %d %d\n",last1,last2,ans);
69             printf("%d\n",ans);
70          }
71     }
72     return 0;
73 }

08:dp[i][j]表示积分为i,当前j朝上的最小步数

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<string>
 4 #include<cmath>
 5 #include<iostream>
 6 #include<algorithm>
 7 #include<map>
 8 #include<set>
 9 #include<queue>
10 #include<vector>
11 using namespace std;
12 typedef long long ll;
13 typedef unsigned int uint;
14 typedef unsigned long long ull;
15 typedef pair<int,int> PII;
16 typedef vector<int> VI;
17 #define fi first
18 #define se second
19 #define MP make_pair
20 #define N   50000
21 #define MOD 1000000007
22 #define eps 1e-8
23 #define pi acos(-1)
24 #define oo  1000000000
25
26 int dp[N][10];
27
28 int main()
29 {
30     int cas;
31     scanf("%d",&cas);
32     for(int i=0;i<=10000;i++)
33      for(int j=1;j<=6;j++) dp[i][j]=oo;
34     dp[0][1]=0;
35     for(int i=0;i<=10000;i++)
36      for(int j=1;j<=6;j++)
37       for(int k=1;k<=6;k++)
38        if(j+k!=7&&j!=k&&dp[i][j]!=oo&&i+k<=10000) dp[i+k][k]=min(dp[i+k][k],dp[i][j]+1);
39     while(cas--)
40     {
41         int n;
42         scanf("%d",&n);
43         if(n==1){printf("-1\n"); continue;}
44         int ans=oo;
45         for(int i=1;i<=6;i++) ans=min(ans,dp[n][i]);
46         if(ans==oo) printf("-1\n");
47          else printf("%d\n",ans);
48     }
49
50
51     return 0;
52 }

09:完全背包转多重背包O(n^3),用调和级数把一个O(n^2)优化成O(n log n)

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <string>
 4 #include <cmath>
 5 #include <iostream>
 6 #include <algorithm>
 7 #include <map>
 8 #include <set>
 9 #include <queue>
10 #include <vector>
11 using namespace std;
12 typedef long long ll;
13 typedef unsigned int uint;
14 typedef unsigned long long ull;
15 typedef pair<int, int> PII;
16 #define fi first
17 #define se second
18 #define MP make_pair
19
20
21 int n,v;
22 int a[1010];
23 int f[1010][2010];
24
25 int main()
26 {
27     int cas;
28     scanf("%d",&cas);
29     while(cas--)
30     {
31         int n,v;
32         scanf("%d %d",&n,&v);
33         for (int i = 1; i <= n;i++) a[i]=read();
34         for (int i = 0; i <= n;i++)
35             for (int j = 0; j<=v;j++)
36                 f[i][j]=-2000000000;
37         f[0][0]=0;
38         for (int i=n;i>=1;i--)
39             for (int j = 0;j<min(v/i,n);j++)
40                 for (int k=0;k<=v-i;k++)
41                     f[j+1][k+i]=max(f[j+1][k+i],f[j][k]+a[i]);
42         printf("%d\n",f[n][v]);
43     }
44 }

这场当了一把演员……

原文地址:https://www.cnblogs.com/myx12345/p/9940166.html

时间: 2024-10-04 08:32:19

【杭州电子科技大学2018新生编程大赛题解】的相关文章

杭州电子科技大学Online Judge 之 “确定比赛名次(ID1285)”解题报告

杭州电子科技大学Online Judge 之 "确定比赛名次(ID1285)"解题报告 巧若拙(欢迎转载,但请注明出处:http://blog.csdn.net/qiaoruozhuo) Problem Description 有N个比赛队(1<=N<=500).编号依次为1,2,3,.....N进行比赛.比赛结束后.裁判委员会要将全部參赛队伍从前往后依次排名. 但如今裁判委员会不能直接获得每一个队的比赛成绩,仅仅知道每场比赛的结果.即P1赢P2,用P1.P2表示,排名时P

杭州电子科技大学 Online Judge 之 “杨辉三角(ID2032)”解题报告

杭州电子科技大学 OnlineJudge 之 "杨辉三角(ID2032)"解题报告 巧若拙(欢迎转载,但请注明出处:http://blog.csdn.net/qiaoruozhuo) Problem Description 还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 Input 输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<

杭州电子科技大学Online Judge 之 “水仙花数(ID2010)”解题报告

杭州电子科技大学Online Judge 之 "水仙花数(ID2010)"解题报告 巧若拙(欢迎转载,但请注明出处:http://blog.csdn.net/qiaoruozhuo) Problem Description 水仙花数 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: "水仙花数"是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3. 现在要求输出所有在m和n范围内的水仙花数. Inpu

杭州电子科技大学程序设计竞赛(2016’12)- 网络同步赛 1002

递增数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 0    Accepted Submission(s): 0 Problem Description 若一个正整数 A,相邻位总是满足低位大于等于高位,则称之为递增数.例如:1223,667 等都是递增数.现在有个正整数 X,请问有多少个正整数 A 满足 1<=A<=X,且 A 为

杭州电子科技大学Online Judge 之 “漂浮的气球(ID1004)”解题报告

巧若拙(欢迎转载,但请注明出处:http://blog.csdn.net/qiaoruozhuo) 题目描述: Let the Balloon Rise Problem Description Contest time again! How excited it is tosee balloons floating around. But to tell you a secret, the judges' favoritetime is guessing the most popular pro

2012年第三届西安电子科技大学网络攻防 大赛暨网络渗透部分通关方案 V2.0

2012年第三届西安电子科技大学网络攻防 大赛暨网络渗透部分通关方案 V2.0 南国利剑 Cyberpolice http://weibo.com/nanguojian 前 言: 本次比赛由西电信息安全协会 主办官方站点:https://csc.xdsec.org 10.1-10.15日.注册时间截止于10月10日.请参赛队伍合理分配时间. --XDSEC 0X000 第一关:本地关闭javascript查看网页源码,箭头所指部分为加密部分为十六进制加密 解密得Key:f1rsTPa5skey

一个工作13年的SAP开发人员的回忆:电子科技大学2000级新生入学指南

让我们跟着Jerry的文章,一起回到本世纪初那个单纯美好的年代. 2000年9月,Jerry告别了自己的高中时代,进入到自己心目中的电子游戏大学,开始了四年的本科生活.每个新生,都拿到了这样一本薄薄的小册子. 这是目录: 当时还没有清水河校区,只有九里堤校区,我们都简称为"二校区".关于Jerry的九里堤生活,在我另一篇文章没有电脑没有手机没有网络没有爱情--纪念我的电子科技大学九里堤校区大一生活里有专门讲述. 正文第一页是学校概况,可以看到最下部的页脚,还是UEST,因为当时还没有在

【结果发布】第六届SeedCoder编程大赛初赛结果发布

微软俱乐部科技文化月seedcoder2014编程大赛已经初审完成. 评审小组选出最棒的作品进入决赛(现场答辩+陈述环节,由评委现场打分).终于排名由"初赛分数+现场答辩分"决定. 决赛答辩时间为:2014年4月20日(本周日)  晚上19:00     有讲座票派发 地点: 34号楼103教室 以下为初赛结果(依据队名排序): 算法组获奖的队伍名单 队伍 学院 年级 奖项 YOLO 计算机科学与project学院 大二 參加答辩 aaaaaa 软件学院 大三 參加答辩 mg 软件学院

没有电脑没有手机没有网络没有爱情——纪念我的电子科技大学九里堤校区大一生活

最近有事路过九里堤,途经Jerry十九年前曾经学习和生活过的电子科技大学九里堤校区,于是进去怀了个旧. 本文如无特殊说明, 都是Jerry实地拍摄的照片. 九里堤校区坐落在四川省成都市金牛区九里堤僻静一隅,是电子科技大学三大校区之一.当年Jerry入学时,这里的周围还是一派城乡结合部的风格,现在周围已经公路整齐,绿树成荫,不过安静依旧. 母校门口的保安大叔非常敬业,一直警惕地注视着Jerry,所以我也没能拍一张校区正门的照片,只能网上找了一张. 2000年九月,Jerry拿着电子科技大学计算机科