[Swust OJ 603]--吃饺子大王
现在,作为大赛的评委henry,遇到了一个难题,就是他在统计一个小组同学每个人吃饺子数量的时候,这个小组的同学并没有明确的给出自己吃饺子的准确数量,估计是自己吃的太多了数不清了^_^,他们只是给出了与同一组其他组员吃饺子数量上的关系,为了简单起见,只有‘+’‘-’两种数量上的关系。
1
2
3
4
5
6
7
|
6
+ 3 1
+ 1 2
- 2 1
+ 3 1
+ 1 1
|
1
|
2 5
|
#include<iostream>
using namespace std;
#define inf -0x3f3f3f3f
struct node
{
int left, right, cur, num;
char ch;
}date[];
int main()
{
int n, i, j;
while (cin >> n)
{
int max = inf, k = ;
date[].num = , date[].right = ;
for (i = ; i <= n; i++)
{
cin >> date[i].ch >> date[i].left >> date[i].cur;
date[i].right = i;
date[i].num = inf;
}
for (i = ; i <= n; i++)
{
for (j = ; j <= n; j++)
{
if (date[date[j].right].num != inf&&date[date[j].left].num == inf)
{
if (date[date[j].right].ch == '+')
date[date[j].left].num = date[date[j].right].num - date[date[j].right].cur;
else
date[date[j].left].num = date[date[j].right].num + date[date[j].right].cur;
}
else if (date[date[j].right].num == inf&&date[date[j].left].num != inf)
{
if (date[date[j].right].ch == '+')
date[date[j].right].num = date[date[j].left].num + date[date[j].right].cur;
else
date[date[j].right].num = date[date[j].left].num - date[date[j].right].cur;
}
if (date[j].num > max)
max = date[j].num;
}
}
for (i = ; i <= n; i++)
{
if (date[i].num == max)
{
if (k++) cout << ' ';
cout << i;
}
}
cout << endl;
}
return ;
}
然后后来又想到了一点优化,先把输入数据按照多余对象(比谁多)排序,
给每一组数据加上当前成员编号,然后按成员编号,直接按关系式相加就是,具体的看代码~~
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
struct node{
int no, ptr, x;
char v;
bool operator<(const node &tmp)const{
if (ptr != tmp.ptr)
return ptr < tmp.ptr;
return x < tmp.x;
}
}ss[];
int main(){
int n, mpt[], i, k = , maxn = -0x7ffffff;
memset(mpt, , sizeof(mpt));
cin >> n;
for (i = ; i < n; i++){
cin >> ss[i].v >> ss[i].ptr >> ss[i].x;
ss[i].no = i;
}
sort(ss + , ss + n);
for (i = ; i < n; i++){
switch (ss[i].v){
case '+':mpt[ss[i].no] = mpt[ss[i].ptr - ] + ss[i].x; break;
case '-':mpt[ss[i].no] = mpt[ss[i].ptr - ] - ss[i].x; break;
}
}
for (i = ; i < n; i++)
maxn = maxn>mpt[i] ? maxn : mpt[i];
for (i = ; i < n; i++){
if (mpt[i] == maxn){
if (k++) cout << ' ';
cout << i + ;
}
}
cout << endl;
return ;
}
[Swust OJ 603]--吃饺子大王的更多相关文章
- [Swust OJ 589]--吃西瓜(三维矩阵压缩)
题目链接:http://acm.swust.edu.cn/problem/589/ Time limit(ms): 2000 Memory limit(kb): 65535 Description ...
- [Swust OJ 404]--最小代价树(动态规划)
题目链接:http://acm.swust.edu.cn/problem/code/745255/ Time limit(ms): 1000 Memory limit(kb): 65535 Des ...
- [Swust OJ 649]--NBA Finals(dp,后台略(hen)坑)
题目链接:http://acm.swust.edu.cn/problem/649/ Time limit(ms): 1000 Memory limit(kb): 65535 Consider two ...
- <正则吃饺子>:关于java中垃圾回收技术的简单学习总结
知识介绍来自网络,后面会根据继续学习进行补充和适当的修改,谢谢!原文地址:http://www.importnew.com/26821.html#comment-578355 java中的垃圾回收机制 ...
- 写完代码就去吃饺子|The 10th Henan Polytechnic University Programming Contest
河南理工大学第十届校赛 很久没有组队打比赛了,好吧应该说很久没有写题了, 三个人一起玩果然比一个人玩有趣多了... 前100分钟过了4题,中途挂机100分钟也不知道什么原因,可能是因为到饭点太饿了?, ...
- SWUST OJ NBA Finals(0649)
NBA Finals(0649) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 404 Accepted: 128 Descri ...
- [Swust OJ 1023]--Escape(带点其他状态的BFS)
解题思路:http://acm.swust.edu.cn/problem/1023/ Time limit(ms): 5000 Memory limit(kb): 65535 Descript ...
- [Swust OJ 1125]--又见GCD(数论,素数表存贮因子)
题目链接:http://acm.swust.edu.cn/problem/1125/ Time limit(ms): 1000 Memory limit(kb): 65535 Descriptio ...
- [Swust OJ 1126]--神奇的矩阵(BFS,预处理,打表)
题目链接:http://acm.swust.edu.cn/problem/1126/ Time limit(ms): 1000 Memory limit(kb): 65535 上一周里,患有XX症的哈 ...
随机推荐
- elasticsearch-5.0.0初见
基础概念 Elasticsearch有几个核心概念.从一开始理解这些概念会对整个学习过程有莫大的帮助. 接近实时(NRT) Elasticsearch是一个接近实时的搜索平台.这意味着,从索引一个文档 ...
- Git使用方法记录(一)
记录下git的基本使用方法,这里是以ubuntu14.04为例. 1,使用前的初始设置 git config –global user.name “FirstName LastName” git co ...
- Mysql开启远程
改表法: x:\>mysql -u root -pvmware mysql> use mysql;mysql> update User set Host = ‘%’ where Us ...
- python笔记之第一次使用(未入门)
刚开始学习python,之前完全没有接触,在这里写下自己学习python的过程和心得. 首先,安装python,打开官网:http://python.org.点击Download.我选择了3.5.1版 ...
- [转] IOS中AppDelegate中的生命周期事件的调用条件
IOS中AppDelegate中的生命周期事件的调用条件 //当应用程序将要进入非活动状态执行,在此期间,应用程序不接受消息或事件,比如来电 - (void)applicationWillResign ...
- osgText::Text简介
整理自<OpenSceneGraph三维渲染引擎编程指南> 在OSG中,为了显示高质量的文字,专门定义了一个新的名字空间来管理场景中的文字渲染,这个名字空间中的类主要用于加载字体和控制文字 ...
- 如何将windows版的vim界面语言(默认为中文)设置成英文
用安装包安装windows版本的vim(下载地址:http://www.vim.org/download.php),vim会自动根据windows的语言设置vim的界面语言.如何将其改为英文呢? 在v ...
- sed(查找替换) 与awk(提取字段)
通常: sed 处理列 awk处理行 比较方便 Sed是一个基本的查找替换程序 sed -i "s/^@//g" 文件 #原地操作原文件,进行替换 cat ...
- javascript 计算中文字符长度
function getLength(str) { var len = str.length; var reLen = 0; for (var i = 0; ...
- 在原有3306端口mysqld服务的情况再搭建第二个3308端口的mysql实例
1 download the tar.gz [root@472322 tmp]# wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6 ...