HDU 5878 I Count Two Three (dfs+二分)
来源:互联网 发布:c# vsa javascript 编辑:程序博客网 时间:2024/05/22 06:14
题意:
给你一个数n,然后给你2,3,5,7这四个素数,令
i,j,k,l分别从零开始取,问你能取出来的m里比n大的最小的那个数是多少
思路:
先dfs搜一遍,将所有范围内可能的取值都存到数组里,然后二分查找。
AC代码:
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;int numb[100000 + 5];int numb2[100000 + 5];int ss[100000 + 5];int main(){ int t; scanf("%d", &t); while(t--) { int n,m; memset(numb2,0,sizeof(numb2)); memset(ss,0,sizeof(ss)); scanf("%d%d", &n,&m); int max_ = 0; for(int i = 1; i <= n; i++){ scanf("%d", numb+i); if(m == 0){ max_ = max(max_,numb[i]); } } int u,v; for(int i = 1;i <= m;i++){ scanf("%d%d", &u, &v); numb2[u]++; numb2[v]++; } int jidian = 0; int p1,p2; for(int i = 1; i <= n; i++){ if(numb2[i] % 2 == 1){ jidian++; if(jidian > 2)break; if(jidian == 1){ p1 = i; } if(jidian == 2){ p2 = i; } } else{ int temp = numb2[i] /2 %2; if(temp&1){ ss[i] = 1; } } } if(m == 0){ //puts("0"); //printf("%d\n",max_); printf("Impossible\n"); continue; } int ans = 0; if(jidian == 0){ for(int i = 1;i <= n;i++){ if(ss[i]) ans ^= numb[i]; } const int temp = ans; int ttt; ans = 0; for(int i = 1;i <= n;i++){ ttt = temp; if(numb2[i] != 0){ ttt ^= numb[i]; if(ttt > ans){ ans = ttt; } } } printf("%d\n",ans); } if(jidian == 2){ ss[p1] ^= 1; ss[p2] ^= 1; for(int i = 1;i <= n;i++){ if(ss[i]) ans ^= numb[i]; } printf("%d\n",ans); } else{ printf("Impossible\n"); } } return 0;}
0 0
- HDU 5878 I Count Two Three (dfs+二分)
- HDU 5878 I Count Two Three (DFS预处理 + 二分)
- hdu 5878 I Count Two Three(二分)
- 【HDU 5878】I Count Two Three(预处理+二分)
- hdu 5878 I Count Two Three【预处理打表+二分】
- HDU 5878 I Count Two Three(打表加二分)
- hdu 5878 I Count Two Three 丑数 二分
- HDU-5878-I Count Two Three-预处理+二分
- hdu 5878 I Count Two Three
- 【30.53%】【hdu 5878】I Count Two Three
- HDU 5878 I Count Two Three .
- HDU 5878 - I Count Two Three
- HDU 5878 I Count Two Three
- HDU-5878-I Count Two Three
- hdu I Count Two Three(二分查找&&打表)
- 【HDU5878】I Count Two Three(打表+二分)
- 5878 I Count Two Three
- HDU 5878 I Count Two Three 2016青岛网赛
- 1034. Head of a Gang (30)
- 2016ICPC青岛赛区网络赛 1001
- XStream: Java对象和XML之间相互转换的利器
- UML结构建模图———类或结构图
- leetcode---Construct Binary Tree from Inorder and Postorder Traversal
- HDU 5878 I Count Two Three (dfs+二分)
- 模拟-CodeForces 370B
- HDU 5878 I Count Two Three(2016亚洲区青岛站网络赛)
- 2016ICPC青岛赛区网络赛 1002
- 欢迎使用CSDN-markdown编辑器
- hdu5889 Barricade 最短路 + 最小割
- 常见错误提示
- UML结构建模图———部署图
- HDU 5878 I Count Two Three(打表)qingdao网赛