390 A. Inna and Alarm Clock
http://codeforces.com/contest/390/problem/A
水题一枚,两个set就可完成
1 #include<iostream> 2 #include<string.h> 3 #include<set> 4 using namespace std; 5 6 set<int>s1,s2; 7 8 int main() 9 { 10 int n,a,b; 11 while(cin>>n) 12 { 13 s1.clear(); 14 s2.clear(); 15 while(n--) 16 { 17 cin>>a>>b; 18 s1.insert(a); 19 s2.insert(b); 20 } 21 int mm=s1.size(); 22 int nn=s2.size(); 23 cout<<min(mm,nn)<<endl; 24 } 25 return 0; 26 }
390 B. Inna, Dima and Song
http://codeforces.com/contest/390/problem/B
同样也很水,两数之和相等的情况之下,要使两个数的乘积比较大,只要保证两个靠的比较近就行了,即(sum/2)*(sum-sum/2)
1 #include<iostream> 2 #include<string.h> 3 #include<set> 4 #include<stdio.h> 5 using namespace std; 6 7 long long int a[100001],b[100001]; 8 9 int main() 10 { 11 long long int n,i; 12 while(cin>>n) 13 { 14 for(i=0;i<n;i++) 15 cin>>a[i]; 16 for(i=0;i<n;i++) 17 cin>>b[i]; 18 long long int sum=0; 19 for(i=0;i<n;i++) 20 { 21 if(a[i]+a[i]<b[i]||b[i]==1) 22 sum-=1; 23 else 24 { 25 long long int mm=b[i]/2; 26 long long int nn=b[i]-mm; 27 sum+=mm*nn; 28 } 29 } 30 cout<<sum<<endl; 31 } 32 return 0; 33 }
390 C. Inna and Candy Boxes
http://codeforces.com/contest/390/problem/C
这个题蛮有结题报告的价值的
题意:
给定一个长度N的01串S,再给一个整数K。
然后有W个询问,每个询问给一对整数L和R,问对原串在[L,R]这个区间上要修改多少个位置使得在L+K-1,L+2K-1,L+3K-1,...,R都是1,而其它位置都是0。题目保证R-L+1能够被K整除。
对于一次询问,首先求出原串中对应区间上1的个数X,和落在指定位置上1的个数Y,以及指定位置的个数Z。
原文:http://www.cnblogs.com/zhanzhao/p/3551125.html