CTU Open 2008(未完工)

链接:CTU Open
2008

【2014/05/15】今晚做了一下CTU
2008的这套题,最后的rank是3道题。基本是水题啊,我们做的是4个小时,如果完整做,我想应该还会出掉D题,主要是D题很繁琐,weikd写起都说烦。

 

A
- Alea iacta est

B
- On-Line Banking

【题意】纯模拟题,模拟银行存钱,取钱,转钱的操作。注意下细节~:

  1 #include <cstdio>
2 #include <cstring>
3 #include <algorithm>
4 #include <map>
5 #include <string>
6 #define EPS 1e-8
7 using namespace std;
8
9 char str[1005];
10 char cmd[1005];
11 char name[1005],name1[1005];
12 map<string,double> ac;
13
14 void create(string id)
15 {
16 printf("create: ");
17 if (ac.find(id)!=ac.end())
18 {
19 printf("already exists\n");
20 }
21 else
22 {
23 ac[id] = 0;
24 printf("ok\n");
25 }
26 }
27
28 void deposit(string id, double x)
29 {
30 printf("deposit %.2f: ",x);
31 if (ac.find(id)==ac.end())
32 {
33 printf("no such account\n");
34 }
35 else
36 {
37 ac[id] = ac[id]+x;
38 printf("ok\n");
39 }
40 }
41
42 void withdraw(string id,double x)
43 {
44 printf("withdraw %.2f: ",x);
45 if (ac.find(id)==ac.end())
46 {
47 printf("no such account\n");
48 }
49 else
50 {
51 if (ac[id]+EPS<x)
52 {
53 printf("insufficient funds\n");
54 }
55 else
56 {
57 ac[id]=ac[id]-x;
58 printf("ok\n");
59 }
60 }
61 }
62
63 void transfer(string ida,string idb,double x)
64 {
65 printf("transfer %.2f: ",x);
66 if (ac.find(ida)==ac.end()||ac.find(idb)==ac.end())
67 {
68 printf("no such account\n");
69 }
70 else
71 {
72 if (ida==idb)
73 {
74 printf("same account\n");
75 }
76 else
77 {
78 if (ac[ida]+EPS<x)
79 {
80 printf("insufficient funds\n");
81 }
82 else
83 {
84 ac[ida]=ac[ida]-x;
85 ac[idb]=ac[idb]+x;
86 char ia = *ida.rbegin();
87 char ib = *idb.rbegin();
88 if (ia==ib)
89 {
90 printf("ok\n");
91 }
92 else
93 {
94 printf("interbank\n");
95 }
96 }
97 }
98 }
99 }
100
101 int main()
102 {
103 #ifdef HotWhite
104 freopen("in.txt", "r", stdin);
105 #endif
106 int n;
107 double mn;
108 while(scanf("%d",&n))
109 {
110 if (!n) break;
111 ac.clear();
112 for (int i = 0; i < n; i++)
113 {
114 scanf("%s %lf",str,&mn);
115 ac[str]=mn;
116 }
117 string s1,s2;
118 while(scanf("%s",cmd))
119 {
120 if (strcmp(cmd,"end")==0) break;
121 if (strcmp(cmd,"create")==0)
122 {
123 scanf("%s",name);
124 s1=name;
125 create(s1);
126 }
127 if (strcmp(cmd,"deposit")==0)
128 {
129 scanf("%s%lf",name,&mn);
130 s1=name;
131 deposit(s1,mn);
132 }
133 if (strcmp(cmd,"withdraw")==0)
134 {
135 scanf("%s%lf",name,&mn);
136 s1=name;
137 withdraw(s1,mn);
138 }
139 if (strcmp(cmd,"transfer")==0)
140 {
141 scanf("%s%s%lf",name,name1,&mn);
142 s1=name;
143 s2=name1;
144 transfer(s1,s2,mn);
145 }
146 }
147 printf("end\n\n");
148 }
149 printf("goodbye\n");
150 return 0;
151 }

C
- International Collegiate Programming Contest

D
- Careful Declaration

E
- Stock Exchange

【题意】每一组case给你一些买家的姓名和最高出价,还有卖家的姓名和最低售价。然后计算出所有成交信息。
【思路】水题,直接暴力模拟,比较价钱即可。代码如下:

 1 #include <cstdio>
2 #include <cstring>
3 #include <algorithm>
4 using namespace std;
5 const int MAX = 1010;
6
7 struct BID
8 {
9 char name[25], type[5];
10 double price;
11 };
12 BID bid[MAX], buy[MAX], sell[MAX];
13
14 int main() {
15
16 #ifdef HotWhite
17 freopen("in.txt", "r", stdin);
18 #endif
19
20 int N, flag;
21 char issuer[12];
22
23 while(scanf("%d%s", &N, issuer) != EOF && N)
24 {
25 int cntb = 0, cnts = 0;
26 for(int i=0; i<N; ++i)
27 {
28 scanf("%s%s%lf", bid[i].name, bid[i].type, &bid[i].price);
29 if(strcmp(bid[i].type, "buy") == 0)
30 {
31 buy[cntb++] = bid[i];
32 }
33 if(strcmp(bid[i].type, "sell") == 0)
34 {
35 sell[cnts++] = bid[i];
36 }
37 }
38 printf("%s\n", issuer);
39 for(int i=0; i<N; ++i)
40 {
41 flag = 0;
42 printf("%s:", bid[i].name);
43 if(strcmp(bid[i].type, "buy") == 0)
44 {
45 for(int j=0; j<cnts; ++j)
46 {
47 if(sell[j].price <= bid[i].price)
48 {
49 printf(" %s", sell[j].name);
50 flag = 1;
51 }
52 }
53 }
54 if(strcmp(bid[i].type, "sell") == 0)
55 {
56 for(int j=0; j<cntb; ++j)
57 {
58 if(buy[j].price >= bid[i].price)
59 {
60 printf(" %s", buy[j].name);
61 flag = 1;
62 }
63 }
64 }
65 if(!flag)
66 printf(" NO-ONE");
67 printf("\n");
68 }
69 }
70 return 0;
71 }

F
- Wooden Fence

G
- Safe
Gambling

H
- Government
Help

【题意】经济危机,政府给予bankA和bankB补助,补助是按照一包一包的算。总共有N包,为了公平起见,怎么分配才能使得最后bankA和bankB得到的补助之差最小。

【思路】贪心策略,从小到大排序,先把最小的给A。然后从最大的开始先给B,再给A,依次分配下去,直到分完。代码如下:

 1 #include <cstdio>
2 #include <cstring>
3 #include <algorithm>
4
5 using namespace std;
6
7 int a[50005];
8 int main() {
9 #ifdef HotWhite
10 // freopen("in.txt", "r", stdin);
11 #endif
12 int n;
13 while(scanf("%d",&n))
14 {
15 if (!n) break;
16 for (int i = 0; i < n; i++)
17 {
18 scanf("%d",&a[i]);
19 }
20 sort(a,a+n);
21 printf("%d-A",a[0]);
22 int k=0;
23 for (int i = n-1; i >=1; i--,k++)
24 {
25 printf(" %d-%c",a[i],k&1?‘A‘:‘B‘);
26 }
27 printf("\n");
28 }
29 return 0;
30 }

I
- Tree
Insertions

时间: 2024-07-30 13:44:48

CTU Open 2008(未完工)的相关文章

关于企业级ECIF系统的构建设计(未完工)

一:概念: 企业级客户信息系统.作为银行的一 个基础设施项目,承担整合银行各系统中 的客户信息,为其他应用系统提供客户信 息的任务.是银行的统一的客户数据源和 客户信息的数据交换中枢. 二:所需概念 ①:ETL入库加工 ②:ecif数据模型 ③:数据分析 三:目标 ①  建立整合的单一客户视图集群,在这里对客户的 全面信息进行取得. 记录. 修改等操作, 包括基本信 息. 各类帐户. 关系信息等, 构建企业统一的客 户单一视图. 归并和拆分客户信息. 并且处理原有业务系 统保留自身客户信息, 客

[读书笔记]普林斯顿微积分读本(修订版)-未完工

这本书比较厚.刚开始读.新的策略是一路读.一路记笔记. [前言] 拿到一本书,最好先看看前言.因为前言是作者在给你介绍写这本书的思路,也会向你传递你该如何使用这本书等信息,有时也会提及他写书的心路历程等等. 这本书的前言就讲到了读者可能提出的一些常见问题,以及作者写作本书的框架. 让我觉得有意思的是下面这些例图(摘自原书),因为后面读书时你就知道了哪里是例题,哪里非常重要,哪里要试着做一做,哪里可以暂时略过. 还有哪里需要背诵呢?你可以自己读读前言. 例题求解过程始于此行. 这里非常重要. 你应

javascript——正则表达式(RegExp、String)(未完工)

在 javascript 中,正则表达式由两部分组成:正则表达式的匹配模式文本:匹配模式文本的修饰符: 修饰符: 修饰符 说明 i 忽略大小写 g 执行全局匹配 m 执行多行匹配 匹配模式文本包括以下内容: 括号:查找某个范围内的字符: 表达式 说明 [abc] 符合括号中的任意一个即可 [^abc] 括号中的均不能出现 [0-9] 数字0-9均可 (red|blue|green) 符合三者之一 元字符:是拥有特殊含义的字符 元字符 描述 . 查找单个字符,除了换行和行结束符. \w 查找单词字

Oracle——判断对象是否存在(未完工)

一.系统表: 1.User_Tables:存储用户下的所有表的信息: 2.dba_tables:存储管理员权限下的所有表的信息: 3.all_tables:存储所有表的信息. 二.判断对象是否存在 1.判断表 我们只能通过使用select count(*) 的方式判断当前表是否存在,返回1则代表存在,0则代表不存在,例如: SELECT COUNT(*) FROM User_Tables WHERE table_name = 'CODE_BMDM';(在SQL中使用这种方法亦可)需要注意的是:表

本周小结(未完工)

上周总结 学习的知识 FHQ非旋treap (万能头文件竟然不能用merge) CDQ分治 (两三个函数长一个样) 负载平衡问题 (才学会,还是太菜了) 线段树(启发式)合并 (不太会用.jpg) 复习的知识 各种数论知识 线性Dp和树形Dp 基本数据的结构 做题情况 AC 55道,AC率约为 40% 还行吧QAQ 新发现 万物皆可二分(QAQ) 写错变量名调一年 取模分清 \(1e9+7\) 和\(1e9+9\) DFS套DP套数据结构优化 毒瘤 .io真是个好东西 发现弱势 各种计数类题目

Treap总结(未完工)

\(Treap = Tree + Heap\) 树堆(Treap),在数据结构中也称Treap,是指有一个随机附加域满足堆的性质的二叉搜索树,其结构相当于以随机数据插入的二叉搜索树.其基本操作的期望时间复杂度为O(logn).相对于其他的平衡二叉搜索树,Treap的特点是实现简单,且能基本实现随机平衡的结构. ----百度百科 要了解Treap,就先要看看什么是二叉搜索树 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉

未清销售订单及预测的所有工序物料需求(按BOM展开不考虑已发料)

--按截止日考虑库存分配(所有物料及工序) DECLARE @dueDate DATETIME --截止交期 SELECT @dueDate = T0.T_DueDate FROM OFPR T0 WHERE T0.T_DueDate = [%0] SELECT @dueDate = '[%0]' --------------------------------------------------------------------------------------------- -- ===

企业所得税

企业所得税 [TOC] 国税发[2009]31号 关于印发<房地产开发经营业务企业所得税处理办法>的通知 各省.自治区.直辖市和计划单列市国家税务局.地方税务局: 为了加强从事房地产开发经营企业的企业所得税征收管理,规范从事房地产开发经营业务企业的纳税行为,根据<中华人民共和国企业所得税法>及其实施条例.<中华人民共和国税收征收管理法>及其实施细则等有关税收法律.行政法规的规定,结合房地产开发经营业务的特点,国家税务总局制定了<房地产开发经营业务企业所得税处理办法

关于成本核算方法、步骤、成本分析的简单回复

关于成本核算方法.步骤.成本分析的简单回复成本核算的方法依据企业生产产品的特点来定:主要看产品是否是多步骤生产(生产工艺的特点):半成品是否有销售的情况(假设有销售,可能须要採用分步核算,以便准确核算半成品的成本):工作(成本/生产)中心是依照产品来分还是工艺来分.怎样核算成本:首先归集产品的材料成本,一般都须要技术部门提供产品的BOM(物料清单),以确保按订单或者生产计划生产的时候领料的准确.(通常会问生产线出现来料不良和损坏怎么处理:退仓并补领就可以,损坏部分须要当月预提计入制费,损坏材料报