250:乱搞
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 // BEGIN CUT HERE 2 /* 3 4 */ 5 // END CUT HERE 6 #line 7 "RectangleCoveringEasy.cpp" 7 #include <cstdlib> 8 #include <cctype> 9 #include <cstring> 10 #include <cstdio> 11 #include <cmath> 12 #include <algorithm> 13 #include <vector> 14 #include <string> 15 #include <iostream> 16 #include <sstream> 17 #include <map> 18 #include <set> 19 #include <queue> 20 #include <stack> 21 #include <fstream> 22 #include <numeric> 23 #include <iomanip> 24 #include <bitset> 25 #include <list> 26 #include <stdexcept> 27 #include <functional> 28 #include <utility> 29 #include <ctime> 30 using namespace std; 31 32 #define PB push_back 33 #define MP make_pair 34 35 #define REP(i,n) for(i=0;i<(n);++i) 36 #define FOR(i,l,h) for(i=(l);i<=(h);++i) 37 #define FORD(i,h,l) for(i=(h);i>=(l);--i) 38 39 typedef vector<int> VI; 40 typedef vector<string> VS; 41 typedef vector<double> VD; 42 typedef long long LL; 43 typedef pair<int,int> PII; 44 45 46 class RectangleCoveringEasy 47 { 48 public: 49 int solve(int a, int b, int c, int d) 50 { 51 if(a > b) 52 swap(a,b); 53 if(c > d) 54 swap(a,b); 55 if(c <= a && d <= b ) 56 return -1; 57 if(c > a && d > b) 58 return 1; 59 if(c > a && d == b) 60 return 1; 61 if(c == a && d > b ) 62 return 1; 63 return -1; 64 65 } 66 67 68 };
550:本来以为这个绝对值函数是一个单峰函数,就用三分去撸了,结果没撸对,精度不够。
后来才发现绝对值函数都是折线函数,所以只用取端点值就行。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 // BEGIN CUT HERE 2 /* 3 4 */ 5 // END CUT HERE 6 #line 7 "CandyMaking.cpp" 7 #include <cstdlib> 8 #include <cctype> 9 #include <cstring> 10 #include <cstdio> 11 #include <cmath> 12 #include <algorithm> 13 #include <vector> 14 #include <string> 15 #include <iostream> 16 #include <sstream> 17 #include <map> 18 #include <set> 19 #include <queue> 20 #include <stack> 21 #include <fstream> 22 #include <numeric> 23 #include <iomanip> 24 #include <bitset> 25 #include <list> 26 #include <stdexcept> 27 #include <functional> 28 #include <utility> 29 #include <ctime> 30 #include <unistd.h> 31 using namespace std; 32 33 #define PB push_back 34 #define MP make_pair 35 36 #define REP(i,n) for(i=0;i<(n);++i) 37 #define FOR(i,l,h) for(i=(l);i<=(h);++i) 38 #define FORD(i,h,l) for(i=(h);i>=(l);--i) 39 40 typedef vector<int> VI; 41 typedef vector<string> VS; 42 typedef vector<double> VD; 43 typedef long long LL; 44 typedef pair<int,int> PII; 45 46 int n; 47 class CandyMaking 48 { 49 public: 50 double solve(double x,vector<int> a, vector <int > b) 51 { 52 double sum = 0; 53 for(int i = 0 ;i < n ;i ++) 54 sum += fabs(x*a[i] - b[i]); 55 return sum; 56 } 57 double findSuitableDensity(vector <int> a, vector <int>b) 58 { 59 n = a.size(); 60 double ans = 1e9; 61 for(int i = 0 ;i < n;i ++) 62 { 63 double temp = b[i]*1.0/a[i]; 64 ans = min(solve(temp,a,b),ans); 65 } 66 return ans; 67 } 68 69 70 };