2021/2/1 CCF Certification 2020-December Problem Solving (C++)

2021/2/1 CCF Certification 2020-December Problem Solving (C++)

2020-12-1
#include
using namespace std;
int main()
{
int n,relu=0;
cin>>n;
int w[n],s[n];
if(n>=2&&n<=10000)
{
for(int i=0;i<n;i++)
{
cin>>w[i];
cin>>s[i];
relu+=w[i]*s[i];
}
if(relu>=0)
cout<<relu<<endl;
else
cout<<“0”<<endl;
}
else
cout<<“ERROR”<<endl;
return 0;
}

2020-12-2(还不懂)
#include
#include
#include
using namespace std;

struct Record {
int y;
int res;
Record(int _y, int _res) : y(_y), res(_res) {}
bool operator < (const Record &rhs) const {
return y < rhs.y;
}
};

int main()
{
int m, y, res;
vector records;

cin >> m;
for (int i = 0; i < m; i++) {
    cin >> y >> res;
    records.push_back(Record(y, res));
}

sort(records.begin(), records.end());

vector<int> zeroCount(m, 0);    // 在此之前0的个数
vector<int> oneCount(m, 0);     // 在此之后1的个数 (包含当前)
vector<int> wrongCount(m, 0);   // 在此之前对于当前数的错误预测

for (int i = 1; i < m; i++) {
    zeroCount[i] = records[i - 1].res == 0 ? zeroCount[i - 1] + 1 : zeroCount[i - 1];
    if (records[i - 1].y == records[i].y && records[i - 1].res == 0) {
        wrongCount[i] = wrongCount[i - 1] + 1;
    }
}

oneCount[m - 1] = records[m - 1].res == 1 ? 1 : 0;
for (int i = m - 2; i >= 0; i--) {
    oneCount[i] = records[i].res == 1 ? oneCount[i + 1] + 1 : oneCount[i + 1];
}

int targetTheta = 0, targetCount = 0;
for (int i = 0; i < m; i++) {
    if (targetCount <= zeroCount[i] + oneCount[i] - wrongCount[i]) {
        targetCount = zeroCount[i] + oneCount[i] - wrongCount[i];
        targetTheta = records[i].y;
    }
}

cout << targetTheta << endl;

return 0;

}

Guess you like

Origin blog.csdn.net/qq_40395925/article/details/113521917