SRM 553 DIV2

250.

解三元一次方程组。

View Code
 1 class PlatypusDuckAndBeaver

 2 {

 3     public:

 4     int minimumAnimals(int a, int b, int c)

 5     {

 6         int k = (2*b+4*c-a)/2;

 7         int x = b - k;

 8         int y = c - k;

 9         return x + y + k;

10     }

11 };

500.

二分答案。

View Code
 1 typedef long long LL;

 2 class Suminator

 3 {

 4     public:

 5     LL work(vector<int>f,int want)

 6     {

 7         stack<LL>S;

 8         S.push(0);

 9         for(int i=0;i<f.size();i++)

10         {

11 

12             if(f[i] == 0)

13             {

14                 LL tmp = 0;

15                 for(int j =S.size(),k=0;j>0&&k<2;k++,j--){

16                     tmp += (LL)S.top();

17                     S.pop();

18                 }

19                 S.push(tmp);

20             }

21             else S.push((LL)f[i]);

22         }

23         return S.top() - (LL)want;

24     }

25     int findMissing(vector <int> f, int want)

26     {

27         int n = f.size();

28         int x=0;

29         for(int i=0;i<n;i++)

30         {

31             if(f[i] == -1)

32             {

33                 x = i;

34                 break;

35             }

36         }

37         f[x]=0;

38         if(work(f,want) == 0 )return 0;

39         int l = 1,r = 1000000000;

40         while(l<=r)

41         {

42             int m = (l + r)>>1;

43             f[x] = m;

44             LL tmp = work(f,want);

45             if(tmp == 0)return m;

46             else if(tmp > 0)r = m - 1;

47             else l = m + 1;

48         }

49         return -1;

50     }

51 };

你可能感兴趣的:(div)