POJ 3258 River Hopscotch 二分

題意:奶牛們喜歡在河裡的石頭上玩跳房子遊戲,每次從一個石頭跳到另一個石頭上。現在知道起點的石頭,終點的石頭,以及終點石頭到起點石頭的距離L。又知道起點-終點之間還有N個石頭,每個石頭到起點的距離記為rock[i]。Farmer John想去掉N個石頭中的M個,問如何去掉使得任意兩塊石頭之間的距離的最小值最大。#include<cstdio>#include<algorithm>using namespace std;int L, N, M;int rock[200000]

POJ 1321 棋盤問題 DFS

題意:在一個給定形狀的棋盤(形狀可能是不規則的)上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請編程求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案C。題解:#include <iostream>using namespace std;#define N 10bool col[N];char map[N][N];int n, k, res;void dfs ( int cnt, int r ){if ( cnt == k

POJ 3087 Shuffle’m Up 類比

題意:重複洗牌。求出得到給定的序列所需要的步驟數。若不能得到所需序列,則輸出-1.題解:當某步得到的序列與初始序列相同時,則可以確定不可能得到給定目標序列了。#include <iostream>using namespace std;char s1[101], s2[101], shuffle[201], start[201], goal[201];int solve( int c ){int x, y, i, step = 0;while ( 1 ){step++;x = y =

POJ 3122 Pie 二分

題意:有N塊餡餅,要分給F+1個人。1.可以將一塊餡餅分成若干份,但是每個人最多隻能拿一塊餡餅。2.所有人的餡餅面積必須i相同。求每個人最多能拿到的餡餅的面積。#include<cstdio>#include<cmath>using namespace std;const double eps = 1e-6;const double pi = acos(-1.0);int R[20000], N, F;bool check ( double num ){

POJ 1068 Parencodings 類比

題意:對每一個括弧串S (((()()())))。P-sequence :4 5 6666 表示第k個右括弧之前的左括弧個數。W-sequence :1 1 1456 表示每個右括弧以及與它匹配的左括弧之間的左括弧個數。給出P-sequence求W-sequence。#include <cstring>#include <iostream>using namespace std;struct item{bool paren, check;} S[41];int main(

字串四則運算(計算機)

今天就弄了這個,鬱悶····bool CCalculate::isOperChar ( char ch ) /* 判斷是否是加減乘除操作符 */{if ( ch == '+' || ch == '-' || ch == '*' || ch == '/' )return true;return false;}/////////////////////////////////////////////float CCalculate::operCal(CString str){int i,

POJ 1703 並查集

題意:有兩黑幫,N個人,現在又一些資訊,你需要根據這些資訊確定這兩個人之間是否屬於同一個黑幫。有兩種輸入: D a b 表示a,b不屬於同一個黑幫;A a b

POJ 3295 Tautology 類比

題意:判斷一個字串是否是用真式。Definitions of K, A, N, C, and E     w  x  Kwx  Awx   Nw  Cwx  Ewx  1  1  1  1   0  1  1  1  0  0  1   0  0  0  0  1  0  1   1  1  0  0  0  0  0   1  1  1題解:枚舉 p,q,r,s,t 的布爾值,用一個整數表示。#include <iostream>using namespace std;int

POJ 3009 Curling 2.0 DFS

題意:冰球遊戲,和迷宮類似,但是每一次碰到障礙則在障礙的旁邊停下來,並且障礙被擊碎。此時可以重新值擲一次冰球。當擲球次數超過10次則輸出-1.題解:#include <iostream>using namespace std;#define INF 100000000int map[21][21], dir[4][2] = { {0,-1}, {1,0}, {0,1}, {-1,0} };int h, w, si, sj, res, step;void dfs( int x,

數字鏈表

#include <algorithm>#include <iostream>using namespace std;#define N 100000struct NODE {int val; NODE* next; };NODE *pos[N]; /* pos[i] = x 表示餘數i出現的節點的地址為x */bool done[N]; /* done[i] 表示餘數i已經處理過 */int main(){int m, n;while ( scanf("%d%d", &

POJ 3424 Better security(類比+SET)

題意:輸入密碼時,會彈出一個視窗789456123然後用滑鼠一個一個點,現在有N個點的座標,N個點之間的距離是固定的,但是由於視窗所在的位置會發生改變,所以會產生多種密碼組合。現在要求所有可能的密碼組合,並按字典序輸出。題解:這題描述不是很清楚。題中給出點所在的座標系如:1.處理的時候為了一視窗一致,可將所有的縱座標取反。2.枚舉座標原點的位置,先將所有點的座標範圍求得。座標原點橫座標的最小值 = 最右邊點的橫座標-300;座標原點橫座標的最大值 =

POJ 3083 Children of the Candy Corn dfs+bfs

題意:給出一個迷宮,不超過40*40。分別求出從起點一直沿左走,一直沿右走,直到終點所需要的步數。以及所需要的最小步數。題解:用bfs求出最小步數,dfs求一直向左或者向右走得步數。#include <queue>#include <iostream>using namespace std;char Maze[44][44];int dirL[4][2] = { {0,1}, {1,0}, {0,-1}, {-1,0} };int dirR[4][2] = { {0,1}

ZOJ 3656 Bit Magic (2-Sat問題)

題意:b[i][j] 與a[i], a[j]的關係如下。現在已知b,問是否存在對應的a,若存在輸出YES,否則輸出NOvoid calculate(int a[N], int b[N][N]) {for (int i = 0; i < N; ++i) {for (int j = 0; j < N; ++j) {if (i == j) b[i][j] = 0;else if (i % 2 == 1 && j % 2 == 1) b[i][j] = a[i] | a[j]

POJ 2524 Ubiquitous Religions 並查集

題意:給出一些數對,表示這兩個人有相同的宗教信仰,現在要求人們信仰的宗教最多有多少種。題解:並查集。#include <cstdio>#include <memory>int father[50001],r[50001];int m,n,res;void make_set (){for ( int i = 1; i <= n; i++ )father[i] = i;memset(r,0,sizeof(r));}int find_set ( int a ){if (

POJ 2488 A Knight’s Journey DFS

題意:給出一個國際象棋的棋盤(行為字母,列為數字,如:A1)。判斷騎士(類似於馬)能否不重複的走遍棋盤上的每一個點。若有多種方式,輸出字典序最小的。題解:#include <iostream>using namespace std;bool check[30][30];int p,q,counter;int dir[8][2] = {{-2, -1}, {-2, 1}, {-1, -2}, {-1, 2},{1, -2}, {1, 2}, {2, -1}, {2,

POJ 1611 The Suspects 並查集

題意:sars感染者呆過的每一個group的所有人都被認為是感染者,要求所有可能被感染的人數。題解: 並查集#include <cstdio>#include <memory>int father[30001], num[30001], r[30001]; /* 數組r表示秩的大小 */int n,m;void make_set(){for ( int i = 0; i < n; ++i ){father[i] = i;num[i] = r[i] =

POJ 3140 Contestants Division (DFS)

題意:給定一棵無根樹,每個節點有一個值, 你可以在任意兩節點間劃一下,使得分開的兩棵子樹的值的差最小。題解:若所有節點的值的總和為奇數,那麼任意劃一下一定得一奇一偶的兩棵子樹,值之差一定是奇數且>=1。若總值為偶數,那麼值之差一定為偶數且>=0。#include <cmath>#include <iostream>using namespace std;#define N 100005#define lint __int64#define INF 999999

POJ 3723 Monthly Expense 二分

題意:給你n個值,要求將其劃分成m部分(順序不能打亂),如何劃分使得最大部分的值最小。題解:二分,對於每一個中間值,檢測一次。#include<cstdio>int N, M;int spend[200000];bool check ( int num ){ int i, sum, cnt = 0; for ( i = 0; i < N; ) { sum = 0; cnt++; while ( i < N &&

POJ 3984 迷宮問題 (BFS,水題)

題意:int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};它表示一個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求編程式找出從左上方到右下角的最短路線。並輸出沿途經過的點的座標。#include <queue>#include <iostream>using namespace std;int maze[7][7]

POJ 1599 Station Balance (分配問題,搜尋)

題意:給你C個小組(C<=5),S個數值(S<=10, C*2>=S)。要將這S個數值分配給C個小組,每小組最多分配兩個數值。求最優的分配方式,使得下面 IMBALANCE 的值最小。其中AM = 所有數值之和 / C; CMi = 第i小組的數值之和;#include<cstdio>#include<cmath>#include<algorithm>#include<cstdlib>#include<cstring>

總頁數: 61357 1 .... 13179 13180 13181 13182 13183 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.