1.2.6 find your present(2)
hdu 2095
用位运算 ^ => 1^3^7^3^1 = 7
#include<iostream> using namespace std; int main() { int n,s,a; while(scanf("%d",&n)&&n) { s = 0; while(n--) { cin>>a; s ^= a; } cout<<s<<endl; } return 0; }
1.3.1 moving tables
hdu 1050:
可以用贪心来做;
按房间开始号排序;
提供另一种的方法:
使用一个数组 id[ ]存放房间在走廊的位置(房间号)被经历的次数;
n对应的房间号是 (n+1)/2
#include<iostream> using namespace std; int main() { int M; cin>>M; while(M--) { int i,n,k,l; //l个需要搬动的桌子,起始n,中止k cin>>l; int id[201]={0};//走廊号 while(l--) { cin>>n>>k; if(n>k)//交换小值n在前 { n = n ^ k; k = n ^ k; n = n ^ k; } for(i=(n+1)/2;i<=(k+1)/2;i++) //奇数偶数全加一然后除以2就是走廊号。 id[i]++; } int max=0; for(i=0;i<201;i++)//找最大值 { max = (max<id[i])?id[i]:max; } cout<<max*10<<endl; } return 0; }