HDU4536+DFS
枚举支援的国家。。。
1 /* 2 DFS 3 */ 4 #include<stdio.h> 5 #include<string.h> 6 #include<stdlib.h> 7 #include<algorithm> 8 #include<iostream> 9 #include<queue> 10 //#include<map> 11 #include<math.h> 12 using namespace std; 13 typedef long long ll; 14 //typedef __int64 int64; 15 const int maxn = 105; 16 const int inf = 0x7fffffff; 17 const double pi=acos(-1.0); 18 const double eps = 1e-8; 19 const int maxm = 20; 20 struct node{ 21 int val,be; 22 }a[ maxm ]; 23 struct node2{ 24 int a,b,c; 25 }ord[ maxn ]; 26 int n,m,k; 27 int ans; 28 bool judge(){ 29 for( int i=0;i<n;i++ ) 30 if( a[ i ].val>5 ) 31 return false; 32 return true; 33 } 34 void dfs( int p ){ 35 ans = max( ans,p ); 36 if( p>=k ) return ; 37 38 int a1,a2,a3; 39 a1 = ord[ p ].a; 40 a2 = ord[ p ].b; 41 a3 = ord[ p ].c; 42 43 a[ a1 ].val-=2; 44 a[ a2 ].val+=2; 45 a[ a3 ].val+=2; 46 for( int i=0;i<n;i++ ){ 47 if( a[i].be==a[a2].be&&i!=a2 ) a[i].val++; 48 if( a[i].be==a[a3].be&&i!=a3 ) a[i].val++; 49 } 50 if( judge()==true ) dfs( p+1 ); 51 a[ a1 ].val+=2; 52 a[ a2 ].val-=2; 53 a[ a3 ].val-=2; 54 for( int i=0;i<n;i++ ){ 55 if( a[i].be==a[a2].be&&i!=a2 ) a[i].val--; 56 if( a[i].be==a[a3].be&&i!=a3 ) a[i].val--; 57 } 58 59 a[ a1 ].val+=2; 60 a[ a2 ].val-=2; 61 a[ a3 ].val+=2; 62 for( int i=0;i<n;i++ ){ 63 if( a[i].be==a[a1].be&&i!=a1 ) a[i].val++; 64 if( a[i].be==a[a3].be&&i!=a3 ) a[i].val++; 65 } 66 if( judge()==true ) dfs( p+1 ); 67 a[ a1 ].val-=2; 68 a[ a2 ].val+=2; 69 a[ a3 ].val-=2; 70 for( int i=0;i<n;i++ ){ 71 if( a[i].be==a[a1].be&&i!=a1 ) a[i].val--; 72 if( a[i].be==a[a3].be&&i!=a3 ) a[i].val--; 73 } 74 75 a[ a1 ].val+=2; 76 a[ a2 ].val+=2; 77 a[ a3 ].val-=2; 78 for( int i=0;i<n;i++ ){ 79 if( a[i].be==a[a2].be&&i!=a2 ) a[i].val++; 80 if( a[i].be==a[a1].be&&i!=a1 ) a[i].val++; 81 } 82 if( judge()==true ) dfs( p+1 ); 83 a[ a1 ].val-=2; 84 a[ a2 ].val-=2; 85 a[ a3 ].val+=2; 86 for( int i=0;i<n;i++ ){ 87 if( a[i].be==a[a2].be&&i!=a2 ) a[i].val--; 88 if( a[i].be==a[a1].be&&i!=a1 ) a[i].val--; 89 } 90 91 } 92 93 int main(){ 94 int ca; 95 scanf("%d",&ca); 96 for( int ii=1;ii<=ca;ii++ ){ 97 scanf("%d%d%d",&n,&m,&k); 98 for( int i=0;i<n;i++ ) 99 scanf("%d",&a[ i ].be); 100 for( int i=0;i<n;i++ ) 101 scanf("%d",&a[ i ].val); 102 for( int i=0;i<k;i++ ) 103 scanf("%d%d%d",&ord[ i ].a,&ord[ i ].b,&ord[ i ].c); 104 ans = 0; 105 dfs( 0 ); 106 printf("Case #%d: %d\n",ii,ans); 107 } 108 return 0; 109 } 110
转载于:https://www.cnblogs.com/xxx0624/archive/2013/03/30/2991005.html
HDU4536+DFS相关推荐
- [JS][dfs]题解 | #迷宫问题#
题解 | #迷宫问题# 题目链接 迷宫问题 题目描述 定义一个二维数组 N*M ,如 5 × 5 数组下所示: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 1, 1 ...
- [C] [编程题]连通块(DFS解决)
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M 来源:牛客网 金山办公2020校招服务端开发工程师笔试题(一) 题目描述 给一个01矩阵,1代表是陆地,0代表 ...
- 【BZOJ2434】[NOI2011]阿狸的打字机 AC自动机+DFS序+树状数组
[BZOJ2434][NOI2011]阿狸的打字机 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P ...
- usaco snail trails(dfs)
dfs啊,我还写了好长时间,一天不如一天. /* ID:jinbo wu TASK: snail LANG:C++ */ #include<bits/stdc++.h> using nam ...
- usaco shuttle puzzle(dfs剪枝)
这题一看我也以为找规律,然后无法下手之后又想到bfs最后看题解是用dfs大神dfs用的出神入化. 不过这题好像可以找规律. /* ID:jinbo wu TASK: shuttle LANG:C++ ...
- usaco street race(dfs)
一开始我觉得很麻烦但第一题好做由于数据较小直接每个点删后dfs就可以了,第二问我不知道如何判断有没有公共的道路,最后看别人的也挺简单的就是看分别从两条公路的起点开始dfs如果他们能到达同一点就代表有公 ...
- Forest Program dfs+tanjar仙人掌
题目链接 CCPC2019 F题. 题意:给一颗仙人掌树,让你求每一个小环的边的个数,用快速幂即可求解. 思路:第一反应是tanjar乱搞,把每个环上的点取出来,类似于缩点的方法.但是忽然感觉dfs能 ...
- HDU - 5877 Weak Pair 2016 ACM/ICPC 大连网络赛 J题 dfs+树状数组+离散化
题目链接 You are given a rootedrooted tree of NN nodes, labeled from 1 to NN. To the iith node a non-neg ...
- A and B and Lecture Rooms CodeForces - 519E LCA+dfs序
看到这个题的第一个思路就是就是统计以每一个点为根的所有节点个数,然后具体就分情况讨论一下即可. 因为刚刚学习了dfs序,这个题就用了dfs序来通过进出时间戳来相减表示其为根的子节点个数. 分情况 我们 ...
- POJ - 2763 Housewife Wind LCA+dfs序+线段树
q次询问求两个点之间的距离,并且可以随时修改某条边的长度,最短距离可以用lca来求,但是树上维护每一个点到root的距离必须要用dfs序来记录时间戳,在dfs的时候顺便记录每一条边(u,v)对应的v节 ...
最新文章
- 查看tomcat服务器返回的响应消息,Tomcat上的WebSocket握手返回意外响应代码500
- LeetCode 430. Flatten a Multilevel Doubly Linked List
- os是android5.0,Funtouch OS 2.1曝光 完美改Android5.0
- lcd像素点密度_【教程】设置添加LCD密度(DPI)设置
- android开发学习笔记系列(6)--代码规范
- 基于Lua语言的wireshark插件编写
- 凸函数,凸优化问题,凸二次规划问题
- python自动排版公众号_GitHub - sunshine2337/maxpress: MaxPress:MarkDown+Python实现微信公众号一键排版...
- Python数据分析实例
- 老狗——python求中位数
- OpenBSD 6.8 切换到国内镜像源的一种临时方法:声明PKG_PATH
- 基于标记的分水岭分割算法
- 移动硬盘显示成cd驱动器解决办法
- excel如何实现数据钻取
- 默哀日、灾难日,纪念日,哀悼日等网站都变成黑白色
- 在线测试地址 mp3/mp4
- 4.MyBatis源码解析-MyBatis扩展点--阿呆中二
- 免费收录网站搜索引擎登录入口大全
- javamail设置多个收件人发送简单文本邮件
- kaggle之泰坦尼克号乘客死亡预测