设为首页 加入收藏

TOP

ZOJ Monthly, August 2014(一)
2015-07-20 17:49:05 来源: 作者: 【 】 浏览:6
Tags:ZOJ Monthly August 2014

?

太弱了,简直不忍直视!!

?

?

ZOJ MONTHLY, AUGUST 2014

A

Abs Problem

39.87% (321/805)

B

Bike in ZJU

4.06% (5/123)

C

Calculation

8.23% (7/85)

D

Determinant and Matrix

7.14% (1/14)

E

Easy 2048 Again

18.12% (62/342)

F

Function

19.04% (8/42)

G

YY's Minions

52.73% (183/347)

H

Machine

25.91% (234/903)

I

Incircle and Circumcircle

18.08% (87/481)

J

Just a Palindrome

5.88% (2/34)

K

The Sum of Unitary Totient

28.57% (2/7)


?

?

ZOJ 3798 Abs Problem

给你一个数 n ,要求构造一个 n 的排列 a1,a2,…,an ,令 bi=|ai?bi?1|,b1=a1 ,满足 bn 最大,同样构造一个满足 bn 最大。


打表找规律,就A了。。。

?

#include
  
   
#include
   
     #include
    
      #include
     
       #include
      
        #include
       
         #include
         #include
         
           #include
          
            #include
           
             using namespace std; int ansmin, ansmax; void calc(int n) { if(n%4==0) { ansmin = 0; ansmax = n/2*2; } else if(n%4==1) { ansmin = 1; ansmax = (n+2)/2*2 - 1; } else if(n%4==2) { ansmin = 1; ansmax = (n+1)/2*2 - 1; } else if(n%4==3) { ansmax = n/2*2; ansmin = 0; } } const int maxn = 50000 + 1000; int a[maxn], b[maxn]; int main() { int n; while(~scanf(%d, &n)) { //calc(n); //printf(%d %d , ansmin, ansmax); int mn = 0 , mx = 0; for(int i=n; i>=1; --i) { a[n-i+1] = i; mn = abs(a[n-i+1] - mn); } for(int i=n-1; i>=1; --i) { b[n-i] = i; mx = abs(b[n-i] - mx); } b[n] = n; mx = abs(b[n] - mx); printf(%d %d , mn, mx); for(int i=1; i<=n; ++i) { printf(%d , a[i]); if(i
            
             

?

-------------------------------------------------------------------------------

?

ZOJ 3799 Bike in ZJU 给你一排宽度不同的车,车之间有空挡,能拿出一辆车的条件是左右空挡之和>=车身。那么搬出一辆车之前,需要搬出这辆车附近几辆车,腾出空间才能搬这辆车。让你求拿出指定车的最小搬车数。

?

-------------------------------------------------------------------------------

?

ZOJ 3800 Calculation 给你一个数组 a0,a1,a2,…,an?1 和一个集合 GS ,定义 G(L,R)=gcd(ai),L≤i 然后有若干个询问,每个询问给你三个数 L,R,M ,计算函数 F(L,R,M)=∑L≤i 数据保证 M∈GS ,并且 |GS|≤50

?

-------------------------------------------------------------------------------

?

ZOJ 3801 Determinant and Matrix 给你一个 n×n 的矩阵 Mn×n(ai,j) ,然后定义 add(Mn×n(ai,j))=Mn×n(ai,j+1),sub(Mn×n(ai,j))=Mn×n(ai,j+1) ,还定义了一个 perm(M) ,这个定义看题目吧。求 |det(sub(M))|?(?Mi∈perm(M)det(Mi))?|det(add(M))|

?

-------------------------------------------------------------------------------

?

ZOJ 3802 Easy 2048 Again 某人在一条线上挖宝藏,每个宝藏可以选择要或者不要,不能回头再拿。 宝藏的积分规则和2048的加分规则一致。宝藏会在背包里自动合并。求最高的得分。

PS:计分规则还是挺麻烦的,需要好好理解 这是是一个简单的dp,首先我们发现背包里面有用的状态就是最后递减的部分,前面部分再也没用,因为不能和其他东西合并产生分数。 例如假设背包里面有{32, 4, 8, 4, 2},那么显然32和4就没用了,我们可以直接把这些东西删掉。这样背包里面剩下{8, 4, 2},显然这个可以用二进制表示,于是这道题目就可以搞成一个状态压缩dp,于是随便写写就能过了。

?

#include
              
               
using namespace std;
const int maxs = 8192;
const int maxl = 500;
int f[2][maxs+10], a[maxl+10];
int n;

int main() {
    int T;
    scanf(%d, &T);
    while(T--) {
        scanf(%d, &n);
        for(int i=1; i<=n; ++i) scanf(%d, &a[i]);

        memset(f, -1, sizeof f );
        f[0][0] = 0;
        int cur, pre = 0;
        for(int i=1; i<=n; ++i, pre = cur)
            for(int j=0; j<=maxs; ++j)
                if(f[pre][j]>=0) {
                    cur = 1-pre;
                    f[cur][j] = max(f[pre][j], f[cur][j]);
                    if((j&-j)
               
                

?

-------------------------------------------------------------------------------

?

ZOJ 3803 Function 给你一个 n 位二进制数 x=(AnAn?1An?2…A2A1)2 ,给你两个加密方法 G(x) = x ? ?x / 2? C(x)=2n?x,C(0)=0 现在告诉你 G(x),C(x) 的值,但是有些位置未知,求满足条件的 x 有多少个。

?

-------------------------------------------------------------------------------

?

ZOJ 3804 YY's Minions 给你一个奇怪的模拟规则,输出最后结果,自己看题吧,反正很简单。

简单模拟题。。。

?

 
                
#include
                 
                   #include
                  
                    #include
                   
                     #include
                    
                      #include
                     
                       #include
                      
                        #include
                       #include
                        
                          #include
                         
                           using namespace std; const int maxn = 60; char g[maxn][maxn], gt[maxn][maxn]; int t[maxn][maxn]; int dir[8][2] = {1, 0, -1, 0, 0, 1, 0, -1, 1, 1, 1, -1, -1, 1, -1, -1}; int n, m, f, k; void work() { for(int p =0; p
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU1565方格取数(1)(状态压缩D.. 下一篇11922 - Permutation Transformer..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言中如何将结构体 (2025-12-24 22:20:09)
·纯C语言结构体成员变 (2025-12-24 22:20:06)
·C语言中,指针函数和 (2025-12-24 22:20:03)
·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)