标签:output ... mat 表示 函数 class strlen ash cout
1289 大鱼吃小鱼
第1行:1个数N,表示鱼的数量(1 <= N <= 100000)。 第2 - N + 1行:每行两个数A[i], B[i],中间用空格分隔,分别表示鱼的大小及游动的方向(1 <= A[i] <= 10^9,B[i] = 0 或 1,0表示向左,1表示向右)。
输出1个数,表示最终剩下的鱼的数量。
5 4 0 3 1 2 0 1 0 5 0
2
输入的先后顺序即为位置,可以以左边开始,就是如果向左游就和前面的向右游的鱼判断大小,如果没有就不要管它了(随它游吧),然后吃了的话总数减少。。。就好了。
1 #include<cstdio> 2 #include<algorithm> 3 #include<cmath> 4 #include<iostream> 5 #include<cstring> 6 using namespace std; 7 8 const int NN=100007; 9 int n,top,ans; 10 int a[NN]; 11 12 int main() 13 { 14 scanf("%d",&n); 15 top=0,ans=0; 16 int x,y; 17 for (int i=1;i<=n;i++) 18 { 19 scanf("%d%d",&x,&y); 20 if (y==0) 21 { 22 for (;top>0;top--) 23 if (x>a[top]) ans++; 24 else 25 { 26 ans++; 27 break; 28 } 29 } 30 else a[++top]=x; 31 } 32 printf("%d\n",n-ans); 33 }
1305 Pairwise Sum and Divide
第1行:1个数N,表示数组A的长度(1 <= N <= 100000)。 第2 - N + 1行:每行1个数A[i](1 <= A[i] <= 10^9)。
输出fun(A)的计算结果。
3 1 4 1
4
一开始还是去模拟了,发现超时,还去删除了一些头文件,真蠢,发现分母是相乘的那么向下取整,很快就为0了,排个序,找找单调性,就解决了。
1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 5 typedef long long LL; 6 const int NN=100007; 7 8 int n; 9 int a[NN]; 10 11 int main() 12 { 13 scanf("%d",&n); 14 for (int i=1;i<=n;i++) 15 scanf("%d",&a[i]); 16 sort(a+1,a+n+1); 17 LL sum=0; 18 for (int i=1;i<=n;i++) 19 for (int j=i+1;j<=n;j++) 20 { 21 LL x=(LL)(a[i]+a[j])/((LL)a[i]*a[j]); 22 if (x==0) break; 23 sum=sum+x; 24 } 25 printf("%lld",sum); 26 }
1344 走格子
第1行:1个数n,表示格子的数量。(1 <= n <= 50000) 第2 - n + 1行:每行1个数A[i],表示格子里的能量值(-1000000000 <= A[i] <= 1000000000)
输出1个数,对应从1走到n最少需要多少初始能量。
5 1 -2 -1 3 4
2
顺序下去,找一个最小负值就好了。
1 #include<algorithm> 2 #include<iostream> 3 #include<cmath> 4 #include<cstdio> 5 #include<cstring> 6 using namespace std; 7 8 const long long INF=1e16+7; 9 10 int main() 11 { 12 long long x=0,y,ans=INF; 13 int n; 14 scanf("%d",&n); 15 for (int i=1;i<=n;i++) 16 { 17 scanf("%lld",&y); 18 x+=y; 19 ans=min(ans,x); 20 } 21 if (ans<0) printf("%lld\n",abs(ans)); 22 else printf("0\n"); 23 }
1347 旋转字符串
S[0...n-1]是一个长度为n的字符串,定义旋转函数Left(S)=S[1…n-1]+S[0].比如S=”abcd”,Left(S)=”bcda”.一个串是对串当且仅当这个串长度为偶数,前半段和后半段一样。比如”abcabc”是对串,”aabbcc”则不是。
现在问题是给定一个字符串,判断他是否可以由一个对串旋转任意次得到。
第1行:给出一个字符串(字符串非空串,只包含小写字母,长度不超过1000000)
对于每个测试用例,输出结果占一行,如果能,输出YES,否则输出NO。
aa ab
YES NO
一开始一位hash去搞,后来不想打代码,花了60去看了别人代码,发现了一个规律,如果是对串旋转后也是具有对串性质,所以直接比较就好了。
#include <iostream> #include <cstring> using namespace std; char str[1000005]; int main() { while(cin>>str) { int flag=0; int len=strlen(str); if(len%2!=0) { cout<<"NO"<<endl; continue; } for(int i=0;i<len/2;i++) { if(str[i]!=str[i+len/2]) { cout<<"NO"<<endl; flag=1; break; } } if(!flag) cout<<"YES"<<endl; } return 0; }
1381 硬币游戏
有一个简单但是很有趣的游戏。在这个游戏中有一个硬币还有一张桌子,这张桌子上有很多平行线(如下图所示)。两条相邻平行线之间的距离是1,硬币的半径是R,然后我们来抛硬币到桌子上,抛下之后硬币有时候会和一些直线相交(相切的情况也算是相交),有时候不会。
请你来计算一下抛一次硬币之后,该硬币和直线相交数目的期望。
第一行给出一个整数T,表示有T组数据(1<=T<=10000)。 第2行到T+1,每行给出一个整数R。(0< R <= 10,000,000,000)
对于每一个数据,在一行中输出答案的整数部分即可。
1 1
2
一开始看到期望吓傻,然后发现输入都是整数,发现乘2就可以了(不理解的花哥图看看就知道了)。
1 #include<cstdio> 2 #include<algorithm> 3 #include<cmath> 4 #include<iostream> 5 #include<cstring> 6 using namespace std; 7 8 int n; 9 10 int main() 11 { 12 scanf("%d",&n); 13 int x; 14 for (int i=1;i<=n;i++) 15 { 16 scanf("%d",&x); 17 printf("%d\n",x*2); 18 } 19 }
1289 大鱼吃小鱼 1305 Pairwise Sum and Divide 1344 走格子 1347 旋转字符串 1381 硬币游戏
标签:output ... mat 表示 函数 class strlen ash cout
原文地址:http://www.cnblogs.com/fengzhiyuan/p/7261140.html