2019 The 19th Zhejiang University Programming Contest

感想:

  今天三个人的状态比昨天计院校赛的状态要好很多,然而三个人都慢热体质导致签到题wa了很多发。最后虽然跟大家题数一样(6题),然而输在罚时。

  只能说,水题还是刷得少,看到签到都没灵感实在不应该。

 


 

题目链接:http://acm.zju.edu.cn/onlinejudge/showContestProblems.do?contestId=391

 

  A:简单贪心,按高度sort一下就好了,这里用优先队列处理

 1 #include <cstdio>
 2 #include <queue>
 3 #include <algorithm>
 4 #include <functional>
 5 
 6 using namespace std;
 7 
 8 int M[100005], F[100006];
 9 
10 int main(void)
11 {
12     int T;
13     while (scanf("%d", &T) != EOF)
14     {
15         while (T--)
16         {
17             int n, m;
18             priority_queue <int, vector<int>, greater <int>> fu, fd, mu, md;
19             scanf("%d %d", &n, &m);
20             for (int i = 0; i < n; i++)
21             {
22                 scanf("%d", &M[i]);
23             }
24             for (int i = 0; i < m; i++)
25             {
26                 scanf("%d", &F[i]);
27             }
28             for (int i = 0; i < n; i++)
29             {
30                 int flag;
31                 scanf("%d", &flag);
32                 if (flag)
33                 {
34                     mu.push(M[i]);
35                 }
36                 else
37                 {
38                     md.push(M[i]);
39                 }
40             }
41             for (int i = 0; i < m; i++)
42             {
43                 int flag;
44                 scanf("%d", &flag);
45                 if (flag)
46                 {
47                     fu.push(F[i]);
48                 }
49                 else
50                 {
51                     fd.push(F[i]);
52                 }
53             }
54             int ans = 0;
55             // fu <-> md
56             while (!fu.empty() && !md.empty())
57             {
58                 if (fu.top() < md.top())
59                 {
60 //                  printf("pop: %d %d\n", fu.top(), md.top());
61                     fu.pop();
62                     md.pop();
63                     ans++;
64                 }
65                 else
66                 {
67 //                  printf("pop: %d\n", md.top());
68                     md.pop();
69                 }
70             }
71             // fd <-> mu
72             while (!mu.empty() && !fd.empty())
73             {
74                 if (mu.top() < fd.top())
75                 {
76 //                  printf("pop: %d %d\n", mu.top(), fd.top());
77                     mu.pop();
78                     fd.pop();
79                     ans++;
80                 }
81                 else
82                 {
83 //                  printf("pop: %d\n", fd.top());
84                     fd.pop();
85                 }
86             }
87             printf("%d\n", ans);
88         }
89     }
90     return 0;
91 }
View Code

  B:找规律,显然是不停把n除二加起来,高精就用java

 1 import java.util.*;
 2 import java.lang.*;
 3 import java.math.BigInteger;
 4 
 5 public class Main {
 6 
 7     public static void main(String[] args) {
 8         Scanner cin=new Scanner(System.in);
 9         while (cin.hasNextInt())
10         {
11             int t=cin.nextInt();
12             while (t-->0){
13                 BigInteger ans=BigInteger.ZERO;
14                 BigInteger x=cin.nextBigInteger();
15                 while (!x.equals(BigInteger.ONE)){
16                     x=x.divide(BigInteger.valueOf(2));
17                     ans=ans.add(x);
18                 }
19                 System.out.println(ans);
20             }
21         }
22     }
23 }
View Code

  C:模拟

  1 #include <cstdio>
  2 
  3 char t[2002][2002];
  4 bool vis[2002][2002];
  5 
  6 const int p3[] = {1, 3, 9, 27, 81, 243};
  7 
  8 const int movement[4][2] =
  9 {
 10     {1, 0}, // DOWN
 11     {0, 1},  // RIGHT
 12     {-1, 0}, // UP
 13     {0, -1} // LEFT
 14 };
 15 
 16 void init(int n, int m)
 17 {
 18     for (int i = 0; i < n; i++)
 19     {
 20         for (int j = 0; j < m; j++)
 21         {
 22             vis[i][j] = false;
 23         }
 24     }
 25 }
 26 
 27 int solve(void)
 28 {
 29     int ans = 0;
 30     int n, m;
 31     int a, b;
 32     long long int k;
 33     scanf("%d %d", &n, &m);
 34     scanf("%d %d %lld", &a, &b, &k);
 35     a--;
 36     b--;
 37     char cmd[300];
 38     scanf(" %s", cmd);
 39     init(n, m);
 40     for (int i = 0; i < n; i++)
 41     {
 42         scanf(" %s", t[i]);
 43         for (int j = 0; j < m; j++)
 44         {
 45             t[i][j] -= '0';
 46         }
 47     }
 48     while (k--)
 49     {
 50         int x = p3[4] * t[a][b]
 51                 + p3[3] * t[a - 1][b]
 52                 + p3[2] * t[a + 1][b]
 53                 + p3[1] * t[a][b - 1]
 54                 + p3[0] * t[a][b + 1];
 55         if (vis[a][b])
 56         {
 57             return ans;
 58         }
 59         vis[a][b] = true;
 60         if (cmd[x] == 'D')
 61         {
 62             int na = a + movement[0][0], nb = b + movement[0][1];
 63             if (t[na][nb] == 1) return ans;
 64             else a = na, b = nb;
 65         }
 66         else if (cmd[x] == 'R')
 67         {
 68             int na = a + movement[1][0], nb = b + movement[1][1];
 69             if (t[na][nb] == 1) return ans;
 70             else a = na, b = nb;
 71         }
 72         else if (cmd[x] == 'U')
 73         {
 74             int na = a + movement[2][0], nb = b + movement[2][1];
 75             if (t[na][nb] == 1) return ans;
 76             else a = na, b = nb;
 77         }
 78         else if (cmd[x] == 'L')
 79         {
 80             int na = a + movement[3][0], nb = b + movement[3][1];
 81             if (t[na][nb] == 1) return ans;
 82             else a = na, b = nb;
 83         }
 84         else if (cmd[x] == 'P')
 85         {
 86             if (t[a][b] == 2)
 87             {
 88                 t[a][b] = 0;
 89                 ans++;
 90                 init(n, m);
 91             }
 92         }
 93         else if (cmd[x] == 'I')
 94         {
 95             return ans;
 96         }
 97     }
 98     return ans;
 99 }
100 
101 int main(void)
102 {
103     int T;
104     while (scanf("%d", &T) != EOF)
105     {
106         while (T--)
107         {
108             printf("%d\n", solve());
109         }
110     }
111     return 0;
112 }
View Code

  D:上一题的人工智能版,要你构造特定程序捡垃圾。方法是走回字形,比如我们选定顺时针方向走,那么当我们走到左边靠墙位置的时候,如果右手边有垃圾,那么我们往右走一格再继续往上走。如果走到地图中间位置(四周没垃圾)就往上走。如果机器人走了连续相同方向n次就让机器人“抖动”一下(属实人工智能调参)。然而cy他们队就是A了(神仙啊

  E:从右往左扫一次就好了,队友没开LL导致wa一发要批评

 1 #include <cstdio>
 2 
 3 long long int a[200], b[200];
 4 
 5 int main(void)
 6 {
 7     int T;
 8     while (scanf("%d", &T) != EOF)
 9     {
10         while (T--)
11         {
12             int n;
13             scanf("%d", &n);
14             for (int i = 0; i < n; i++)
15             {
16                 scanf("%lld", &a[i]);
17             }
18             for (int i = 0; i < n; i++)
19             {
20                 scanf("%lld", &b[i]);
21             }
22             bool flag = true;
23             for (int i = n - 1; i >= 0; i--)
24             {
25                 if (b[i] >= a[i])
26                 {
27                     if (i)
28                     {
29                         b[i - 1] += b[i] - a[i];
30                     }
31                 }
32                 else
33                 {
34                     flag = false;
35                     break;
36                 }
37             }
38             printf(flag ? "Yes\n" : "No\n");
39         }
40     }
41     return 0;
42 }
View Code

  F:神仙题

  G:非常简单的贪心

 1 #include <cstdio>
 2 #include <queue>
 3 #include <algorithm>
 4 #include <functional>
 5 
 6 using namespace std;
 7 
 8 int M[100005], F[100006];
 9 
10 int main(void)
11 {
12     int T;
13     while (scanf("%d", &T) != EOF)
14     {
15         while (T--)
16         {
17             int n, k;
18             scanf("%d %d", &n, &k);
19             priority_queue <long long int> pos, neg;
20             for (int i = 0; i < n; i++)
21             {
22                 int tmp;
23                 scanf("%d", &tmp);
24                 if (tmp > 0)
25                 {
26                     pos.push(tmp);
27                 }
28                 else
29                 {
30                     neg.push(-tmp);
31                 }
32             }
33             long long int ans = 0, maxn = 0;
34             while (!pos.empty())
35             {
36                 ans += 2 * pos.top();
37                 maxn = max(pos.top(), maxn);
38                 int cnt = k - 1;
39                 pos.pop();
40                 while (cnt-- && !pos.empty())
41                 {
42                     pos.pop();
43                 }
44             }
45             while (!neg.empty())
46             {
47                 ans += 2 * neg.top();
48                 maxn = max(neg.top(), maxn);
49                 int cnt = k - 1;
50                 neg.pop();
51                 while (cnt-- && !neg.empty())
52                 {
53                     neg.pop();
54                 }
55             }
56             printf("%lld\n", ans - maxn);
57         }
58     }
59     return 0;
60 }
View Code

  H:救公主,边双相关的题目(然而队友最后没撸出来)

   I:要求逆元的看不懂的题目

  J:签到(wa了7次,三个人都没睡醒。这里我马上想到了可以输出n×2和n×3,然而忘记特判n==1的情况……)

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstdlib>
 4 
 5 using namespace std;
 6 
 7 typedef long long ll;
 8 
 9 ll read()
10 {
11     ll x = 0; char c = getchar(); ll flag = 1;
12     while (c < '0' || c > '9')
13     {
14         if (c == '-')
15         {
16             flag = -1;
17         }
18         c = getchar();
19     }
20     while (c >= '0' && c <= '9')x = x * 10ll + c - '0', c = getchar();
21     return x;
22 }
23 
24 int main()
25 {
26     ll T;
27     while (scanf("%lld", &T) == 1)
28     {
29         while (T--)
30         {
31             ll x;
32             x = read();
33             if (x % 2 == 0)
34             {
35                 printf("4 %lld\n", 4 + x);
36             }
37             else
38             {
39                 printf("15 %lld\n", 15 + x);
40             }
41         }
42     }
43 
44     return 0;
45 }
View Code

 

转载于:https://www.cnblogs.com/JHSeng/p/10706568.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openvas安装和基本使用

OpenVAS是开放式漏洞评估系统&#xff0c;也可以说它是一个包含着相关工具的网络扫描器。OpenVAS是开放式漏洞评估系统&#xff0c;也可以说它是一个包含着相关工具的网络扫描器。其核心部件是一个服务器&#xff0c;包括一套网络漏洞测试程序&#xff0c;可以检测远程系统和应…

修改mysql编码方式centos_CentOS下修改mysql数据库编码为UTF-8(附mysql开启远程链接和开放3306端口)...

楼主在配置好linux云服务器的jdk,tomcat,mysql后&#xff0c;当要开始部署项目是&#xff0c;忽然意识到一个很严重的问题&#xff0c;那就是数据库的编码问题&#xff0c;自安装完成后并未修改数据库的额编码。。。。下面就来讲说linux下修改mysql的编码问题吧。。有一个问题网…

Java 8 Lambda表达式的函数式编程– Monads

什么是monad &#xff1f;&#xff1a; monad是一种设计模式概念&#xff0c;用于大多数功能编程语言&#xff08;如Lisp&#xff09;或现代世界的Clojure或Scala中。 &#xff08;实际上&#xff0c;我会从scala复制一些内容。&#xff09;现在&#xff0c;为什么它在Java中变…

srtvlet filter

Filter&#xff0c;过滤器&#xff0c;顾名思义&#xff0c;即是对数据等的过滤&#xff0c;预处理过程。为什么要引入过滤器呢&#xff1f;在平常访问网站的时候&#xff0c;有时候发一些敏感的信息&#xff0c;发出后显示时 就会将敏感信息用*等字符替代&#xff0c;这就是用…

mysql怎么合并行_mysql怎么合并行

mysql合并行的方法&#xff1a;使用函数【GROUP_CONCAT()】&#xff0c;代码为【SELECT am.activeId,GROUP_CONCAT(m.modelName SEPARATOR ‘,’) modelName】。【相关学习推荐&#xff1a;mysql学习】mysql合并行的方法&#xff1a;一个字段可能对应多条数据&#xff0c;用mys…

ubuntu 14 编译ARM g2o-20160424

1. 安装eigen sudo apt-get install libeigen3-dev sudo apt-get install libsuitesparse-dev sudo apt-get install libqglviewer-dev 对于ARM版本&#xff0c;可以下载http://eigen.tuxfamily.org&#xff0c;之后放置在toolchain可以找到的三方库位置处&#xff0c;我使用的…

将旧项目从Ant迁移到Maven的4个简单步骤

一段时间以来&#xff0c;我们一直在考虑将构建从蚂蚁移植到Maven。 它发生在上个月&#xff0c;实际上比我们预期的要简单。 根据我的经验&#xff0c;这里简要介绍了我们遵循的步骤。 我们的应用程序是一个具有多个框架和技术的企业Web应用程序构建&#xff0c;并作为单个WAR…

浅谈servlet与jsp的关系

servlet是用java语言编写的&#xff0c;是一个java类。主要功能是用来接受、处理客户端的请求&#xff0c;并把处理结果返回到客户端显示。Jsp是servlet发展后期的产物。在没有jsp之前&#xff0c;servlet利用输出流动态生成整个HTML页面&#xff0c;输出内容包括每一个HTML标签…

折腾Java设计模式之建造者模式

博文原址&#xff1a;折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, allowing the same construction process to create various representations. 将复杂对象的构造与其表现分离&#xff0c;允许相同的构…

python小甲鱼练习题答案_小甲鱼Python第 013讲元组:戴上了枷锁的列表 | 课后测试题及参考答案...

测试题&#xff1a;0. 请用一句话描述什么是列表&#xff1f;再用一句话描述什么是元组&#xff1f;列表&#xff1a;一个大仓库&#xff0c;可以随时往里面添加和删除任何东西。元祖&#xff1a;封闭的列表&#xff0c;一旦定义&#xff0c;就不可改变(不能添加、删除或修改)1…

获得的经验:ActiveMQ,Apache Camel和连接池

每隔一段时间&#xff0c;我会遇到一个与ActiveMQ的连接和池相关的有趣问题&#xff0c;而今天&#xff0c;我想讨论一些并不总是很清楚的问题&#xff0c;并且在使用ActiveMQ和Camel JMS时可能会导致您大量饮酒。 并不是说您无论如何都不会在使用ActiveMQ和Camel时大量喝酒………

羊车门问题

题目描述&#xff1a;有3扇关闭的门&#xff0c;一扇门后面停着汽车&#xff0c;其余门后是山羊&#xff0c;只有主持人知道每扇门后面是什么。参赛者可以选择一扇门&#xff0c;在开启它之前&#xff0c;主持人会开启另外一扇门&#xff0c;露出门后的山羊&#xff0c;然后允许…

webapp优化

1. 优化前提&#xff1a; 业务架构与数据库设计 2. 单页web应用 &#xff1a; ExtJs backbone ng avalon 框架&#xff1a; React Native &#xff0c; ionic &#xff0c; Mui, metror,WeeX,device one Meteor(版本: 1.0) 的另一个特点是它会通过手机内存中运行的 mi…

高版本Sqlserver数据库导入低版本Sqlserver

今天想跑一个关于java网站的demo&#xff0c;结果在附加数据库项这一块出现问题&#xff0c;例程的数据库用的是sqlserver2014&#xff0c;而我的是2008&#xff0c;添加数据库出现错误。经过一番查找&#xff0c;也找到某人写的一些博客上的解决方案&#xff0c;不过不是很清楚…

mysql删除bin-log_删除MYSQl BIN-LOG 日志

1.查找当前有哪些二进制日志文件&#xff1a;mysql> show binary logs;-----------------------------| Log_name | File_size |-----------------------------| mysql-bin.000001 | 1357315 || mysql-bin.000002 | 117 || mysql-bin.000003 | 404002 ||…

WildFly 8与GlassFish 4 –选择哪个应用服务器

自从我上一个博客以来已经有一段时间了。 我显然忙于其他事情&#xff0c;包括我的主要工作。 在对应用服务器的正确选择提出更多疑问之后&#xff0c;是时候再次讨论这个话题并分享我的想法。 该博客上最常阅读的文章之一是有关选择哪种Java EE 6应用程序服务器的文章 。 我一…

Vue--- 一点车项目

一点车项目 cli脚手架 组件化 数据交互路由指向存入数据库 前端页面 cli脚手架的安装与搭建 创建对应包 页面组件化编辑 &#xff08;共享组件&#xff1a;摘取出来一模一样的组件重用&#xff09;&#xff08;私有组件:在自己的组件写入 引入共享组件&#xff09; 数据交…

设计模式:模式或反模式,这就是问题

我最近遇到了Wiki页面“ Anti-pattern” &#xff0c;其中包含详尽的反模式列表。 其中一些对我来说很明显。 他们中的一些让我想了一下&#xff0c;其他的让我想了更多。 然后&#xff0c;我开始在页面上查找反模式“ singleton”&#xff0c;但找不到。 &#xff08;文本搜索…

Redis的散列类型

Redis是采用字典结构以key-value的形式存储数据的&#xff0c;在散列类型&#xff08;所谓的hash&#xff09;中的value也是一种字典结构。如果用关系表结构去理解&#xff0c;就是key为对象&#xff0c;value是属性和属性值。如下图&#xff1a; 所以使用散列&#xff08;hash…

python configparser 注释_使用configpar添加注释

如果您想去掉尾随的&#xff0c;可以按照atomopter的建议将ConfigParser.ConfigParser子类化&#xff0c;并实现自己的write方法来替换原来的方法&#xff1a;import sysimport ConfigParserclass ConfigParserWithComments(ConfigParser.ConfigParser):def add_comment(self, …