Нейросетки знают решения и из них очень трудно выудить что-то, что не заложено в стандартные решения. К примеру, была задача, где надо было раобтать с элементами в изменяющемся массиве и авторское решение было с деревом Фэнвика. И нейросетка только про это решение долбила. А я хотел проконсультироваться про другое, но нейросетка долбила, мол только дерево Фенвика, хотя есть и другая реализация у дерева отрезков. Просто нейросетка знает авторское решение и ни в какую не отклоняется от него. Хотя другое решение таки было засабмитано, то есть оно есть.
Особенно мне интересно как люди решают контесты. Там вроде как 4 задачи. И есть довольно сложные. И вот топовые китайцы решают всё минут за 10-20. Вот это кажется вообще нереальным.
Вот не знаю чего не открывается. Я только сам код решения адаптировал. Там по сути 2 решения. Одно за O(max val) и с соответствующим расходом памяти для диапазонов до 500 000. Другое - с сортировкой за O(N log N). Я думал, что в решении ща O(max val) самое сложное это выделение такого объёма памяти, но C++ по идее с этим должен был справиться не хуже джавы. Я так подозреваю, что дело таки в использовании вектора, но для C++ литкод всегда и предлагает использовать векторы.
Java
class Solution {
public int maxDistinctElements(int[] nums, int k) {
if (nums.length <= (k << 1) + 1) {
return nums.length;
}
int result = 0;
int minVal = Integer.MIN_VALUE;
int max = 0;
for (int num : nums) {
max = Math.max(max, num);
}
if (max < 500_000) {
return digSortSolution(nums, k, max);
}
return sortingSolution(nums, k);
}
private int digSortSolution(int[] nums, int k, int max) {
int minVal = Integer.MIN_VALUE;
int[] freqs = new int[max + 1];
int result = 0;
for (int num : nums) {
freqs[num] ++;
}
for (int i = 0; i < freqs.length; i ++) {
int count = freqs[i];
if (count > 0) {
int currentMinVal = Math.max(minVal, i - k);
for (int j = 0; j < count && currentMinVal <= i + k; j ++, currentMinVal ++) {
result ++;
minVal = currentMinVal + 1;
}
}
}
return result;
}
private int sortingSolution(int[] nums, int k) {
int result = 0;
int minVal = Integer.MIN_VALUE;
Arrays.sort(nums);
for (int num : nums) {
int currentMinVal = Math.max(minVal, num - k);
if (currentMinVal <= num + k) {
result ++;
minVal = currentMinVal + 1;
}
}
return result;
}
}
C++
class Solution {
public:
int maxDistinctElements(vector<int>& nums, int k) {
if (nums.size() <= static_cast<size_t>((k << 1) + 1)) {
return nums.size();
}
int max_val = 0;
for (int num : nums) {
max_val = max(max_val, num);
}
if (max_val < 500000) {
return digSortSolution(nums, k, max_val);
}
return sortingSolution(nums, k);
}
private:
int digSortSolution(vector<int>& nums, int k, int max_val) {
vector<int> freqs(max_val + 1, 0);
int minVal = INT_MIN;
int result = 0;
for (int num : nums) {
freqs[num]++;
}
for (int i = 0; i < static_cast<int>(freqs.size()); i++) {
int count = freqs[i];
if (count > 0) {
int currentMinVal = max(minVal, i - k);
for (int j = 0; j < count && currentMinVal <= i + k; j++, currentMinVal++) {
result++;
minVal = currentMinVal + 1;
}
}
}
return result;
}
int sortingSolution(vector<int>& nums, int k) {
int minVal = INT_MIN;
int result = 0;
sort(nums.begin(), nums.end());
for (int num : nums) {
int currentMinVal = max(minVal, num - k);
if (currentMinVal <= num + k) {
result++;
minVal = currentMinVal + 1;
}
}
return result;
}
};
По-разному. По большей части вопросы по математике ставят в тупик и нужно что-то повторять. Но при этом задачи как будто похожи друг на друга. То есть всё вертится вокруг формулы сочетаний и способов посчитать их. Например, все сочетания до 50 50 можно считать треугольником Паскаля, но иногда есть приколы, что нужна малая теорема Ферма, когда нужно посчитать сочетания для очень больших значений по модулю. Но недавно в дэйли задачах была задача, где модуль - составное число и тут даже малая теорема Ферма не поможет) Не люблю математику в общем)
И у винды такая интересная совместимость) В мае 2004 вышла игра "Как достать соседа 2", в августе того же года вышла Windows XP SP 2, начиная с которой игра уже не работает) Ох уж эта долгосрочная поддержка своих собственных решений) В SP2 там совместимость обратную конкретно порезали. В том числе и вырезали PAE, чтобы люди оперативкой не баловались)
В линуксе с такой проблемой не сталкивался. Зато с виндой такое бывало. И с виндой нельзя собрать старые драйвера. Нужно ставить старую винду на виртуалку.
А потом компания разворачивает все на своём железе и думает, что в безопасности, а тулы для использования локальных ЛЛМ шпионят даже с выставленными галочками "не шпионить")) https://github.com/continuedev/continue/issues/2082
А так даже в статье написано, что допускается загрязнение образцов. И как будто здесь больше дело не в самой статье, а как она преподносится общественности.
Недавно у Панчина было видео о том, что отличить холестерин от пластика сейчас пока трудно потому что пластик ни с чем не втсупает в реакцию. Поэтому есть исследования о том, якобы в голове у людей пластика на то, чтобы ложку сделать хватит. А по факту это просто ошибки в измерениях и естественный холестерин выдают за пластик. Поэтому такие статьи пока вызывают подозрения.
Зачем вообще энергию возвращать не Землю, если они могут LLM на орбите запускать и на Землю передавать ответы на запросы пользователей. Пусть с задержками, но точно лучше, чем то, что они кучу новых АЭС хотят под вычисления пустить.
По поводу скрытых команд в статье верно написано. Браузеры десятилетиями оттачивали на противодействие угрозам. Там прошла эволюция ActiveX, аплетов, флэша и сейчас мы имеем относительно безопасный инструмент. А как поведёт себя ИИ с конфиденциальными данными - неясно.
Что-то опенсорс, что-то нет. Но если есть загрузчик и он защищен паролем, то тут никакой опенсорс не поможет. То есть протоколы могут быть открытыми, исходный код открыт, но всё защищено от модификации криптографией, чтобы никто не посмел украсть телефон на улице из кармана. А чтобы микросхему перезаписать, её нужно снять. Сомневаюсь, что в телефонах можно что-то сделать через какой-нибудь uart.
Вроде как canonical делали что-то подобное. Но там опять же есть куча устройств с разными экранами, с разным железом. А самое главное - заблокированный загрузчик. На компе биос позволяет что угодно установить, на телефона - нужны пляски с бубном.
Ну так все заморачиваться не будут. Яблочников полно и им как-то по барабану на всё это. А гугл тем временем будут давить на разработчиков, чтобы они новые версии ОС поддерживали. И опять же чтобы не ставили ломаный андроид начнут от производителей активнее требовать, чтобы загрузчик никак нельзя было разблокировать. Вот и всё. Никто никуда не денется. Чтобы самомтоятельно взломать телефон тогда уже понадобится снимать чип памяти, который в телефоне совсем крохотный и распаивается с BGA, т. е. большой риск угробить аппарат. Ну или пользоваться аппаратами других производителей, но у них железо явно не так совершенно как у флагманов. У того же самсунга вон камера с оптическим зумом x5. Много кто ещё такое может выпустить? Батареи тоже у именитых производителей качественные. Поэтому в итоге все могут стать перед выбором: нормальное железо или свобода от гугла.
Вопрос ещё насколько честно все оценивают внедрён ли в проект Agile. Ибо Agile это про гибкую разработку, а не про гибкое внесение изменений в требований вплоть до последнего дня спринта. Многие понимают Agile именно так, но сама методология этого не предусматривает.
Три из четырех принципов, перечисленных в Agile-манифесте, – это «Работающий продукт важнее исчерпывающей документации», «Сотрудничество с заказчиком важнее согласования условий контракта» и «Готовность к изменениям важнее следования первоначальному плану». Однако новое исследование показало, что проекты, в которых перед началом разработки были определены спецификации или задокументированы требования, имели на 50 % больше шансов на успех, чем проекты, в которых этого не было, проекты, в которых перед началом разработки были четко определены требования, имели на 97 % больше шансов на успех, а проекты, в которых не требовалось вносить существенные изменения в требования на поздних этапах разработки, имели на 7 % больше шансов на успех.
Здесь про приоритеты, но это не значит, что в Agile нет требований или что ими можно вертеть как хочешь. Их можно менять, изменять приоритеты в разработке продукта, но делать это нужно разумно.
Просто сначала проекты не следуют методологии, а потом удивляются почему всё плохо.
Нейросетки знают решения и из них очень трудно выудить что-то, что не заложено в стандартные решения. К примеру, была задача, где надо было раобтать с элементами в изменяющемся массиве и авторское решение было с деревом Фэнвика. И нейросетка только про это решение долбила. А я хотел проконсультироваться про другое, но нейросетка долбила, мол только дерево Фенвика, хотя есть и другая реализация у дерева отрезков. Просто нейросетка знает авторское решение и ни в какую не отклоняется от него. Хотя другое решение таки было засабмитано, то есть оно есть.
Записную книжку с Big O заказали?)
Особенно мне интересно как люди решают контесты. Там вроде как 4 задачи. И есть довольно сложные. И вот топовые китайцы решают всё минут за 10-20. Вот это кажется вообще нереальным.
Там сложность непонятно как оценивается. Есть задачи на easy, которые не самые простые. А есть задачи hard, которые в одну строчку-формулу решаются.
Вот не знаю чего не открывается. Я только сам код решения адаптировал. Там по сути 2 решения. Одно за O(max val) и с соответствующим расходом памяти для диапазонов до 500 000. Другое - с сортировкой за O(N log N). Я думал, что в решении ща O(max val) самое сложное это выделение такого объёма памяти, но C++ по идее с этим должен был справиться не хуже джавы. Я так подозреваю, что дело таки в использовании вектора, но для C++ литкод всегда и предлагает использовать векторы.
Java
C++
По-разному. По большей части вопросы по математике ставят в тупик и нужно что-то повторять. Но при этом задачи как будто похожи друг на друга. То есть всё вертится вокруг формулы сочетаний и способов посчитать их. Например, все сочетания до 50 50 можно считать треугольником Паскаля, но иногда есть приколы, что нужна малая теорема Ферма, когда нужно посчитать сочетания для очень больших значений по модулю. Но недавно в дэйли задачах была задача, где модуль - составное число и тут даже малая теорема Ферма не поможет) Не люблю математику в общем)
О да, тоже решаю литкодж и пытаюсь как-то эксперементировать. Решение просто манипулировать массивом в джаве это 6 мс, но вместо массива взять стримы иииии 26 мс. В 4 раза дольше. Но самый прикол. Решение на джаве - 5 мс: https://leetcode.com/problems/maximum-number-of-distinct-elements-after-operations/submissions/1805361112/ Решение абсолютно такое же, но с векторами на С++ - 95 мс: https://leetcode.com/problems/maximum-number-of-distinct-elements-after-operations/submissions/1805360930/
И у винды такая интересная совместимость) В мае 2004 вышла игра "Как достать соседа 2", в августе того же года вышла Windows XP SP 2, начиная с которой игра уже не работает) Ох уж эта долгосрочная поддержка своих собственных решений) В SP2 там совместимость обратную конкретно порезали. В том числе и вырезали PAE, чтобы люди оперативкой не баловались)
В линуксе с такой проблемой не сталкивался. Зато с виндой такое бывало. И с виндой нельзя собрать старые драйвера. Нужно ставить старую винду на виртуалку.
А потом компания разворачивает все на своём железе и думает, что в безопасности, а тулы для использования локальных ЛЛМ шпионят даже с выставленными галочками "не шпионить")) https://github.com/continuedev/continue/issues/2082
Раньше просили взрослых покупать сигареты, а теперь будут их просить давать менять настройки в инстаграме?
Нужно больше мнений экспертов)
А так даже в статье написано, что допускается загрязнение образцов. И как будто здесь больше дело не в самой статье, а как она преподносится общественности.
Недавно у Панчина было видео о том, что отличить холестерин от пластика сейчас пока трудно потому что пластик ни с чем не втсупает в реакцию. Поэтому есть исследования о том, якобы в голове у людей пластика на то, чтобы ложку сделать хватит. А по факту это просто ошибки в измерениях и естественный холестерин выдают за пластик. Поэтому такие статьи пока вызывают подозрения.
Зачем вообще энергию возвращать не Землю, если они могут LLM на орбите запускать и на Землю передавать ответы на запросы пользователей. Пусть с задержками, но точно лучше, чем то, что они кучу новых АЭС хотят под вычисления пустить.
По поводу скрытых команд в статье верно написано. Браузеры десятилетиями оттачивали на противодействие угрозам. Там прошла эволюция ActiveX, аплетов, флэша и сейчас мы имеем относительно безопасный инструмент. А как поведёт себя ИИ с конфиденциальными данными - неясно.
Что-то опенсорс, что-то нет. Но если есть загрузчик и он защищен паролем, то тут никакой опенсорс не поможет. То есть протоколы могут быть открытыми, исходный код открыт, но всё защищено от модификации криптографией, чтобы никто не посмел украсть телефон на улице из кармана. А чтобы микросхему перезаписать, её нужно снять. Сомневаюсь, что в телефонах можно что-то сделать через какой-нибудь uart.
Вроде как canonical делали что-то подобное. Но там опять же есть куча устройств с разными экранами, с разным железом. А самое главное - заблокированный загрузчик. На компе биос позволяет что угодно установить, на телефона - нужны пляски с бубном.
Ну так все заморачиваться не будут. Яблочников полно и им как-то по барабану на всё это. А гугл тем временем будут давить на разработчиков, чтобы они новые версии ОС поддерживали. И опять же чтобы не ставили ломаный андроид начнут от производителей активнее требовать, чтобы загрузчик никак нельзя было разблокировать. Вот и всё. Никто никуда не денется. Чтобы самомтоятельно взломать телефон тогда уже понадобится снимать чип памяти, который в телефоне совсем крохотный и распаивается с BGA, т. е. большой риск угробить аппарат. Ну или пользоваться аппаратами других производителей, но у них железо явно не так совершенно как у флагманов. У того же самсунга вон камера с оптическим зумом x5. Много кто ещё такое может выпустить? Батареи тоже у именитых производителей качественные. Поэтому в итоге все могут стать перед выбором: нормальное железо или свобода от гугла.
Вопрос ещё насколько честно все оценивают внедрён ли в проект Agile. Ибо Agile это про гибкую разработку, а не про гибкое внесение изменений в требований вплоть до последнего дня спринта. Многие понимают Agile именно так, но сама методология этого не предусматривает.
Здесь про приоритеты, но это не значит, что в Agile нет требований или что ими можно вертеть как хочешь. Их можно менять, изменять приоритеты в разработке продукта, но делать это нужно разумно.
Просто сначала проекты не следуют методологии, а потом удивляются почему всё плохо.