zoukankan      html  css  js  c++  java
  • Codeforces Round #239 (Div. 1) 解题报告

    Problem A Triangle

    题意:给你直角三角形的两条直角边问你能不能构造出这个三角形使其任意一条边都不和坐标轴平行。输出三点坐标

    思路:固定直角的顶点为原点由于范围最大1000所以直接暴力枚举所有可能点,既满足勾股定理的点。然后逐个验证即可。

    代码如下:

      1 /**************************************************
      2  * Author     : xiaohao Z
      3  * Blog     : http://www.cnblogs.com/shu-xiaohao/
      4  * Last modified : 2014-03-30 14:45
      5  * Filename     : Codeforce_239_1_A.cpp
      6  * Description     : 
      7  * ************************************************/
      8 
      9 #include <iostream>
     10 #include <cstdio>
     11 #include <cstring>
     12 #include <cstdlib>
     13 #include <cmath>
     14 #include <algorithm>
     15 #include <queue>
     16 #include <stack>
     17 #include <vector>
     18 #include <set>
     19 #include <map>
     20 #define MP(a, b) make_pair(a, b)
     21 #define PB(a) push_back(a)
     22 
     23 using namespace std;
     24 typedef long long ll;
     25 typedef pair<int, int> pii;
     26 typedef pair<unsigned int,unsigned int> puu;
     27 typedef pair<int, double> pid;
     28 typedef pair<ll, int> pli;
     29 typedef pair<int, ll> pil;
     30 
     31 const int INF = 0x3f3f3f3f;
     32 const double eps = 1E-6;
     33 const int LEN = 1010;
     34 int xx[] = {1, 1, -1,-1};
     35 int yy[] = {1,-1, -1, 1};
     36 
     37 bool is(int a, int b, int c, int d){
     38     return (a*c + b*d == 0 ? true : false);
     39 }
     40 
     41 bool solve(pii a, pii b){
     42     int ax, ay, bx, by;
     43     for(int i=0; i<4; i++){
     44         int j = (i+1)%4;
     45         ax = a.first*xx[i];
     46         ay = a.second*yy[i];
     47         bx = b.first*xx[j];
     48         by = b.second*yy[j];
     49         if(is(ax, ay, bx, by) && bx!=ax && by!=ay){
     50             cout << "YES" << endl;
     51             cout << "0 0" << endl;
     52             cout << ax << ' ' << ay << endl;
     53             cout << bx << ' ' << by << endl;
     54             return true;
     55         }
     56     }
     57     return false;
     58 }
     59 
     60 int main()
     61 {
     62     freopen("in.txt", "r", stdin);
     63 
     64     int a, b, ans, ta, tb;
     65     pii posa[LEN], posb[LEN];
     66     while(cin >> a >> b){
     67         ans = ta = tb = 0;
     68         for(int i=1; i<a; i++){
     69             for(int j=1; j<a; j++){
     70                 if(i*i + j*j == a*a) posa[ta++] = MP(i ,j);
     71             }
     72         }
     73         for(int i=1; i<b; i++){
     74             for(int j=1; j<b; j++){
     75                 if(i*i + j*j == b*b) posb[tb++] = MP(i ,j);
     76             }
     77         }
     78         int ans = 0;
     79         for(int i=0; i<ta; i++){
     80             for(int j=0; j<tb; j++){
     81                 if(solve(posa[i], posb[j])) {
     82                     ans = 1; break;     
     83                 }
     84                 posa[i] = MP(posa[i].second, posa[i].first);
     85                 if(solve(posa[i], posb[j])){
     86                     ans = 1;break; 
     87                 }    
     88                 posb[j] = MP(posb[j].second, posb[j].first);
     89                 if(solve(posa[i], posb[j])){
     90                     ans = 1;break; 
     91                 }    
     92                 posa[i] = MP(posa[i].second, posa[i].first);
     93                 if(solve(posa[i], posb[j])){
     94                     ans = 1;break; 
     95                 }    
     96             }
     97             if(ans) break;
     98         }
     99         if(!ans)cout << "NO" << endl;
    100     }
    101     return 0;
    102 }
    View Code

    Problem B Long Path

    题意:有一排房间每个房间有两扇门,一扇通往i+1个房间,另一扇通往a[i]个房间,然后他每经过一个房间就做一个标记,只有偶数个标记时他才会走第一扇门。问你他要走多少单位时间。

    思路:dp[i]表示到当前房间走到下一房间的花费。这样每次只要先回到a[i]然后再一个个走上来就行了。

    代码如下:

     1 /**************************************************
     2  * Author     : xiaohao Z
     3  * Blog     : http://www.cnblogs.com/shu-xiaohao/
     4  * Last modified : 2014-03-30 14:45
     5  * Filename     : Codeforce_239_1_B.cpp
     6  * Description     : 
     7  * ************************************************/
     8 
     9 #include <iostream>
    10 #include <cstdio>
    11 #include <cstring>
    12 #include <cstdlib>
    13 #include <cmath>
    14 #include <algorithm>
    15 #include <queue>
    16 #include <stack>
    17 #include <vector>
    18 #include <set>
    19 #include <map>
    20 #define MP(a, b) make_pair(a, b)
    21 #define PB(a) push_back(a)
    22 
    23 using namespace std;
    24 typedef long long ll;
    25 typedef pair<int, int> pii;
    26 typedef pair<unsigned int,unsigned int> puu;
    27 typedef pair<int, double> pid;
    28 typedef pair<ll, int> pli;
    29 typedef pair<int, ll> pil;
    30 
    31 const int INF = 0x3f3f3f3f;
    32 const double eps = 1E-6;
    33 const int MOD = 1000000007;
    34 const int LEN = 1001;
    35 int dp[LEN], n, a[LEN];
    36 
    37 void debug(){
    38     for(int i=0; i<n; i++) cout << dp[i] << ' ';cout << endl;
    39 }
    40 
    41 int main()
    42 {
    43 //    freopen("in.txt", "r", stdin);
    44     
    45     while(cin >> n){
    46         for(int i=0; i<n; i++){
    47             cin >> a[i];a[i]--;
    48         }
    49         int ans = 0;
    50         for(int i=0; i<n; i++) dp[i] = 0;
    51         for(int i=0; i<n; i++){
    52             int pos = a[i];
    53             do{
    54                 dp[i] = (dp[i] + dp[pos]) % MOD;
    55                 if(pos != i) pos ++;
    56             }while(pos != i);
    57             dp[i] = (dp[i] + 2) % MOD;
    58         }
    59         for(int i=0; i<n; i++) ans = (ans+dp[i])%MOD;
    60         cout << ans << endl;
    61     }
    62     return 0;
    63 }
    View Code
  • 相关阅读:
    Linux shell脚本学习
    正则表达式 学习-编辑
    新装ubuntu使用vi时方向键不起作用
    vi
    ln
    crontab
    64bit ubuntu 14 04 LTS 安装 google chrome
    64bit ubuntu 14 04 LTS 安装 adobe flash player
    glogin.sql的常用配置
    sql基本语句(一)select
  • 原文地址:https://www.cnblogs.com/shu-xiaohao/p/3634380.html
Copyright © 2011-2022 走看看