九度题目1486:False coin
2016-09-01 21:04
253 查看
泪奔题……说不尽的尴尬 ,在POJ已经AC 九度至今还WA着呢 已疯。
在poj上终于找到一组没考虑的数据,就是多个个答案皆可的情况也要输出0,一开始想着要考虑的 写到后面就忘记了
代码思路
1、判断符号,等于号直接就标记OK,如果是大于号直接交换左右两边的位置,让他变成小于号
2、假设每一个硬币(最暴力方法),对于每一条表达式判断合不合理,注意在多个硬币都合理的情况下要输出0;
在poj上终于找到一组没考虑的数据,就是多个个答案皆可的情况也要输出0,一开始想着要考虑的 写到后面就忘记了
代码思路
1、判断符号,等于号直接就标记OK,如果是大于号直接交换左右两边的位置,让他变成小于号
2、假设每一个硬币(最暴力方法),对于每一条表达式判断合不合理,注意在多个硬币都合理的情况下要输出0;
#include<iostream> #include<string.h> #include<stdio.h> using namespace std; int n,m; char c; int a[2005][2005]; int b[2005][2005]; int f[2005]; int g[2005]; int h[2005]; int p[2005]; //g[i]=1 表示不可能是 // possible = 1 , imposibble = 0, ans = 2; int main() { while(~scanf("%d%d",&n,&m)) { int flag = 0; fill(f,f+n,1); memset(g,0,sizeof(g)); memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(h,0,sizeof(h)); memset(p,0,sizeof(p)); for(int i = 0 ; i < m;i++) { scanf("%d",&p[i]); for(int j = 0;j<p[i];j++) scanf("%d",&a[i][j]); for(int j = 0;j<p[i];j++) scanf("%d",&b[i][j]); getchar(); scanf("%c",&c); if(c=='=') { h[i] = 0; for(int j = 0;j<p[i];j++) { g[a[i][j]]= 1; g[b[i][j]]= 1; } } if(c=='>') { for(int j = 0;j<p[i];j++) swap(a[i][j],b[i][j]); h[i] = 1; } if(c=='<') h[i] = 1; } int ans = 0; int fl,fg; for(int j = 1 ; j <= n;j++) { fl = 1;fg = 1; int fll = 1;int fgg = 1; if(g[j]==1) { fll = 0; fgg = 0; continue; } else { for(int i = 0 ; i < m;i++) { if(h[i]) { int sumz=0; int sumy=0; for(int k = 0;k<p[i];k++) { if(a[i][k]!=j) sumz++; if(b[i][k]!=j) sumy++; // cout<<"p,k: "<<p[i]<<" "<<k<<endl; // cout<<"a,b:"<<a[i][k]<<" "<<b[i][k]<<endl; } // cout<<"sumz,sumy: "<<sumz<<" "<<sumy<<endl; if(sumz>=sumy) fl = 0; sumz = 0; sumy = 0; for(int k = 0;k<p[i];k++) { if(a[i][k]!=j) sumz++; else sumz +=2; if(b[i][k]!=j) sumy++; else sumy +=2; } if(sumz>=sumy) fg = 0; fll = fll&&fl; //fl = fll; fgg = fgg&&fg; //fg = fgg; // cout<<"j:"<<j<<endl; // cout<<fgg<<" "<<fll<<endl; } } // cout<<"j:"<<j<<endl; // cout<<fgg<<" "<<fll<<endl; if(fll||fgg) { if(!flag) { ans = j; flag = 1; } else { ans = 0; } } } } cout<<ans<<endl; } } /* 5 3 2 3 4 1 2 > 1 1 4 = 1 2 5 = 9 3 3 1 2 3 4 5 6 < 3 7 8 9 4 5 3 > 2 1 2 4 5 = 6 4 3 1 2 3 4 5 6 < 1 1 2 = 2 1 3 4 5 < 2 4 5 2 6 > 3 2 1 1 2 < 1 2 3 > 5 2 1 1 4 = 1 2 5 = ---- 答案是 3 ---- 2 1 1 1 2 > ---- 答案是 0 ---- 5 3 2 1 3 2 4 > 2 3 5 2 4 > 1 1 4 > ---- 答案是 4 ---- 5 3 1 2 3 < 1 1 2 > 1 3 4 = ---- 答案是 2 ---- 3 2 1 1 2 < 1 1 3 < ---- 答案是 1 ---- 5 1 2 1 2 3 4 = 3 2 1 1 2 < 1 2 3 > 5 2 1 1 2 = 1 3 4 = */
相关文章推荐
- 九度题目1486:False coin
- 九度 oj 题目1486:False coin
- 【九度】题目1486:False coin
- 题目1486:False coin
- 九度OJ题目1001:A+B for Matrices
- 九度oj 题目1055:数组逆置
- 九度oj 题目1074:对称平方数
- 九度 题目1521:二叉树的镜像
- 九度 题目1372:最大子向量和(连续子数组的最大和)
- 九度oj 题目1525:子串逆序打印
- 九度 题目1354:和为S的连续正数序列
- 【九度OJ】题目1183:守形数 解题报告
- 九度 题目1052:找x
- 题目1389:变态跳台阶-九度
- 【九度OJ】题目1442:A sequence of numbers 解题报告
- 九度-题目1433:FatMouse
- 题目1521:二叉树的镜像-九度
- 九度OJ:题目 1028 继续畅通工程
- 九度 OJ 题目1144:Freckles (kruskal算法 最小生成树)
- 九度 OJ 题目1447:最短路径(Floyd 算法)