Topcoder 11_21

第一次做topcoder,状态不是很好,一个向量容器的排序都让我想了好久,感觉到头文件定义的强大,但是我的头文件明显是不完善的,我只写了常用的几个。

适当的头文件定义可以加快变成的速度:

头文件定义(有待完善):

View Code
 1 #include <cassert>
 2 #include <iostream>
 3 #include <cstdio>
 4 #include <vector>
 5 #include <map>
 6 #include <cstdlib>
 7 #include <ctime>
 8 #include <iterator>
 9 #include <cmath>
10 #include <queue>
11 #include <string>
12 #include <cstring>
13 #include <algorithm>
14 
15 #pragma comment(linker,"/STACK:60777216")
16 
17 using namespace std;
18 
19 typedef long long LL;
20 typedef vector<int> VI;
21 
22 #define SORT(c) sort((c).begin(),(c).end())
23 #define REV(c) reverse((c).begin(),(c).end())
24 #define FOR(i,a,b) for(int i=(a); i < (b);i++)
25 #define CL(a,b) memset(a,b,sizeof(a))
26 #define pb push_back
27 
28 int max(int x,int y) {return x>y?x:y;}
29 int min(int x,int y) {return x>y?y:x;}
30 int f_abs(int x) {return (x)>(0)?(x):(-x);}

topcoder div2 500

size有M,L两种,提取出来单独比较(一道题目气球的大小一定要一样),结果maxAccepted中元素最多为15个,枚举每个题size的状态,复杂度O(2^N*N),比较取出最小的。

View Code
 1 class ICPCBalloons{
 2     public:
 3     int solve(VI a,VI b) {
 4         int suma=0,sumb=0;
 5         FOR(i,0,a.size())suma+=a[i];
 6         FOR(i,0,b.size())sumb+=b[i];
 7         if(suma>sumb) return -1;
 8         else {
 9             int sum=0;
10             SORT(a);  SORT(b);
11             REV(a), REV(b);
12             for(int i=0,j=0;i<a.size();i++) {
13                 if(j<b.size()) sum+=max(a[i]-b[j],0),j++;
14                 else sum+=a[i];
15             }
16             return sum;
17         }
18     }
19     int minRepaintings(vector <int> bc, string bs, vector <int> mac){
20         VI la,ma;
21         la.clear(); ma.clear();
22         FOR(i,0,bs.size()) {
23             if(bs[i]=='M') ma.pb(bc[i]);
24             else la.pb(bc[i]);
25         }
26         int ans=-1,len=mac.size();
27         VI L,M;
28         FOR(mask,0,1<<len) {
29             L.clear(); M.clear();
30              FOR(j,0,len) {
31                  if(mask&(1<<j)) M.pb(mac[j]);
32                  else L.pb(mac[j]);
33              }
34              int ansl=solve(M,ma),ansm=solve(L,la);
35              if(ansl==-1 || ansm==-1) continue;
36              ansl+=ansm;
37              if(ans==-1||ans>ansl) ans=ansl;
38         }
39         return ans;
40     } 
41 };

转载于:https://www.cnblogs.com/zhang1107/archive/2012/11/21/2780608.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的纺织品企业财务管理系统,源码+数据库+毕业论文+视频演示 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对纺织品企业财务信息管理的提升,也为了对纺织品企业财务信息进行更好的维护,纺织品企业财务管理系统的出现就变得水到渠成不可缺少。通过对纺织品企业财务管理系统的开发,不仅仅可以学以致用,让学到的知识变成成果出现,也强化了知识记忆,扩大了知识储备,是提升自我的一种很好的方法。通过具体的开发,对整个软件开发的过程熟练掌握,不论是前期的设计,还是后续的编码测试,都有了很深刻的认知。 纺织品企业财务管理系统通过MySQL数据库与Spring Boot框架进行开发,纺织品企业财务管理系统能够实现对财务人员,员工,收费信息,支出信息,薪资信息,留言信息,报销信息等信息的管理。 通过纺织品企业财务管理系统对相关信息的处理,让信息处理变的更加的系统,更加的规范,这是一个必然的结果。已经处理好的信息,不管是用来查找,还是分析,在效率上都会成倍的提高,让计算机变得更加符合生产需要,变成人们不可缺少的一种信息处理工具,实现了绿色办公,节省社会资源,为环境保护也做了力所能及的贡献。 关键字:纺织品企业财务管理系统,薪资信息,报销信息;SpringBoot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值