这次比赛原本就是来打酱油的,想做个签到题就走!一开始不知道1002是签到题,一直死磕1001,WA了四发过了,回头一看Rank,三十名,我靠!看了1001的AC率,在我AC之前只有一个人AC了,当时我AC了1001,感觉松了口气,终于算是签到了,看AC率,1%,吓死宝宝了!我啥时候变得这么屌了,连我们学校的大佬都没AC出来,被我这样一个菜鸡给AC了,顿时感觉信心回来了,然后我的电脑上插了一个气球,莫名其妙,还有气球???回头看1002,我靠,WA了三发,什么情况,10^9,肯定超时,WA了一发,原本想什么快速幂弄出来,我真是傻了眼,又WA了两发,我静下心来想想,人家最快27秒AC,不可能很复杂,结果再读了一遍题目,被坑啦!就总共两种情况,n=0和n!=0的情况,然后AC了!Rank 15~~,然后1005我就不说了,估计是没有想清楚,WA了5发,最后Rank 21结束,没办法咯!好好学吧!为了自己的未来,加油!
1001--------------------------------------------------------------------------------------------------------------------------
三种橙子
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 201 Accepted Submission(s) : 7
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Input
Output
Sample Input
5 4 31 1 12 3 3
Sample Output
412对于第一组数据 我们可以划分为gbbrggbrrrrgg表示绿苹果,r表示红苹果,b表示青苹果
Author
1 #include2 using namespace std; 3 int main() 4 { 5 long long a,b,c; 6 while(scanf("%lld%lld%lld",&a,&b,&c)!=EOF) 7 { 8 long long s=a+b+c; 9 long long x,y,z;10 if(a>=b)11 {12 if(a>=c)13 {14 x=a;15 if(b>=c)16 y=c;17 else y=b; 18 }19 else x=c;20 }21 else 22 {23 if(a>=c)24 x=b;25 else26 {27 y=a;28 if(b>=c)29 x=b;30 else x=c;31 }32 }33 z=s-x-y;34 long long t=s/3;35 if (y+z<=x&&s>=3)36 {37 if(y+z<=t)38 printf("%lld\n",y+z);39 else printf("%lld\n",t);40 }41 else42 printf("%lld\n",s/3);43 }44 return 0;45 }
1002-------------------------------------------------------------------------------------------------------------
会喊666的咸鱼
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 277 Accepted Submission(s) : 53
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Input
Output
Sample Input
1
Sample Output
6
Author
1 #include2 using namespace std; 3 int main() 4 { 5 int n; 6 while(scanf("%d",&n)!=EOF) 7 { 8 if(n==0) 9 printf("1\n");10 else if(n>=1)11 printf("6\n");12 }13 return 0;14 }
1003--------------------------------------------------------------------------------------------------------------------
学妹的告白
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 69 Accepted Submission(s) : 2
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Input
Output
Sample Input
8
Sample Output
31->4->7->6->3->2->5->8 全部踩中
Author
1 int flag[N]; 2 int check(int x,int n) 3 { 4 for(int i=1;i<=n;i++) 5 flag[i]=0; 6 int ans=0; 7 int st=1; 8 int dir=1; 9 while(ansn)18 st=2*n-st,dir=0;19 //cout< <<" xxx "< <
下面给出AC代码:
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include
方案二,
如果做过HDU1222题估计会好很多,结论就是gcd(2*n-2,k)==1时,所有格子可以踩中
HDU1222是一个圈啦,这里不是,我们要看成一个圈,比如12321,我们取1232为循环,就是2*3-2(2*n-2)
下面给出AC代码:
1 #include2 #include 3 #include 4 #include 5 #include // C++头文件,C++完全兼容C 6 #include // C++头文件,C++完全兼容C 7 #include 8 #define fre freopen("out.txt","w",stdout) //以文件代替控制台输入,比赛时很常用,能缩短输入测试样例的时间 9 #define INF 0x3f3f3f3f10 #define inf 1e6011 using namespace std; // C++头文件,C++完全兼容C12 const int maxn = 200;13 int a[maxn];14 int b[3];15 int ans,n,k;16 17 int main()18 {19 while(cin>>n)20 {21 for(int i=2; i<=2*n; i++)22 {23 if(__gcd(2*n-2,i)==1)24 {25 cout< <
1004--------------------------------------------------------------------------------------------------------------------------------
豆豆的三进制计算机
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 31 Accepted Submission(s) : 2
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Input
Output
Sample Input
3
Sample Output
1
Author
Source
我们想一想十进制怎么求末尾0,嗯嗯,当然是找被10整除的个数喽
这里情况一样的啦,我们就一直除以3,一直除以3,找被3整除的个数
下面给出AC代码:
1 #include2 #define freout freopen("out.txt","w",stdout) 3 #define frein freopen("in.txt","r",stdin) 4 int main () 5 { 6 // frein; 7 // freout; 8 long long n; 9 while(~scanf("%lld", &n))10 {11 long long sum = 0;12 long long tmp = 3;13 while (n >= tmp)14 {15 sum += (n / tmp);16 tmp *= 3;17 }18 printf("%lld\n", sum);19 }20 21 return 0;22 }
1005--------------------------------------------------------------------------------------------------------------------------
袁少的游戏
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 200 Accepted Submission(s) : 24
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Input
Output
Sample Input
51 3 3 2 151 2 3 4 521 2
Sample Output
jxustecjtujxnujxust第一组样例可以通过所有的3都减一,所有的1都加一,使全部都变成2.所以输出jxust第三组样例可以让1加上1,使所有数都变成2,或者让2减去1,使所有数都变成1,所以输出jxust
Author
大概知道了如果数组中只存在两种数字,必定是符合要求的
三种如何判断,最小的数字必须增加一个数,最大的数字必须减少一个数字,他们要和中间数字相同,那么是a[3]-a[2]==a[2]-a[1]的关系
我们需要做的就是去重计算出他的种类,排序判断
下面给出AC代码:
1 #pragma comment(linker, "/STACK:1024000000,1024000000") 2 #include3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include
13 #include
1006---------------------------------------------------------------------------------------------------------------------------------
来相思树下
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 32 Accepted Submission(s) : 0
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Input
Output
Sample Input
65 50 45 7 10 1
Sample Output
4 3 2 1 0 -1对于第一个数:5,比它小的数字是1,1距离它最远,最远距离为4对于第二个数:50,比它小的数字是45 7 10 1,1距离它最远,距离为3对于第三个数:45,比它小的数字是7 10 1,1距离它最远,距离为2对于第四个数:7,比它小的数字是10 1,1距离它最远,距离为1对于第五个数:10,比它小的数字是1,1距离它最远,距离为0对于第六个数:已经没有比它小的数字了,距离为-1
Author
1 #pragma comment(linker, "/STACK:1024000000,1024000000") 2 #include3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include
13 #include
实在不会还有这种的(利用C++STL)
下面给出AC代码:
1 #include2 #include 3 #include 4 #include 5 #define MAX 200002 6 using namespace std; 7 8 int a[MAX],ans[MAX]; 9 vector v,num;10 #define freout freopen("out.txt","w",stdout)11 #define frein freopen("in.txt","r",stdin)12 int main()13 {14 15 int n;16 while(~scanf("%d",&n)){17 for(int i=0;i =0;i--){21 if(v.size()==0 || v.back()>=a[i]){22 v.push_back(a[i]); num.push_back(i);23 ans[i]=-1;24 }else{25 int j = (lower_bound(v.rbegin(),v.rend(),a[i]) - v.rbegin());26 // printf("%d %d\n",a[i],j);27 j = (int)v.size() - j ;28 //printf("%d %d\n",num[j+1],j);29 ans[i] = num[j] - i - 1;30 }31 }32 for(int i=0;i