A
题意:给出n,分别给出a个数,b个数,看1到n是否都出现过
直接模拟就可以了
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include <cmath> 5 #include<stack> 6 #include<vector> 7 #include<map> 8 #include<queue> 9 #include<algorithm> 10 #define mod=1e9+7; 11 using namespace std; 12 13 typedef long long LL; 14 int hash[1005]; 15 16 int main(){ 17 int n,i,j,x,y,a,b; 18 cin>>n; 19 cin>>a; 20 memset(hash,0,sizeof(hash)); 21 while(a--){ 22 cin>>x; 23 hash[x]++; 24 } 25 26 cin>>b; 27 while(b--){ 28 cin>>x; 29 hash[x]++; 30 } 31 32 for(i=1;i<=n;i++){ 33 if(hash[i]==0) break; 34 } 35 36 if(i<=n) printf("Oh, my keyboard! "); 37 else printf("I become the guy. "); 38 return 0; 39 }
B
题意:分别给出p段甲的在线时间,q段乙的在线时间,再给出乙的起床时间,l,r,问能够使得甲乙都在线的起床时间有多少个
用的一个hash数组来记录甲在线的时间,然后枚举起床时间判断乙是否在线 注意hash数组开大点,要不然会溢出
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include <cmath> 5 #include<stack> 6 #include<vector> 7 #include<algorithm> 8 using namespace std; 9 10 typedef long long LL; 11 int hash[10005]; 12 int vis[10005]; 13 int a[10005],b[10005],c[10005],d[10005]; 14 15 int main(){ 16 int p,q,l,r; 17 int ans=0; 18 cin>>p>>q>>l>>r; 19 for(int i=1;i<=p;i++){ 20 cin>>a[i]>>b[i]; 21 for(int j=a[i];j<=b[i];j++) hash[j]=1; 22 } 23 for(int i=1;i<=q;i++) cin>>c[i]>>d[i]; 24 for(int i=l;i<=r;i++){ 25 int flag=0; 26 for(int j=1;j<=q;j++){ 27 int ll=c[j]+i; 28 int rr=d[j]+i; 29 for(int k=ll;k<=rr;k++){ 30 if(hash[k]) flag=1; 31 } 32 } 33 if(flag) ans++; 34 } 35 cout<<ans<<endl; 36 return 0; 37 }
C
题意:给出n,代表有1,2,3,---,n个数 这n个数可以进行,加减乘的操作,每次操作的结果又重新放回这堆数中,问能否得到24
最开始想的是bfs,后来觉得这样不对,就没有思路了
然后搜的题解 http://www.cnblogs.com/forgot93/p/3987187.html
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include <cmath> 5 #include<stack> 6 #include<vector> 7 #include<map> 8 #include<queue> 9 #include<algorithm> 10 #define mod=1e9+7; 11 using namespace std; 12 13 typedef long long LL; 14 15 int main(){ 16 int n; 17 scanf("%d",&n); 18 if(n<4) printf("NO "); 19 else{ 20 printf("YES "); 21 if(n%2==0){ 22 for(int i=n;i>=6;i=i-2){ 23 printf("%d - %d = 1 ",i,i-1); 24 printf("1 * %d = %d ",i-2,i-2); 25 } 26 printf("1 * 2 = 2 "); 27 printf("2 * 3 = 6 "); 28 printf("6 * 4 = 24 "); 29 } 30 else{ 31 for(int i=n;i>6;i=i-2){ 32 printf("%d - %d = 1 ",i,i-1); 33 printf("1 * %d = %d ",i-2,i-2); 34 } 35 printf("5 - 1 = 4 "); 36 printf("4 - 2 = 2 "); 37 printf("2 * 4 = 8 "); 38 printf("8 * 3 = 24 "); 39 } 40 } 41 return 0; 42 }
-因为B卡了好几天= =
C不懂写= =
go---go---go