都是英语阅读题
但是本菜鸡就过了一题,直接自闭mmp明天开始起床一版题
传送门
- B.Riana and the Blind Date
0是闰年?惊了 后来才知道整除被除数可以为0
闰年的计算方法 \((x/4 - x/100 + x/400)\) 除号都下取整。
\(A=0\)特殊处理
取余的时候式子含有减法要提出来特殊处理 最好减号左右两个数+mod再取余
闰年是+229
,不是1
。。。总之就是思维各种漏洞百出
ll modd = 104206969;
ll y11 = 180758;
int main() {
ll A, B;
scanf("%lld%lld", &A, &B);
ll k;
if (A > 0)
k = (((B / 4 - (A - 1) / 4) - (B/100-(A-1)/100) )%modd + (B/400-(A-1)/400)%modd)%modd;
else
{
k = (((B / 4)- (B / 100))%modd+ (B / 400)%modd+1)%modd;
}
if (A == 0 && B == 0) {
printf("180758\n");
return 0;
}
printf("%lld\n", (((((B-A+1)%modd)*y11)%modd)+((k*229)%modd))%modd);
}
- C.Riana and Commute
深搜开头没判断vis一直WA 后来发现不是
终点是车站的时候居然是符合条件的 我一上来就把这个否了。
加了个符合条件直接退出dfs的东西,应该就能过了,不知道为什么(递归层数过大?但报的是WA,不是RE啊)
迷惑。
int n, a, b;
int beg[105],toend[105], vis[105];
int flag = 0;
void dfs(int x) {
if (vis[x] == 1) return;
vis[x] = 1;
if (x == a) {
flag = 1;
return;
}
if (beg[x] == 1) {
dfs(toend[x]);
return;
}
for (int i = x-1; i >0; i--) {
if (i == a) {
flag = 1;
return;
}
if (flag == 1) {
return;
}
if (vis[i] == 1) break;
if (beg[i] == 1) {
vis[i] = 1;
dfs(toend[i]);
break;
}
vis[i] = 1;
}
for (int i = x+1; i <= n; i++) {
if (i == a) {
flag = 1;
return;
}
if (flag == 1) {
return;
}
if (vis[i] == 1) break;
if (beg[i] == 1) {
vis[i] = 1;
dfs(toend[i]);
break;
}
vis[i] = 1;
}
}
int main() {
scanf("%d%d%d", &n, &a, &b);
for (int i = 1; i <= b; i++) {
int x, y;
scanf("%d%d", &x, &y);
beg[x] = 1;
//tend[y] = 1;
toend[x] = y;
//tobeg[y] = x;
}
/*if (beg[a] == 1) {
printf("NO"); return 0 ;
}*/
dfs(1);
if (flag == 1) {
printf("YES");
}
else {
printf("NO");
}
}
觉不睡了也要补题 这就是菜鸡的末路
D.Riana and Distribution of Pie
万万没想到啊,一句话题
雨露均沾:既然分蛋糕最大比例和最小比例差要最小 ,那就直接都一样好了。
1号取100%
2号取50%,得到50%
3号取33.3333%,一号和二号加一块是100%,要从一号和二号那里得到33.3333%,那直接都抢33.3333%就好了。
4号取25%。123号加一块100%,4号从大家那里都抢25%,则大家都是25%了。 这tm我是真没想到
以此类推。
代码不放了,短的吓人。注意利用round和乘除法来保留确定位数小数。E. Riana's Excruciating Enhancement Enigma
听说又是一句话题?
这tm什么破题???????给一段六级阅读然后输入什么原样输出就行了????nt???exm???F.Riana and Fiber Chatroom
注意228和一月份。每年都要有 fastyear
int n;
const int N = 1e5 + 5;
int y[100005],yy[100005],yy1[100005];
int main() {
scanf("%d", &n);
int miny = 200000, maxy = 0;
string s;
cin >> s;
int f1 = s.find('-');
string tmp1 = s.substr(0,f1);
//cout << tmp << endl;
int f2 = s.find('-', f1 + 1);
string tmp2 = s.substr(f1+1, f2-f1-1);
//cout << tmp << endl;
int f3 = s.find('-', f2+1);
string tmp3 = s.substr(f2+1, f3-f2-1);
//cout << tmp << endl;
int yt = atoi(tmp1.c_str());
int mt = atoi(tmp2.c_str());
int dt = atoi(tmp3.c_str());
y[yt] = 1;
if (mt == 2 && dt <= 29) {
y[yt - 1] = 1;
}
miny = min(yt, miny); maxy = max(maxy, yt);
for (int i = 1; i <= n; i++) {
cin >> s;
f1 = s.find('-');
tmp1 = s.substr(0, f1);
f2 = s.find('-', f1 + 1);
tmp2 = s.substr(f1 + 1, f2 - f1 - 1);
f3 = s.find('-', f2 + 1);
tmp3 = s.substr(f2 + 1, f3 - f2 - 1);
yt = atoi(tmp1.c_str());
mt = atoi(tmp2.c_str());
dt = atoi(tmp3.c_str());
if (mt == 2 && dt <= 28) {
yy[yt - 1] = 1;
}
if (mt == 1) {
yy[yt - 1] = 1;
}
miny = min(yt, miny); maxy = max(maxy, yt);
}
int cnt = 0;
for (int i = miny; i <= maxy-1; i++) {
if (yy[i] == 0) {
cnt++; yy1[i] = 1;
}
}
if (cnt > 100000) {
printf("-1\n");
return 0;
}
else if(cnt>0)
printf("%d\n", cnt);
else if (cnt == 0) {
printf("0\n");
return 0;
}
for (int i = miny; i <= maxy-1; i++) {
if (yy1[i] == 1) {
printf("%d-02-01\n", i + 1);
/*y[i] = 1; y[i + 1] = 1; yy[i] =1;*/
}
}
}
G. Riana and Gallant Guards
推式子 一句话题 略过F