天天寫演算法之Strange fuction
#include <iostream> #include <iomanip> #include<queue> #include<math.h> #include<algorithm> #include<string.h> #include<stdlib.h> #include<stdio.h> #include<iomanip> #include<string.h> #include<sstream> #include<string> #include<queue> #define MAX 5842 //¶¨Ò庯Êý¶Î #define repf(i,a,b) for(int i =(a);i<(b);i++) #define repfe(i,a,b) for(int i =(a);i<=(b);i++) using namespace std; double getTemp(double a,double y) { return 6*pow(a,7)+8*pow(a,6)+7*pow(a,3)+5*pow(a,2)-y*a ; } double getTendency(double x ,double y){ return 42*pow(x,6)+48*pow(x,5)+21*pow(x,2)+10*x-y; } double getRes(double left ,double right ,double y) { if(getTendency(100.0,y)<0) { return getTemp(100.0,y); } double res, mid = (left+right)/2; if(fabs(getTendency(mid,y)-0)<1e-10) { return mid ; } else if(getTendency(mid,y)<0) { res =getRes(mid,right,y ); }else if(getTendency(mid,y)>0) { res =getRes(left,mid,y ); } return res ; } int main() { int num ; double y ,res; cin >> num ; while(num--){ cin >> y ; res = getRes(0.0,100.0,y); printf("%.4lf\n",getTemp(res,y)); } return 0 ; }
相關推薦
天天寫演算法之Strange fuction
這個主要是藥算斜率為0的點。如下程式碼#include <iostream> #include <iomanip> #include<queue> #include<math.h> #include<algorithm&g
天天寫演算法之Common subsequence
不是很明白在自己的電腦上開1000*1000的陣列,直接就炸了,但是卻能AC。emmmm,於是改寫了遞迴,很榮幸的超時了。遞迴程式:int Lcs(string a , string b , int aindex , int bindex,int num) { int
天天寫演算法之Code Lock
這個題目不是很好理解,就是給你n個字母組成的密碼,每個字母有26中選擇,再給出幾個區間,這個區間內的字母可以同時加1變換。也就是abc,如果ab是同一個區間,那麼就可以實現同時變換,也就是ab變成bc可以通過一次變換(幾個個區間)得到的認為是同意把鎖。問這樣的密碼一共有多少種
天天寫演算法之離線Tarjan演算法Closest Common Ancestors
這些延伸的題目都是我在做hdu的時候由於原題比較難,所以才會找更加基礎的來做。對於ACM小白來說,基本上是每隔4道題就必然有一個新的題型。今天就是離線Tarjan演算法。emmmLCA我還沒完全寫對。我要對這個教程裡沒有闡述的東西進行一下深剖。比如 5 4
天天寫演算法之Assignments
我正在做凸包問題,結果忽然出現了一個貪心-。-|||一開始沒都明白題目,以為會有多餘的學生,想到了揹包,emmm,後來發現0.0#include <cstring> #include <cstdio> #include <algorithm>
天天寫演算法之(BFS)推箱子
主要是需要考慮,箱子可以到,人是不是也可以到推箱子的位置。程式碼:#include<iostream> #include<cstdio> #include<algorithm> #include<queue> #include&
天天寫演算法之push box
這個題的痛點在於思路問題,而且如何標記已經走過的路線,這裡的標記是標記人與三個箱子之間的相對位置,並不是說,你走過了以後,就不能再走了,只要其中一個箱子的位置發生了變化,那麼就可以繼續走。程式碼是模的。也拓寬一下自己的思路。BFS用的還不是得心應手#include<io
天天寫演算法之Toxophily
#include<cstdio> #include<cmath> #define PI acos(-1.0) double x,y,v; inline double calculate(double angle)//已知角度計算所能達到
天天寫演算法之pie
題目太長了,意思是,有n個蛋糕,分給f個人,要求蛋糕不能拼接。因此就是分成f份,因此需要從最大的那個蛋糕走,還是二分的問題。#include <iostream> #include <iomanip> #include<queue> #in
天天寫演算法之interview
直接上思路,問需要m個檢察官,才能剛好得m個區間的最大值,使其加和能夠大於要求的n最好的情況下,我們先求出需要max,然後用n/max,這樣就是最好的情況,其他的情況都在這個情況的基礎上進行的。在這個基礎上,每次組數+1,看啥時候能大於n,直接跳出。OK這裡知道了有一個迴圈,
天天寫演算法之(字典樹)T9
腦殼疼,腦殼疼,哎,寫程式碼幾分鐘,debug一小時。還是要說說,指標的問題。指標的傳遞,我感覺吃了一點虧。其中最讓我不明白的地方是。如果一個結構體例內的建構函式,不能賦值給一個物件。struct temp { int p; temp() {
天天寫演算法之Virtual Friends
這個題想法很簡單,但是我就是過不去,在map那,要是有人能幫忙找出來,感激不盡#include <iostream> #include <cstdio> #include <string> #include <cstring>
一步一步寫演算法 之單向連結串列
【 宣告:版權所有,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 有的時候,處於記憶體中的資料並不是連續的。那麼這時候,我們就需要在資料結構中新增一個屬性,這個屬性會記錄下面一個數據的地址。有了這個地址之後,所有的資料就像一條鏈子一
一步一步寫演算法 之合併排序
【 宣告:版權所有,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 前面一篇部落格提到的快速排序是排序演算法中的一種經典演算法。和快速排序一樣,合併排序是另外一種經常使用的排序演算法。那麼合併排序演算法有什麼不同呢?關鍵之處就體現在這
2899 Strange fuction【爬山演算法 || 模擬退火】
Time limit 1000 ms Memory limit 32768 kB Now, here is a fuction: $F(x) = 6 * x7+8*x6+7x3+5*x2-yx (0 <= x <=100) $ Can you fin
演算法之“try-catch-finally-看程式寫結果”
程式碼: public calss Test{ public static void main(String[] args){ try{ test(new int[]{0,1,2,3,4,5,6}); }cat
hdu2899:Strange fuction(模擬退火演算法)
Problem Description Now, here is a fuction: F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <
一步一步寫演算法(之選擇排序)
【 宣告:版權所有,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 選擇排序是和氣泡排序差不多的一種排序。和氣泡排序交換相連資料不一樣的是,選擇排序只有在確定了最小的資料之後,才會發生交換。怎麼交換呢?我們可以以下面一組資料作為測試:
一步一步寫演算法(之記憶體)
【 宣告:版權所有,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 記憶體是程式執行的基礎。所有正在執行的程式碼都儲存在記憶體裡面。記憶體需要處理各種各樣的資料,包括鍵盤的資料、滑鼠的資料、usb的資料、串列埠的資料、攝像頭的資料,那
一步一步寫演算法(之克魯斯卡爾演算法 上)
【 宣告:版權所有,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 克魯斯卡爾演算法是計算最小生成樹的一種演算法。和prim演算法(上,中,下)按照節點進行查詢的方法不一樣,克魯斯卡爾演算法是按照具體的線段進行的。現在我們假設一個圖有