2024-08-13 18:36:56 星期二
上午
上午学了穷举,教了如何优化循环;
如:
- 剪枝搜索
- 预处理
- 忘了
- 忘了
- 还是忘了
- ··························································································
这是PPT网址:arrow_down:
"穷举PPT"[http:/file/5995/%E7%A9%B7%E4%B8%BE.ppt ]
中午
- 中午打的题,没什么写的
我忘记中午打什么题了:innocent: 并不是没什么写的- 这有个十分有意思的题目:arrow_down:
- arrow_down:
http:/file/5995/%E8%B0%A2%E4%B8%BD%E5%B0%94%E7%9A%84%E7%94%9F%E6%97%A5%E6%98%AF%E5%93%AA%E5%A4%A9.doc
附:中午菜挺好吃还有饮料
下午
下午继续在打题
这是题解(需要自取):arrow_down:
1.
//tug.cpp
#include
using namespace std;
const int maxn=100;
const int maxn2=maxn / 2;
const int maxrange=450;
bool c[maxn2+1][maxn2*maxrange+1];
int a[maxn+1];
int main(){
freopen("tug.in","r",stdin);
freopen("tug.out","w",stdout);
int n,n2,sum;
scanf("%d",&n);
n2=(n+1)/2;
sum=0;
for(int i=1;i=0;--j){
if (c[i][j]) c[i+1][j+delta]=1;
}
}
}
int mm=sum;
int mi=0;
for(int j=0;j<=maxrange*n2;++j){
if (c[n2][j]&&abs(sum-j*2)<mm){
mm=sum-j*2;
if (j<=sum/2) mi=j;
else mi=sum-j;
}
}
printf("%d %d\n",mi,sum-mi);
return 0;
}
-
“`cpp
//stat.cpp
#include
using namespace std;
string a;
int main() {
freopen("stat.in","r",stdin);
freopen("stat.out","w",stdout);
string s;
getline(cin,s);
getline(cin,a);
for (int i=0;i<s>='a'&& s[i]<='z') s[i]+='A'-'a';
for (int i=0;i<a>='a'&&a[i]<='z') a[i]+='A'-'a';
s=" "+s+" ";
a=" "+a+" ";
int ans=0;
int ans1=a.find(s);
if (ans1==-1) {
cout<<-1<<endl;
return 0;
}
for (int i=0;i<a.length();i=a.find(s,i+1))
ans++;
cout<<ans-1+(a.find(s)==0)<<" "<<ans1<<endl;
return 0;
}
</li>
</ol><pre><code class="line-numbers">1. ```cpp
//paixu.cpp
#include<bits/stdc++.h>
char t;
//bool f;
inline void read(int &__temp) {
while ((t<'0'|| t>'9') && t!='-') t=getchar();
__temp=0;
int _f=t=='-'?-1:1;
if (t=='-') t=getchar();
while (t>='0' && t<='9') {
__temp=__temp*10+t-'0';
t=getchar();
}
__temp*=_f;
}
const int maxn=10010;
int a[maxn],la;
int main() {
freopen("paixu.in","r",stdin);
freopen("paixu.out","w",stdout);
//for (int T=0;T<=9;T++) {
while ((t=getchar())!=EOF) {
int sum=0;
for (;;) {
int __temp;
read(__temp);
sum+=__temp;
if (t=='\n') break;
}
a[la++]=sum;
}
std::sort(a,a+la);
for (int i=0;i<la;i++)
printf("%d\n",a[i]);
// fclose(stdout);
// fclose(stdin);
//}
return 0;
}
</code></pre><ol>
<li>
“`cpp
//等式
#include
#define int long long
using namespace std;
long long a,s,n,k,tmp;
long long fun(long long x) {
long long rt=round(pow(x,0.5));
if(rt*rt==x) return rt;
return -1;
}
signed main() {
// freopen("snarf.in","r",stdin);
// freopen("snarf.out","w",stdout);
cin>>a;
k=a;
while(1) {
s=(k*(k-1ll))/2ll;
tmp=fun(4*k*k+4*k+8*s+1);
if(tmp==-1) {
k++;
continue;
}
if((tmp-1)%2==1) {
k++;
continue;
}
n=(tmp-1)/2;
cout<<k<<" "<<n;
return 0;
}
return 0;
}
</li>
</ol><pre><code class="line-numbers">1.
“`cpp
//cowmult.cpp
#include
#include
#include
using namespace std;
int main(){
freopen("cowmult.in","r",stdin);
freopen("cowmult.out","w",stdout);
char a[20],b[20];
int i,j,ans = 0;
cin >> a >> b;
for(i = 0; i < strlen(a); i++)
for(j = 0; j < strlen(b); j++)
ans = ans + (a[i] – '0') * (b[j] – '0');
cout << ans << endl;
return 0;
}
</code></pre><ol>
<li>
“`cpp
//date.cpp
#include<bits/stdc++.h>
using namespace std;
string s[10005];
bool f[10005];
int main(){
freopen("date.in","r",stdin);
freopen("date.out","w",stdout);
for(int i=0;i<10000;i++){
int t=i;
char a,b,c,d;
s[i]="";
d=(t%10)+'0';
t/=10;
c=(t%10)+'0';
t/=10;
b=(t%10)+'0';
t/=10;
a=(t%10)+'0';
s[i]+=a;
s[i]+=b;
s[i]+=c;
s[i]+=d;
s[i]+=d;
s[i]+=c;
s[i]+=b;
s[i]+=a;
int q,w,e,r;
q=d-'0';
w=c-'0';
e=b-'0';
r=a-'0';
if(q*10+w>12||q*10+w==0) continue;
q=q*10+w;
e=e*10+r;
if(e==0) continue;
if((q==1||q==3||q==5||q==7||q==8||q==10||q==12)&&e>31) continue;
if((q==4||q==6||q==9||q==11)&&e>30) continue;
if(q==2&&e>28) continue;
f[i]=1;
}
f[9220]=1;
string in1="",in2="";
int x,y;
scanf("%d%d",&x,&y);
for(int i=1;i<=8;i++){
char c;
c='0'+(x%10);
x=x/10;
in1=c+in1;
}
for(int i=1;i<=8;i++){
char c;
c='0'+(y%10);
y=y/10;
in2=c+in2;
}
int ans=0;
for(int i=0;i<10000;i++)if(s[i]>=in1&&s[i]<=in2&&f[i])ans++;
printf("%d\n",ans);
return 0;
}
</li>
</ol><pre><code class="line-numbers">1. “`cpp
//expr.cpp
#include
#include
#include
#include
using namespace std;
char s[20000000];
#define mo 10000
int main() {
freopen(“expr.in”,”r”,stdin);
freopen(“expr.out”,”w”,stdout);
scanf(“%s”,s);
int ans = 0, tmp = 0;
int m= strlen(s);
int n=0;
for(int i=0; i<m; i++) if(s[i]==’*’ || s[i]==’+’) n++;
int i=0;
while(s[i]=’0′) tmp=(tmp*10+s[i]-48)%mo,i++;
for(int j=1; j<=n; j++) {
char op=s[i++];
int val=0;
while(i< m && s[i]=’0′) val=(val*10+s[i]-48)%mo,i++;
if(op==’*’) tmp = tmp * val % mo;
else ans = (ans + tmp) % mo, tmp = val;
}
ans = (ans + tmp) % mo;
printf(“%d\n”,ans);
return 0;
}-
-
“`cpp
//mine1.cpp
#include<iostream>
#include<cstdio>
using namespace std;
int dx[8] = {-1,-1,0,1,1, 1, 0,-1};
int dy[8] = { 0, 1,1,1,0,-1,-1,-1};
int main() {
freopen("mine.in","r",stdin);
freopen("mine.out","w",stdout);
char mine[101][101];
int sum[101][101] = {0};
int n,m,i,j,ni,nj,k,ans = 0;
scanf("%d %d\n",&n,&m);
for(i = 0; i < n; i++) {
for(j = 0; j < m; j++) mine[i][j] = getchar();
getchar();
}
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
if(mine[i][j] == '?')
for(k = 0; k < 8; k++) {
ni = i + dx[k];
nj = j + dy[k];
if(ni >= 0 && ni < n && nj >= 0 && nj < m && mine[ni][nj] == '*' ) sum[i][j]++;
}
for(i = 0; i < n; i++) {
for(j = 0; j < m; j++)
if(mine[i][j] == '*') putchar('*');
else putchar(sum[i][j]+48);
putchar('\n');
}
return 0;
}
</li>
</ul></li>
</ol><pre><code class="line-numbers">- “`cpp
//mine2.cpp
#include
using namespace std;
const int maxn=110;
char a[maxn][maxn];
int dx[8]= {0,0,1,1,1,-1,-1,-1};
int dy[8]= {1,-1,1,-1,0,1,-1,0};
int main() {
freopen(“mine.in”,”r”,stdin);
freopen(“mine.out”,”w”,stdout);
int n,m;
scanf(“%d %d”,&n,&m);
for (int i=1; i<=n; i++)
scanf(“%s”,a[i]+1);
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
if (a[i][j]==’?’) {
int cnt=0;
for (int k=0; k<8; k++)
cnt+=a[i+dx[k]][j+dy[k]]==’*’;
a[i][j]=cnt+’0′;
}
for (int i=1; i<=n; i++)
printf(“%s\n”,a[i]+1);
return 0;
}
注:以上代码并非全是作者所作,请勿恶意搬运,侵权必删
(目前最长BLOG)
2024-08-13 19:48:03 星期二
-
“`cpp
-