20130924组队赛-Regionals 2011, Asia - Fukuoka
来源:互联网 发布:网站建设优化服务 编辑:程序博客网 时间:2024/05/26 19:15
这次就A题过的,写写......
A题的意思是有不同的人,然后每个人在不同的时间段进入教堂,只有当教父在的时候才会给教堂里的人加时间,然后
最后求谁的时间最长,输出最长时间,就是麻烦的:
代码:
#include <iostream>#include <cstdio>#include <string>#include <string.h>#include <map>#include <vector>#include <cstdlib>#include <algorithm>#include <cmath>#include <queue>#include <set>#include <stack>#include <functional>#include <fstream>#include <sstream>#include <iomanip>#include <numeric>#include <cassert>#include <bitset>#include <stack>#include <ctime>#include <list>#define INF 0x7fffffff#define max3(a,b,c) (max(a,b)>c?max(a,b):c)#define min3(a,b,c) (min(a,b)<c?min(a,b):c)#define mem(a,b) memset(a,b,sizeof(a))using namespace std;int QuickMod(int a,int b,int n){ int r = 1; while(b) { if(b&1) r = (r*a)%n; a = (a*a)%n; b >>= 1; } return r;}int n;struct node{ int st; int ed; int sum; int inde;} num[1001], SUM[1001];int con;int PQ;int sumtime(int X, int Y){ int sum = 0; sum = (X*60 + Y); return sum;}void init(){ for(int i = 0; i < 1001; ++i) { num[i].st = -1; num[i].ed = -1; num[i].sum = 0; num[i].inde = -1; } PQ = 0; con = 0;}int zhuangtai000;int main(){ int mon, day, hour, min, name; char KO[10]; while(scanf("%d", &n)) { if(!n) break; init(); zhuangtai000 = 0; for(int kk = 0; kk < n; ++kk) { scanf("%d/%d %d:%d %s %d", &mon, &day, &hour, &min, KO, &name); if(KO[0] == 'I') { //cout << "IN 的时候:" << endl; if(name == 0) { zhuangtai000 = 1; for(int i = 0; i < con; ++i) num[i].st = sumtime(hour, min); } else { if(zhuangtai000 == 1) { num[con].st = sumtime(hour, min); int flag = 0; num[con].ed = -1; num[con].inde = name; //cout <<"num[con].inde : " << num[con].inde << endl; for(int i = 0; i < PQ; ++i) { if(SUM[i].inde == name) { cout << "000: -> " << endl; num[con].sum = SUM[i].sum; flag = 1; for(int j = i; j < PQ-1; ++j) SUM[j] = SUM[j+1]; break; } } if(flag == 0) num[con].sum = 0; } else { int flag = 0; num[con].st = -1; num[con].ed = -1; num[con].inde = name; //cout <<"num[con].inde : " << num[con].inde << endl; for(int i = 0; i < PQ; ++i) { if(SUM[i].inde == name) { num[con].sum = SUM[i].sum; flag = 1; for(int j = i; j < PQ-1; ++j) SUM[j] = SUM[j+1]; } } if(flag == 0) num[con].sum = 0; con++; } //cout << num[con].inde << " 0000000000000000000000000" << endl; } } else if(KO[0] == 'O') { //cout << "OUT 的时候: "<< endl; if(name == 0) { zhuangtai000 = 0; for(int i = 0; i < con; ++i) { num[i].ed = sumtime(hour, min); num[i].sum += (num[i].ed - num[i].st); num[i].st = -1; num[i].ed = -1; } } else { if(zhuangtai000 == 1) { cout << "**********" << endl; for(int i = 0; i < con; ++i) { //cout << "name: " << name << endl; //cout << "num[i].inde: " << num[i].inde << endl; if(num[i].inde == name) { //cout << "fuhetiaojian " << endl; SUM[PQ++] = num[i]; cout << "12: -> "<< SUM[PQ].sum << endl; SUM[PQ].sum = (num[i].ed - num[i].st); for(int j = i; j < con-1; ++j) num[j] = num[j+1]; con--; } } //cout << "剩余: "<< con << endl; } else { //cout << "00000000000000000000000000000000" << endl; //cout << "******: -> " << con << endl; for(int i = 0; i < con; ++i) { if(num[i].inde == name) { //cout <<"name: " << name << ' ' << num[i].inde << endl; SUM[PQ++] = num[i]; for(int j = i; j < con-1; ++j) num[j] = num[j+1]; con--; } } //cout << "剩余: "<< con << endl; } } } } //cout << "::" << con <<' ' << PQ << endl; int MAX = -INF; for(int i = 0; i < PQ; ++i) { //cout << SUM[i].sum << endl; if(SUM[i].sum > MAX) MAX = SUM[i].sum; } cout << MAX << endl; } return 0;}
- 20130924组队赛-Regionals 2011, Asia - Fukuoka
- 20130918组队赛Regionals 2011, Asia - Kanpur
- 130831组队赛-Regionals 2011, Asia - Kuala Lumpur
- 20130830组队赛-Regionals 2012, Asia - Jakarta
- 130829组队赛-Regionals 2012, Asia - Jakarta
- Regionals 2012, Asia - Hatyai 组队赛130912
- 20130926组队赛-Regionals 2011, Latin America
- 组队赛130926 Regionals 2011, Latin America
- Regionals 2011, Asia - Amritapuri
- Regionals 2011, Asia - Phuket
- Regionals 2011, Asia - Daejeon
- Regionals 2011, Asia - Kanpur
- Regionals 2011 >> Asia
- 20131002组队赛-Regionals 2011, North America - Rocky Mountain
- 组队赛 131002 Regionals 2011, North America - Rocky Mountain
- Regionals 2011, Asia - Dhaka------BNU
- 20130902组队赛Regionals 2012, Latin America
- 130902组队赛-Regionals 2012, Latin America
- 每日一语20130925
- 将ubuntu13.04装在U盘上(EFI mode)
- Android之动态更新通知栏
- linux用netstat查看服务及监听端口
- SOJ2099 Search Nearest Neighbour
- 20130924组队赛-Regionals 2011, Asia - Fukuoka
- 尝试人生,怎一个“赢”字了得!
- 顺序链表的创建
- XML中二进制数据的处理方法
- 每日一语
- java实验一ATM心得
- iOS开发过程中出现错误整理
- 0/1 背包问题动态规划
- 为什么Mybatis可以通过SO加入查询条件