模拟题组

以下几个题目来自于:浙大计算机研究生保研复试上机考试-2011年题组。
晚上没什么事做着试了一下,没想到是三道模拟题,正巧很久没有做过这种模拟了,不过速度是慢了很多。
【模拟题组】hdu 3792Twin Prime Conjecture
英文是硬伤,借助百度翻译才看懂这是求孪生素数数目的题目。没有n的范围,假设1000000用筛法打表之后求和。一开始对于时间估计过于乐观,求孪生素数没和求和写在一起,超时了一次。
另外:
memset是对每个字节赋值,而int有4字节(32位) 比如这样,memset(a,1,sizeof(a)); 则a中的每个元素都被赋值成为2进制数为,00000001000000010000000100000001,的数转换成10进制就是16843009所以,一般用memset对数组赋0或-1,赋其他的值就要用循环来实现。

模拟题组
文章图片
模拟题组
文章图片

1 #include 2 #include 3 #define MAX 1000000 4 int a[MAX]={1}; 5 int ans[MAX]={0}; 6 int main () 7 { 8for(int i=2; i0) 33{ 34 35printf("%d\n",ans[n]); 36} 37return 0; 38 }

hdu 3792
hdu 3793Is It Symmetric
一个循环字符串,找这个圈的对称中心,而且限定了只有一个对称中心,长度小于100。
考虑了一会,没想到什么靠谱的算法,于是还是暴力吧,挨个字符过。TLE了两次,因为没有考虑单个字符的情况,而第一遍改还没改的很完善。
模拟题组
文章图片
模拟题组
文章图片
1 #include 2 #include 3 char str[102]; 4 int main() 5 { 6while(scanf("%s",str)) 7{ 8int length=strlen(str); 9int flag=0; 10if(length==1&&str[0]=='#')break; 11if(length==1) 12{ 13printf("YES %d\n",0); 14flag=1; 15} 16else 17{ 18for(int i=0; i
hdu 3793
hdu 3794Magic Coupon
才看到题目以为是个dp,结果捉急的英文理解清楚之后发现也是模拟,说好听点是贪心。
排个序,两边算正的结果就加进最后的结果里。代码wa了很多次,后来发现是因为存储的数据也应经超出int的范围了。
模拟题组
文章图片
模拟题组
文章图片
1 #include 2 #include 3 using namespace std; 4 __int64 nc[1000010]; 5 __int64 np[1000010]; 6 int main() 7 { 8__int64 ans; 9int c,p; 10while(scanf("%d",&c)) 11{ 12if(c<0)break; 13else 14{ 15int fc=c,fp; 16ans=0; 17for(int i=0; i0) 22{ 23fc=i; break; 24} 25scanf("%d",&p); 26fp=p; 27for(int i=0; i) 28scanf("%I64d",&np[i]); 29sort(np,np+p); 30for(int i=0; i) 31if(np[i]>0) 32{ 33fp=i; break; 34} 35int ci=c-1; int pi=p-1; 36while(ci>=fc&&pi>=fp) 37{ 38ans+=nc[ci]*np[pi]; 39ci--; 40pi--; 41} 42ci=0,pi=0; 43while(ci
hdu 3794
hdu 3795Diff
题目是有点麻烦,有点麻烦。

转载于:https://www.cnblogs.com/holyprince/p/3315967.html

    推荐阅读