2013腾讯编程马拉松初赛(3月20日)

1 第一题 小Q系列故事——屌丝的逆袭

  表示这道题基本没什么算法,学过计算机语言的应该都能搞定吧。

2 第二题 小明系列故事——买年货

  这道题直接用01背包问题就可以解决了,只是除了钱的限制,还有积分的限制和免费的情况,就是这点在调试程序的时候出了点小问题,总是wa。状态可以定义为dp[x][y][z],x表示钱的,y表示积分的,z表示免费的状态,然后其它的和背包问题差不多了,只是维数到了3维。

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 #define max(a,b) a > b ? a : b
 5 int n, v1, v2, k;
 6 typedef struct _thing
 7 {
 8     int a;
 9     int b;
10     int val;
11 }thing_t;
12 
13 int main(void)
14 {
15     thing_t data[101];
16     int ans;
17     int dp[101][101][6];
18     int i,j,y,x, temp;
19     while (scanf("%d%d%d%d", &n, &v1, &v2, &k) != EOF)    
20     {
21         for (i = 1; i <= n; i ++)    
22             scanf("%d%d%d", &data[i].a, &data[i].b, &data[i].val);    
23         memset(dp, -1, sizeof(dp));
24         ans = 0;
25         dp[0][0][0] = 0;
26         for (i = 1; i <= n; i ++)
27         {
28             for (j = v1; j >= 0; j --)
29             {
30                 for (y = v2; y >= 0; y --)
31                 {
32                     for (x = k; x >= 0; x --)
33                     {
34                         temp = -1;
35                         if (j - data[i].a >= 0 && dp[j - data[i].a][y][x] != -1)
36                         {
37                             if( temp < dp[j - data[i].a][y][x] + data[i].val)38                                 temp = dp[j - data[i].a][y][x] + data[i].val;
39                         }
40                         if (y - data[i].b >= 0 && dp[j][y - data[i].b][x] != -1)
41                         {
42                             if( temp < dp[j][y - data[i].b][x] + data[i].val)
43                                 temp = dp[j][y - data[i].b][x] + data[i].val;
44                         }
45                         if (x - 1 >= 0 && dp[j][y][x - 1] != -1)
46                         {
47                             if( temp < dp[j][y][x - 1] + data[i].val)
48                                 temp = dp[j][y][x - 1] + data[i].val;
49                         }
50                         dp[j][y][x] = max(temp, dp[j][y][x]);
51                         if (ans < dp[j][y][x])
52                             ans = dp[j][y][x];
53                     }
54                 }
55             }
56         }
57         printf("%d\n", ans);
58     }
59     return 0;
60 }

3 第三题 吉哥系列故事——临时工计划

  这个题目就直接用dp了,dp[x]表示前x天内获得的最大工资数,状态方程为:

  dp[x] = max{dp[y] + c[y + 1][x]} ,其中c[y + 1][x]表示某份从第y + 1天到第x天的工作的工资,1 <= y <= x - 1 且 c[y + 1][x]不为0。

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 int t;
 5 int m,n;
 6 int data[101][101];
 7 int ans[101];
 8 
 9 int main(void)
10 {
11     int i, j, k, s, e, c;
12     scanf("%d", &t);
13     for (i = 1; i <= t; i ++)
14     {
15         scanf("%d%d", &m, &n);    
16         memset(data, 0 ,sizeof(data));
17         for (j = 1; j <= n; j ++)    
18         {
19             scanf("%d%d%d", &s, &e, &c);    
20             if (data[s][e] < c)
21                 data[s][e] = c;
22         }
23         ans[0] = 0;
24         for (j = 1; j <= m; j ++)
25         {
26             ans[j] = ans[j - 1];
27             for (k = 1; k <= j; k ++)
28                 if (data[k][j] && ans[k - 1] + data[k][j] > ans[j])
29                     ans[j] = ans[k - 1] + data[k][j];
30         }
31         printf("%d\n", ans[m]);
32     }
33     return 0;
34 }

4 湫湫系列故事——植树节

  思路:根据题目选的3个人互不认识或者都认识则关系相同,从这种关系相同的反面来看就是3个人只有两个认识,最后一个人不认识,所以可以求这种反面情况的个数,对于第i个人,可以选他自己和他的朋友一个即a中情况,剩余一个人选他不认识的人(即非朋友)即n-a-1中情况,所以sum +=a*(n-a-1),sum表示总情况数,由于自己和朋友计算的时候会多算一次,所以最后要sum /= 2才是反面的情况总数。

 1 #include <stdio.h>
 2 
 3 int main(void)
 4 {
 5     int t, n, b, i, j, all;
 6     double sum;
 7 
 8     scanf("%d", &t);
 9     for (i = 0; i < t; i ++)
10     {
11         scanf("%d", &n);
12         all = n * (n - 1) * (n - 2) / 6;
13         sum = 0.0;
14         for (j = 0; j < n; j ++)
15         {
16             scanf("%d", &b);
17             sum += b * (n - b - 1);
18         }
19         sum /= 2;
20         sum /= all;
21         printf("%.3lf\n", 1 - sum);
22     }
23     return 0;
24 }

5 威威猫系列故事——篮球梦

  首先算出B队最终的得分sb,再算出要赢B队至少要得的分sum = sb + 1 - a(a为A队当前的得分),然后穷举满足后面得分不小于sum的所有情况。

 1 #include <stdio.h>
 2 
 3 int a, b, t;
 4 __int64 ans;
 5 int sum;
 6 
 7 __int64 f(int start) /*计算阶乘*/
 8 {
 9     __int64 ans = 1;
10     
11     while (start > 1)
12     {
13         ans *= start;
14         start --;
15     }
16     return ans;
17 }
18 
19 int main(void)
20 {
21     int i,j;
22     long long c_w, c_d;
23 
24     while (scanf("%d%d%d", &a, &b, &t) != EOF)    
25     {
26         c_w = t / 15;
27         if (c_w % 2 == 0)
28             c_w = t / 30;
29         else
30             c_w = t / 30 + 1;
31         c_d = t / 30;
32         sum = b + c_d + 1 - a;
33         ans = 0;
34         for (i = 0; i <= c_w; i ++)
35             for (j = 0; j <= c_w - i; j ++)
36                 if (i * 1 + j * 2 + (c_w - i - j) * 3 >= sum)
37                     ans += f(c_w) / (f(i) * f(j) * f(c_w - i - j));
38         printf("%I64d\n", ans);
39     }
40     return 0;
41 }

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

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

相关文章

MySQL中创建partition表的几种方式

OS : linux 数据库&#xff1a;MySQL 8.0.25 MySQL中创建partition表的几种方式如下&#xff0c;这几种方式都是经过验证过的&#xff0c;只需将enginexxx修改即可&#xff1a; 1. PARTITION BY RANGE drop table if exists employees;CREATE TABLE employees (id INT NOT N…

Windows跟Linux的不同处理

1. 时区 1.1 北京时间 Windows&#xff1a;TimeZoneInfo.FindSystemTimeZoneById("China Standard Time"); Linux&#xff1a;TimeZoneInfo tzBeijing TimeZoneInfo.FindSystemTimeZoneById("Asia/Shanghai"); 1.2 美东时间 Window&#xff1a; TimeZoneI…

我的学习工作经历,一个园林专业中专毕业生的IT之路

魏琼东&#xff0c;男&#xff0c;1983年生人&#xff0c;祖籍甘肃陇南人&#xff0c;首先得感谢我父亲给我取了这么一个好名字&#xff0c;至少我非常喜欢他&#xff0c;因为目前还没有发现和我同名的人。 我是1998-2002年在甘肃林业学校读了四年的园林专业&#xff0c;那四年…

Windows 恢复环境(Windows RE模式)

Windows 恢复环境 (Windows RE) 是一个能修复无法启动操作系统的常见问题的恢复环境。Windows 预安装环境 (Windows PE) 是具有有限服务的最小 Win32 操作系统。Windows RE 建立在 Windows 预安装环境 (Windows PE) 的基础上&#xff0c;并且可以用附加的驱动程序、语言、Windo…

开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

最近工作中遇到了开源许可证的问题&#xff0c;需要测试基于开源软件开发的本公司产品满足哪些开源协议&#xff0c;网上找了一些关于这方面的解答&#xff0c;在此备份下&#xff1a; 首先借用有心人士的一张相当直观清晰的图来划分各种协议&#xff1a;开源许可证GPL、BSD、M…

数据库知识点

1.左连接&#xff0c;等值连接&#xff0c;自然连接 等值连接&#xff1a;关系R、S,取两者笛卡尔积中属性值相等的元组 自然连接&#xff1a;是一种特殊的等值连接&#xff0c;它要求比较的属性列必须是相同的属性组&#xff0c;并且把结果中重复属性去掉。 左连接&#xff1a;…

SQL Server 索引结构及其使用(一)[转]

一、深入浅出理解索引结构  实际上&#xff0c;您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引&#xff1a;聚集索引&#xff08;clustered index&#xff0c;也称聚类索引、簇集索引&#xff09;和非聚集索引&#xff08;nonclustered index&#xff0c…

linux文件的时间格式

背景&#xff1a; 今天观察数据库文件的时候发现&#xff1a; ls -la *.ibd -rw-rw---- 1 mysql dba 98304 Sep 25 2012 a.ibd -rw-rw---- 1 mysql dba 131072 Oct 12 2012 b.ibd -rw-rw---- 1 mysql dba 98304 Oct 17 15:34 c.ibd …

生成器和推导式

def func():print(哈哈哈)yield 1 # return 和 yield 都可以返回数据print(呵呵呵) gen func() # 不会执行你的函数&#xff0c;拿到的是生成器 ret gen.__next__() # 会执行到下一个yield print(ret) gen.__next__() # 继续执行函数到下一个yield 函数中如果有yield 这个函…

什么是 mmap

1. mmap 基础概念 mmap 即 memory map&#xff0c;也就是内存映射。 mmap 是一种内存映射文件的方法&#xff0c;即将一个文件或者其它对象映射到进程的地址空间&#xff0c;实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后&#xff…

最近项目中遇到的一个算法挑战

在企业信息化进程中&#xff0c;各类智能化运算在不断挑战着我们&#xff0c;最近又遇到一个应用&#xff0c;归纳一下需要实现以下算法 //算法设计 /* *计算是否存在值X1,X2,...,Xm,使等式成立 m*X1(m-1)*X2(m-3)*X3...XmE *如果可解&#xff0c;取解集…

c#利用定时器自动备份数据库(mysql)

1:引用dll MySql.Data.dll, MySqlbackup.dll 2&#xff1a;建一个数据连接静态类 public static class mysql{public static string constr "databasetest;Password密码;user IDroot;serverip地址";public static MySqlConnection conn new MySqlConnection(cons…

构建SAN网络存储

实验目的&#xff1a;构建SAN网络存储 实验环境&#xff1a;redhat 5.4三台&#xff0c;scanstorage作为存储服务&#xff0c;IP地址是&#xff1a;192.168.9.79。node1,node2作为客户端测试 实验步骤&#xff1a; 一、配置服务端&#xff1a; 1、添加一块20G的盘 [rootscans…

netnbsp;与nbsp;javascript脚本的几种交互方法

1.asp.net呼叫jsResponse.Write("<scriptlanguagejavascript>");Response.Write("alert(登峰欢迎您 );" );Response.Write("location.hreflogin.aspx;") ;Response.Write("</script>");在这里情况下,你可以调用页面中的JS…

win10 + 独显 + Anaconda3 + tensorflow_gpu1.13 安装教程(跑bert模型)

这里面有很多坑&#xff0c;最大的坑是发现各方面都装好了结果报错 Loaded runtime CuDNN library: 7.3.1 but source was compiled with: 7.4.1&#xff0c;这是由于最新的tensorflow1.13需要用 Cudnn7.4.1编译。这个问题&#xff0c;StackOverflow上有人问到&#xff0c;但是…

Oracle client 安装、配置

一、安装 链接: https://pan.baidu.com/s/1Yph6hiNkCJsApAzu_Vx2ew 提取码: r9ye 二、配置 1、控制面板\所有控制面板项\管理工具\数据源(ODBC) 注&#xff1a;odbc 分 64 位和 32 位的2、测试 ODBC 连接 Oracle 数据库点击 ODBC&#xff0c;在“用户 DSN”页签下点击添加按钮…

ADO.NET- 基础总结及实例

1、ADO.NET基础介绍 &#xff08;1、程序要和数据库交互要通过ADO.NET进行&#xff0c;通过ADO.NET就能在程序中执行SQL了。ADO.Net中提供了对各种不同数据库的统一操作接口。 (2、直接在项目中内嵌mdf文件的方式使用SQL Server数据库&#xff08;基于服务的数据库&#xff09;…

Android发送短信字数问题

以前已经知道发送短信有70个字符的限制&#xff0c;但真到用的时候才发现还是不了解。中文英文各算几个字符&#xff1f;一开始按照老想法&#xff0c;GB码中文2个字节英文一个 字节来算&#xff0c;按70个汉字的限制可以发140个字节&#xff0c;但是发送的时候总是出错。后来在…

获取指定日期所属年份的第一天日期或最后一天日期

写了2个自定义函数&#xff0c;获取指定日期所在年份的第一天日期或最后一天的日期&#xff1a; SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- -- Author: Insus.NET -- Create date: 2019-05-09 -- Update date: 2019-05-09 -- Description: 获取指定日期所属年…

高效管理ASP.NET的JavaScript库

简介 对于ASP.NET开发人员来说,管理项目中的JavaScript都很随意&#xff1a; 我想这很大程度上可能是因为网上没有如何妥善处理ASP.NET中JavaScript的可靠信息。此文的目的就是提供一种最佳方案&#xff0c;用于管理ASP.NET中的JavaScript。该方案将能解决以下问题&#xff1a;…