2012年11月18日
题是水题。本弱用了爆搜的方法。
首先把特殊情况(Q=0,1)先判掉,从9开始往下除,去除Q,除到2,如果最后Q没变1就输出-1。
由于水平问题,DEBUG一共用了1小时TAT。
第一次,是没判断n = 0 和 n = 1 的情况,于是悲剧 。
第二次,是想当然的把 n = 0 弄成了 0 ,又一次悲剧 。
第三次,是高估了long的范围,还是悲剧……。
贴上代码……(有点丑了)
1 #include<iostream>
2 #define For( i, a, b ) for ( i = a; i <= b; i++ )
3 using namespace std ;
4 typedef long long ll ;
5
6 bool check( long a ) {
7 ll i, tem = 1 ;
8 if ( a > 1 && a < 10 ) return true ;
9 if ( a > 10 )
10 {
11 For( i, 2, 9 ) if ( a%i == 0 ) { tem = 0; break ; }
12 if ( tem ) return false ;
13 }
14 for ( i = 9; i >= 2; i-- )
15 if ( a%i == 0 ) return check( a/i ) ;
16 return false ;
17 }
18
19 ll solve( long a ) {
20 ll i;
21 if ( a > 1 && a < 10 ) return a ;
22 for ( i = 9; i >= 2; i-- )
23 if ( a%i == 0 ) return solve( a/i ) * 10 + i ;
24 }
25
26 int main() {
27 ll num ;
28 cin >>num ;
29 if ( num == 1 ) {
30 cout << num ;
31 return 0 ;
32 }
33 if ( num == 0 ) {
34 cout <<10 ;
35 return 0 ;
36 }
37 if ( !check( num ) ) {
38 cout <<-1;
39 return 0 ;
40 }
41 cout << solve( num ) ;
42 return 0 ;
43 }
2012年11月3日
这个题据说是水题,有很多种算法
算法1 (朴素):
1、顺序检索每一个客栈。
2、对于颜色为k的客栈i,搜索在此之前后颜色同为k的客栈j。
3、搜索到以后查找区间[i,j]内消费要求小于等于p的客栈,搜索到则总结果数sum+1。
1#include<iostream>
2using namespace std ;
3int main()
4{
5 long n, k, p ;
6 long color[200000], cost[200000] ;
7 //freopen( "2.in", "r", stdin ) ; freopen( "2.out", "w", stdout ) ;
8 cin >>n >>k >> p ;
9 for ( long i = 0; i < n; i++ ) cin >>color[i] >>cost[i] ;
10 long ans = 0 ;
11 for ( long i = 0; i < n-1; i++ )
12 for ( long j = i+1; j < n ; j++ )
13 if ( color[i]== color[j] )
14 {
15 long temp = 0 ;
16 for ( long cafe = i; cafe <= j && temp == 0 ; cafe++ )
17 if ( cost[cafe] <= p ) temp = 1 ;
18 ans += temp ;
19 }
20 cout << ans ;
21 return 0 ;
22}
预期得分40~60
算法二:
当然是DP
动态规划,设f[i,j]为前i个客栈中色调为j的可行方案,s[i,j]为前i个客栈中可以与之后色调为j的客栈搭配的客栈数,即有s[i,j]个客栈的色调为j,且该客栈与第i个客栈之间有符合条件的咖啡店,v[i]为第i个客栈的最低消费,c[i]为第i个客栈的色调a[i,j]为前i个客栈中色调为j的客栈的数目,则有
s[i,j] = ( v[i] <= p ) ? a[i,j] : s[i-1,j]
f[j] = ( c != j ) ? f[j] : f[j]+s[j]
代码:
1#include <cstdio>
2using namespace std ;
3int main()
4{
5 freopen( "2.in", "r", stdin ) ;
6 freopen( "2.out", "w", stdout ) ;
7 long n, m, p, i, j, ans, v = 0, c = 0 ;
8 long a[50] = {0}, s[50] = {0}, f[50] = {0} ;
9 scanf( "%ld%ld%ld", &n, &m, &p ) ;
10 for ( i = 1; i <=n; i++ )
11 {
12 scanf( "%ld%ld", &c, &v ) ;
13 if ( v <= p )
14 for ( j = 0; j < m; j++ ) s[j] = a[j] ;
15 for ( j = 0; j < m; j++ )
16 f[j] = ( c != j ) ? f[j] : f[j]+s[j] ;
17 a[c]++ ;
18 if ( v <= p ) s[c]++ ;
19 }
20 ans = 0 ;
21 for ( j = 0; j < m; j++ ) ans+= f[j] ;
22 printf( "%ld", ans ) ;
23 return 0 ;
24}
2012年7月16日
直播中……
===========================我是华丽丽的分割线======================
7月14日:
昨天才看到了题目,今天思考了一天,没思路,之后和队友交流了一下,仍然囧……
==============================================================
7月15日:
今天,和队友讨论了分工的问题,却发现不好分,于是打算一人写一个(囧……)
===============================================================
7月16日:
尼玛,时间不多了,得开始编程了……
坑爹啊 , 完全没思路啊,囧rz
队友 oibrusher 神犇已经开始debug了,跪烂烂烂烂烂烂烂烂烂烂烂烂烂烂烂烂
===============================================================
7月17日:
oibrusher 神犇在今晚的练习赛中竟然排名第12!!!
亚历山大
===============================================================
7月22日:
彻底完爆
===============================================================
8月1日晚:
练习赛,用了oibrusher的程序,还是被虐了,囧
===============================================================
8月2日:
先被刷到了丙组,后来RP爆发,虐了一次场,进入乙组,但后来又被刷到了丙组,直接
淘汰,囧。
浙江也悲剧了,和甘肃同时被淘汰;
上海队,因ZX大神用随机化在个人赛中虐场,耗费大量RP,导致上海每次虐场后突然违
规,被直接淘汰;
邻省宁夏小宇宙爆发,虐爆全场,夺得亚军,表示跪烂;
范神再次虐场,ORZ ;
===============================================================
完了