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>
2
using namespace std ;
3
int 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>
2
using namespace std ;
3
int 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 ;
===============================================================
完了