BNUOJ 1037 精神控制
XsuagrX喜欢到处唬人,各种唬。这不,经过刻苦修炼,他终于掌握了Bane Element的Ultra绝技加强版,恶魔掌控(快捷键F)(YY中&……)。当XsugarX对某个人胡言乱语Q@# @时,可以控制这个人的行动,并且被完全控制的人会对其他人继续胡言乱语,但是他们只能控制被胡言乱语的人的部分精神,当满足如下条件时,我们说A控制B:
1、 A控制了B大于等于50%的精神。
2、 A控制了Ci,Ci控制了Bi Di%的精神,而∑Di≧50
有一天他心血来潮对着N个人一通@#Q%#$#后,想知道究竟那些人被其他人控制了。
现在你的任务是读入n组i控制j精神的p%,并输出数对(p,q)表示p控制q。
由于能力有限,XsugarX最多只能控制100个人,且所有人的编号均小于100。
Input
第一行一个数Z表示有Z组测试数据
对于每组测试数据
第一行一个n,表示有n个控制关系。
以下n行,每行一组(i,j,k)表示编号i的人控制编号j的人精神的k%
Output
对于每组数据,输出所有的控制关系,按升序排列,每组答案最后输出一个空行。
Sample Input
1
3
1 2 80
2 3 80
3 1 20
Sample Output
1 2
1 3
2 3 233333有一阵子没写博客了来一发,开学忙着复习苦逼的补考,高数大法坑死人。
这道题零零碎碎搞了一星期,最后才发现题意理解还有问题,这是一个要列加的图,比如两条路单走那个都不通合起来看就通了2333绝对坑。
原来搞错掉的代码也贴过来了关键是第一次摆出容器大干一场。set的反向排序还没搞出来再看看,图搜索的基本想法get。这道题复杂两个二维数组就能搞定,后面是正确代码。
#include<iostream>
#include<cstdio>
#include<vector>
#include<stack>
#include<set>
#include<algorithm>
using namespace std;
struct donser
{
vector <int> son;
vector <int> num;
};
donser d[];
stack <int> dong;
set <int> dongser;
int i,j,k;
int a,b,c,e,p,q,t; void loop(int m)
{
for(vector<int>::iterator iter=d[m].son.begin();iter!=d[m].son.end();iter++)
{
t=dongser.size();
if(*iter==m){continue;}
dongser.insert(*iter);
q=dongser.size();
if(q==t){continue;}
loop(*iter);
} }
int main()
{
freopen("stdin.txt","r",stdin);
while(~scanf("%d",&j))
{
scanf("%d",&k);
for(i=;i<=k;i++)
{
scanf("%d %d %d",&a,&b,&c);
if(c>=){d[a].son.push_back(b);d[a].num.push_back(c);}
}
for(i=;i<=;i++)
{
if(d[i].son.size()==){continue;}
loop(i); set<int>::reverse_iterator j;
for(j=dongser.rbegin();j!=dongser.rend();j++)
{
dong.push(*j); }
while(dong.size()>)
{
printf("%d %d\n",i,dong.top());
dong.pop();
}
dongser.clear();
}
}
return ;
}
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int n,t,x,y,num,donser[][];
bool rank,a[][],dong[];
int main()
{
freopen("stdin.txt","r",stdin);
scanf("%d",&t);
while(t--){
scanf("%d",&n);
memset(a,,sizeof(a));
memset(donser,,sizeof(donser));
memset(dong,,sizeof(dong)); while(n--){
scanf("%d%d%d",&x,&y,&num);
donser[x][y] += num;
dong[x] = dong[y] = ;
if(donser[x][y] >= ) a[x][y] = ;
} n = ;
for(int i = ;i <= n;++i) a[i][i] = ;
while(){
rank = ;
for(int i = ;i <= n;++i)
for(int j = ;j <= n;++j){
if(a[i][j]) continue;
num = ;
for(int k = ;k <= n;++k) if(a[i][k]) num += donser[k][j];
if(num >= ) { a[i][j] = ; rank = ; }
}
if(rank) break;
}
for(int i = ;i <= n;++i)
if(dong[i]) for(int j = ;j <= n;++j) if(dong[j] && i != j && a[i][j]) printf("%d %d\n",i,j);
puts("");
}
return ;
}
坑,A掉的代码
BNUOJ 1037 精神控制的更多相关文章
- 【hihoCoder】1037 : 数字三角形
题目:http://hihocoder.com/problemset/problem/1037 一个迷宫有n层,第 i 层有 i 个房间 从第i层的第i个房间(i, i)可以走到第i+1层的第i个房间 ...
- BNUOJ 52325 Increasing or Decreasing 数位dp
传送门:BNUOJ 52325 Increasing or Decreasing题意:求[l,r]非递增和非递减序列的个数思路:数位dp,dp[pos][pre][status] pos:处理到第几位 ...
- 【CodeVS 1037】取数游戏
http://codevs.cn/problem/1037/ Alice必胜是Alice将硬币移向边权为0的一端并且把经过的边变为0,让BoB无路可走. 这样只要起点到两个方向最近的0边权的端点的边数 ...
- bnuoj 24251 Counting Pair
一道简单的规律题,画出二维表将数字分别相加可以发现很明显的对称性 题目链接:http://www.bnuoj.com/v3/problem_show.php?pid=24251 #include< ...
- bnuoj 44359 快来买肉松饼
http://www.bnuoj.com/contest/problem_show.php?pid=44359 快来买肉松饼 Time Limit: 5000 ms Case Time Lim ...
- BNUOJ 1006 Primary Arithmetic
Primary Arithmetic 来源:BNUOJ 1006http://www.bnuoj.com/v3/problem_show.php?pid=1006 当你在小学学习算数的时候,老师会教你 ...
- bnuoj 34985 Elegant String DP+矩阵快速幂
题目链接:http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=34985 We define a kind of strings as elegant s ...
- 【BZOJ】【1037】【ZJOI2008】生日聚会party
DP orz iwtwiioi 这种题居然是DP……原来统计方案数是可以用动态规划来做的啊= =用一些变量来维护一些信息,保证方案可行性/合法性 人太弱实在是有些忧伤…… /************* ...
- hihocoder 1037 数字三角形
#1037 : 数字三角形 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋彼岸 ...
随机推荐
- EntityFramework_MVC4中EF5 新手入门教程之五 ---5.通过 Entity Framework 读取相关数据
在前面的教程中,您完成School数据模型.在本教程中,您会读取和显示相关的数据 — — 那就是,实体框架将加载到导航属性的数据. 下面的插图显示页面,您将完成的工作. 延迟. 预先,和显式加载的相关 ...
- 使用GIT来管理代码的心得
使用GIT来管理代码,第一步当然就是下载一个GIT客户端(不知道是不是这么叫,但是觉得和客户端的功能差不多).电脑的操作系统是windows7的,所以下的是对应的GIT. 就是这玩意,安装的时候不停的 ...
- jsp+oracle实现数据库内容以表格形式在前台显示(包含分页)
jsp+oracle实现数据库内容以表格形式在前台显示(包含分页) 在文件夹内新增list_emp.jsp 代码如下: <%@ page contentType="text/html& ...
- struts2中怎么把action中的值传递到jsp页面
对于如何把struts2的action中的值传到jsp页面中,主要的方法有2种: 使用转发视图利用request域中储存所需的值 使用重定向时存储数据进入session使其在jsp中可以获得 下面,让 ...
- 详解HTML中的window对象和document对象
Window -- 代表浏览器中一个打开的窗口: 对象属性 window //窗口自身 window.self //引用本窗户window=window.self window.name //为窗口命 ...
- 【BZOJ-2223】PATULJCI 可持久化线段树
2223: [Coci 2009]PATULJCI Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 728 Solved: 292[Submit][S ...
- 【深入】java 单例模式(转)
[深入]java 单例模式 关于单例模式的文章,其实网上早就已经泛滥了.但一个小小的单例,里面却是有着许多的变化.网上的文章大多也是提到了其中的一个或几个点,很少有比较全面且脉络清晰的文章,于是,我便 ...
- UVa 11988 Broken Keyboard (a.k.a. Beiju Text)
题目复制太麻烦了,甩个链接 http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18693 直接模拟光标操作时间复杂度较高,所以用链 ...
- udp 内网穿透 互发消息
还差实现内网终端,向服务器发送请求,要对方的内网连接自己,实现打洞.在同一网段,或者公网运行,可以相互聊天. 没有实现检测客户端下线功能. 1,服务器代码 package router; import ...
- XUnit学习
1.建立测试单元项目 2.引用XUnit.dll或者在Nuget里安装XUnit 3.安装Nuget->xUnit.net[Runner: Visual Studio] 4.打开 测试-> ...